// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/unittest_well_known_types.proto

#include <google/protobuf/unittest_well_known_types.pb.h>

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// This is a temporary google only hack
#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
#include "third_party/protobuf/version.h"
#endif
// @@protoc_insertion_point(includes)

namespace protobuf_google_2fprotobuf_2fany_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fany_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Any;
}  // namespace protobuf_google_2fprotobuf_2fany_2eproto
namespace protobuf_google_2fprotobuf_2fapi_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fapi_2eproto ::google::protobuf::internal::SCCInfo<4> scc_info_Api;
}  // namespace protobuf_google_2fprotobuf_2fapi_2eproto
namespace protobuf_google_2fprotobuf_2fduration_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fduration_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Duration;
}  // namespace protobuf_google_2fprotobuf_2fduration_2eproto
namespace protobuf_google_2fprotobuf_2fempty_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fempty_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Empty;
}  // namespace protobuf_google_2fprotobuf_2fempty_2eproto
namespace protobuf_google_2fprotobuf_2ffield_5fmask_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2ffield_5fmask_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_FieldMask;
}  // namespace protobuf_google_2fprotobuf_2ffield_5fmask_2eproto
namespace protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_SourceContext;
}  // namespace protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto
namespace protobuf_google_2fprotobuf_2fstruct_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fstruct_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ListValue;
}  // namespace protobuf_google_2fprotobuf_2fstruct_2eproto
namespace protobuf_google_2fprotobuf_2ftimestamp_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp;
}  // namespace protobuf_google_2fprotobuf_2ftimestamp_2eproto
namespace protobuf_google_2fprotobuf_2ftype_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2ftype_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_Type;
}  // namespace protobuf_google_2fprotobuf_2ftype_2eproto
namespace protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_AnyFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_ApiFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_BoolFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_BytesFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_DoubleFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_DurationFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_EmptyFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_FloatFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Int32FieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Int64FieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_StringFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_StructFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_TimestampFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_TypeFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Uint32FieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Uint64FieldEntry_DoNotUse;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto
namespace protobuf_google_2fprotobuf_2fwrappers_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_BoolValue;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_BytesValue;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_DoubleValue;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_FloatValue;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Int32Value;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Int64Value;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_StringValue;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UInt32Value;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fwrappers_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UInt64Value;
}  // namespace protobuf_google_2fprotobuf_2fwrappers_2eproto
namespace protobuf_unittest {
class TestWellKnownTypesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestWellKnownTypes>
      _instance;
} _TestWellKnownTypes_default_instance_;
class RepeatedWellKnownTypesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<RepeatedWellKnownTypes>
      _instance;
} _RepeatedWellKnownTypes_default_instance_;
class OneofWellKnownTypesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<OneofWellKnownTypes>
      _instance;
  const ::google::protobuf::Any* any_field_;
  const ::google::protobuf::Api* api_field_;
  const ::google::protobuf::Duration* duration_field_;
  const ::google::protobuf::Empty* empty_field_;
  const ::google::protobuf::FieldMask* field_mask_field_;
  const ::google::protobuf::SourceContext* source_context_field_;
  const ::google::protobuf::Struct* struct_field_;
  const ::google::protobuf::Timestamp* timestamp_field_;
  const ::google::protobuf::Type* type_field_;
  const ::google::protobuf::DoubleValue* double_field_;
  const ::google::protobuf::FloatValue* float_field_;
  const ::google::protobuf::Int64Value* int64_field_;
  const ::google::protobuf::UInt64Value* uint64_field_;
  const ::google::protobuf::Int32Value* int32_field_;
  const ::google::protobuf::UInt32Value* uint32_field_;
  const ::google::protobuf::BoolValue* bool_field_;
  const ::google::protobuf::StringValue* string_field_;
  const ::google::protobuf::BytesValue* bytes_field_;
} _OneofWellKnownTypes_default_instance_;
class MapWellKnownTypes_AnyFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_AnyFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_AnyFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_ApiFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_ApiFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_ApiFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_DurationFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_DurationFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_DurationFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_EmptyFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_EmptyFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_EmptyFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_FieldMaskFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_SourceContextFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_SourceContextFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_StructFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_StructFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_StructFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_TimestampFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_TimestampFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_TimestampFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_TypeFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_TypeFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_TypeFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_DoubleFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_DoubleFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_DoubleFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_FloatFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_FloatFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_FloatFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_Int64FieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_Int64FieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_Int64FieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_Uint64FieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_Uint64FieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_Uint64FieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_Int32FieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_Int32FieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_Int32FieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_Uint32FieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_Uint32FieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_Uint32FieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_BoolFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_BoolFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_BoolFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_StringFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_StringFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_StringFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypes_BytesFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes_BytesFieldEntry_DoNotUse>
      _instance;
} _MapWellKnownTypes_BytesFieldEntry_DoNotUse_default_instance_;
class MapWellKnownTypesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapWellKnownTypes>
      _instance;
} _MapWellKnownTypes_default_instance_;
}  // namespace protobuf_unittest
namespace protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto {
static void InitDefaultsTestWellKnownTypes() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestWellKnownTypes_default_instance_;
    new (ptr) ::protobuf_unittest::TestWellKnownTypes();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::TestWellKnownTypes::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<18> scc_info_TestWellKnownTypes =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsTestWellKnownTypes}, {
      &protobuf_google_2fprotobuf_2fany_2eproto::scc_info_Any.base,
      &protobuf_google_2fprotobuf_2fapi_2eproto::scc_info_Api.base,
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,
      &protobuf_google_2fprotobuf_2fempty_2eproto::scc_info_Empty.base,
      &protobuf_google_2fprotobuf_2ffield_5fmask_2eproto::scc_info_FieldMask.base,
      &protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto::scc_info_SourceContext.base,
      &protobuf_google_2fprotobuf_2fstruct_2eproto::scc_info_ListValue.base,
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,
      &protobuf_google_2fprotobuf_2ftype_2eproto::scc_info_Type.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_DoubleValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_FloatValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BoolValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_StringValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BytesValue.base,}};

static void InitDefaultsRepeatedWellKnownTypes() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_RepeatedWellKnownTypes_default_instance_;
    new (ptr) ::protobuf_unittest::RepeatedWellKnownTypes();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::RepeatedWellKnownTypes::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<18> scc_info_RepeatedWellKnownTypes =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsRepeatedWellKnownTypes}, {
      &protobuf_google_2fprotobuf_2fany_2eproto::scc_info_Any.base,
      &protobuf_google_2fprotobuf_2fapi_2eproto::scc_info_Api.base,
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,
      &protobuf_google_2fprotobuf_2fempty_2eproto::scc_info_Empty.base,
      &protobuf_google_2fprotobuf_2ffield_5fmask_2eproto::scc_info_FieldMask.base,
      &protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto::scc_info_SourceContext.base,
      &protobuf_google_2fprotobuf_2fstruct_2eproto::scc_info_ListValue.base,
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,
      &protobuf_google_2fprotobuf_2ftype_2eproto::scc_info_Type.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_DoubleValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_FloatValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BoolValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_StringValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BytesValue.base,}};

static void InitDefaultsOneofWellKnownTypes() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_OneofWellKnownTypes_default_instance_;
    new (ptr) ::protobuf_unittest::OneofWellKnownTypes();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::OneofWellKnownTypes::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<18> scc_info_OneofWellKnownTypes =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsOneofWellKnownTypes}, {
      &protobuf_google_2fprotobuf_2fany_2eproto::scc_info_Any.base,
      &protobuf_google_2fprotobuf_2fapi_2eproto::scc_info_Api.base,
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,
      &protobuf_google_2fprotobuf_2fempty_2eproto::scc_info_Empty.base,
      &protobuf_google_2fprotobuf_2ffield_5fmask_2eproto::scc_info_FieldMask.base,
      &protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto::scc_info_SourceContext.base,
      &protobuf_google_2fprotobuf_2fstruct_2eproto::scc_info_ListValue.base,
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,
      &protobuf_google_2fprotobuf_2ftype_2eproto::scc_info_Type.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_DoubleValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_FloatValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt64Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt32Value.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BoolValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_StringValue.base,
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BytesValue.base,}};

static void InitDefaultsMapWellKnownTypes_AnyFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_AnyFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_AnyFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_AnyFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fany_2eproto::scc_info_Any.base,}};

static void InitDefaultsMapWellKnownTypes_ApiFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_ApiFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_ApiFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_ApiFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fapi_2eproto::scc_info_Api.base,}};

static void InitDefaultsMapWellKnownTypes_DurationFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_DurationFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_DurationFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_DurationFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,}};

static void InitDefaultsMapWellKnownTypes_EmptyFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_EmptyFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_EmptyFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_EmptyFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fempty_2eproto::scc_info_Empty.base,}};

static void InitDefaultsMapWellKnownTypes_FieldMaskFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_FieldMaskFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2ffield_5fmask_2eproto::scc_info_FieldMask.base,}};

static void InitDefaultsMapWellKnownTypes_SourceContextFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_SourceContextFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto::scc_info_SourceContext.base,}};

static void InitDefaultsMapWellKnownTypes_StructFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_StructFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_StructFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_StructFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fstruct_2eproto::scc_info_ListValue.base,}};

static void InitDefaultsMapWellKnownTypes_TimestampFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_TimestampFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_TimestampFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_TimestampFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,}};

static void InitDefaultsMapWellKnownTypes_TypeFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_TypeFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_TypeFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_TypeFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2ftype_2eproto::scc_info_Type.base,}};

static void InitDefaultsMapWellKnownTypes_DoubleFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_DoubleFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_DoubleFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_DoubleFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_DoubleValue.base,}};

static void InitDefaultsMapWellKnownTypes_FloatFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_FloatFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_FloatFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_FloatFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_FloatValue.base,}};

static void InitDefaultsMapWellKnownTypes_Int64FieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_Int64FieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Int64FieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_Int64FieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int64Value.base,}};

static void InitDefaultsMapWellKnownTypes_Uint64FieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_Uint64FieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Uint64FieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_Uint64FieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt64Value.base,}};

static void InitDefaultsMapWellKnownTypes_Int32FieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_Int32FieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Int32FieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_Int32FieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_Int32Value.base,}};

static void InitDefaultsMapWellKnownTypes_Uint32FieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_Uint32FieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_Uint32FieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_Uint32FieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_UInt32Value.base,}};

static void InitDefaultsMapWellKnownTypes_BoolFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_BoolFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_BoolFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_BoolFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BoolValue.base,}};

static void InitDefaultsMapWellKnownTypes_StringFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_StringFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_StringFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_StringFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_StringValue.base,}};

static void InitDefaultsMapWellKnownTypes_BytesFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_BytesFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapWellKnownTypes_BytesFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapWellKnownTypes_BytesFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fwrappers_2eproto::scc_info_BytesValue.base,}};

static void InitDefaultsMapWellKnownTypes() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MapWellKnownTypes_default_instance_;
    new (ptr) ::protobuf_unittest::MapWellKnownTypes();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::MapWellKnownTypes::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<18> scc_info_MapWellKnownTypes =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsMapWellKnownTypes}, {
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_AnyFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_ApiFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_DurationFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_EmptyFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_StructFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_TimestampFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_TypeFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_DoubleFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_FloatFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_Int64FieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_Uint64FieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_Int32FieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_Uint32FieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_BoolFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_StringFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes_BytesFieldEntry_DoNotUse.base,}};

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TestWellKnownTypes.base);
  ::google::protobuf::internal::InitSCC(&scc_info_RepeatedWellKnownTypes.base);
  ::google::protobuf::internal::InitSCC(&scc_info_OneofWellKnownTypes.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_AnyFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_ApiFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_DurationFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_EmptyFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_StructFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_TimestampFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_TypeFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_DoubleFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_FloatFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_Int64FieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_Uint64FieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_Int32FieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_Uint32FieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_BoolFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_StringFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes_BytesFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapWellKnownTypes.base);
}

::google::protobuf::Metadata file_level_metadata[22];

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, any_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, api_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, duration_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, empty_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, field_mask_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, source_context_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, struct_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, timestamp_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, type_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, double_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, float_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, int64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, uint64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, int32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, uint32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, bool_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, string_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, bytes_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestWellKnownTypes, value_field_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, any_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, api_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, duration_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, empty_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, field_mask_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, source_context_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, struct_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, timestamp_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, type_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, double_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, float_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, int64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, uint64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, int32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, uint32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, bool_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, string_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::RepeatedWellKnownTypes, bytes_field_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::OneofWellKnownTypes, _internal_metadata_),
  ~0u,  // no _extensions_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::OneofWellKnownTypes, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, any_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, api_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, duration_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, empty_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, field_mask_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, source_context_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, struct_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, timestamp_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, type_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, double_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, float_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, int64_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, uint64_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, int32_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, uint32_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, bool_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, string_field_),
  offsetof(::protobuf_unittest::OneofWellKnownTypesDefaultTypeInternal, bytes_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::OneofWellKnownTypes, oneof_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, any_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, api_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, duration_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, empty_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, field_mask_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, source_context_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, struct_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, timestamp_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, type_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, double_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, float_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, int64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, uint64_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, int32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, uint32_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, bool_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, string_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MapWellKnownTypes, bytes_field_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::protobuf_unittest::TestWellKnownTypes)},
  { 24, -1, sizeof(::protobuf_unittest::RepeatedWellKnownTypes)},
  { 47, -1, sizeof(::protobuf_unittest::OneofWellKnownTypes)},
  { 71, 78, sizeof(::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse)},
  { 80, 87, sizeof(::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse)},
  { 89, 96, sizeof(::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse)},
  { 98, 105, sizeof(::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse)},
  { 107, 114, sizeof(::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse)},
  { 116, 123, sizeof(::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse)},
  { 125, 132, sizeof(::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse)},
  { 134, 141, sizeof(::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse)},
  { 143, 150, sizeof(::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse)},
  { 152, 159, sizeof(::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse)},
  { 161, 168, sizeof(::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse)},
  { 170, 177, sizeof(::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse)},
  { 179, 186, sizeof(::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse)},
  { 188, 195, sizeof(::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse)},
  { 197, 204, sizeof(::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse)},
  { 206, 213, sizeof(::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse)},
  { 215, 222, sizeof(::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse)},
  { 224, 231, sizeof(::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse)},
  { 233, -1, sizeof(::protobuf_unittest::MapWellKnownTypes)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestWellKnownTypes_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_RepeatedWellKnownTypes_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_OneofWellKnownTypes_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_AnyFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_ApiFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_DurationFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_EmptyFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_SourceContextFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_StructFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_TimestampFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_TypeFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_DoubleFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_FloatFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_Int64FieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_Uint64FieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_Int32FieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_Uint32FieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_BoolFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_StringFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_BytesFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MapWellKnownTypes_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  AssignDescriptors(
      "google/protobuf/unittest_well_known_types.proto", schemas, file_default_instances, TableStruct::offsets,
      file_level_metadata, NULL, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 22);
}

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n/google/protobuf/unittest_well_known_ty"
      "pes.proto\022\021protobuf_unittest\032\031google/pro"
      "tobuf/any.proto\032\031google/protobuf/api.pro"
      "to\032\036google/protobuf/duration.proto\032\033goog"
      "le/protobuf/empty.proto\032 google/protobuf"
      "/field_mask.proto\032$google/protobuf/sourc"
      "e_context.proto\032\034google/protobuf/struct."
      "proto\032\037google/protobuf/timestamp.proto\032\032"
      "google/protobuf/type.proto\032\036google/proto"
      "buf/wrappers.proto\"\276\007\n\022TestWellKnownType"
      "s\022\'\n\tany_field\030\001 \001(\0132\024.google.protobuf.A"
      "ny\022\'\n\tapi_field\030\002 \001(\0132\024.google.protobuf."
      "Api\0221\n\016duration_field\030\003 \001(\0132\031.google.pro"
      "tobuf.Duration\022+\n\013empty_field\030\004 \001(\0132\026.go"
      "ogle.protobuf.Empty\0224\n\020field_mask_field\030"
      "\005 \001(\0132\032.google.protobuf.FieldMask\022<\n\024sou"
      "rce_context_field\030\006 \001(\0132\036.google.protobu"
      "f.SourceContext\022-\n\014struct_field\030\007 \001(\0132\027."
      "google.protobuf.Struct\0223\n\017timestamp_fiel"
      "d\030\010 \001(\0132\032.google.protobuf.Timestamp\022)\n\nt"
      "ype_field\030\t \001(\0132\025.google.protobuf.Type\0222"
      "\n\014double_field\030\n \001(\0132\034.google.protobuf.D"
      "oubleValue\0220\n\013float_field\030\013 \001(\0132\033.google"
      ".protobuf.FloatValue\0220\n\013int64_field\030\014 \001("
      "\0132\033.google.protobuf.Int64Value\0222\n\014uint64"
      "_field\030\r \001(\0132\034.google.protobuf.UInt64Val"
      "ue\0220\n\013int32_field\030\016 \001(\0132\033.google.protobu"
      "f.Int32Value\0222\n\014uint32_field\030\017 \001(\0132\034.goo"
      "gle.protobuf.UInt32Value\022.\n\nbool_field\030\020"
      " \001(\0132\032.google.protobuf.BoolValue\0222\n\014stri"
      "ng_field\030\021 \001(\0132\034.google.protobuf.StringV"
      "alue\0220\n\013bytes_field\030\022 \001(\0132\033.google.proto"
      "buf.BytesValue\022+\n\013value_field\030\023 \001(\0132\026.go"
      "ogle.protobuf.Value\"\225\007\n\026RepeatedWellKnow"
      "nTypes\022\'\n\tany_field\030\001 \003(\0132\024.google.proto"
      "buf.Any\022\'\n\tapi_field\030\002 \003(\0132\024.google.prot"
      "obuf.Api\0221\n\016duration_field\030\003 \003(\0132\031.googl"
      "e.protobuf.Duration\022+\n\013empty_field\030\004 \003(\013"
      "2\026.google.protobuf.Empty\0224\n\020field_mask_f"
      "ield\030\005 \003(\0132\032.google.protobuf.FieldMask\022<"
      "\n\024source_context_field\030\006 \003(\0132\036.google.pr"
      "otobuf.SourceContext\022-\n\014struct_field\030\007 \003"
      "(\0132\027.google.protobuf.Struct\0223\n\017timestamp"
      "_field\030\010 \003(\0132\032.google.protobuf.Timestamp"
      "\022)\n\ntype_field\030\t \003(\0132\025.google.protobuf.T"
      "ype\0222\n\014double_field\030\n \003(\0132\034.google.proto"
      "buf.DoubleValue\0220\n\013float_field\030\013 \003(\0132\033.g"
      "oogle.protobuf.FloatValue\0220\n\013int64_field"
      "\030\014 \003(\0132\033.google.protobuf.Int64Value\0222\n\014u"
      "int64_field\030\r \003(\0132\034.google.protobuf.UInt"
      "64Value\0220\n\013int32_field\030\016 \003(\0132\033.google.pr"
      "otobuf.Int32Value\0222\n\014uint32_field\030\017 \003(\0132"
      "\034.google.protobuf.UInt32Value\022.\n\nbool_fi"
      "eld\030\020 \003(\0132\032.google.protobuf.BoolValue\0222\n"
      "\014string_field\030\021 \003(\0132\034.google.protobuf.St"
      "ringValue\0220\n\013bytes_field\030\022 \003(\0132\033.google."
      "protobuf.BytesValue\"\305\007\n\023OneofWellKnownTy"
      "pes\022)\n\tany_field\030\001 \001(\0132\024.google.protobuf"
      ".AnyH\000\022)\n\tapi_field\030\002 \001(\0132\024.google.proto"
      "buf.ApiH\000\0223\n\016duration_field\030\003 \001(\0132\031.goog"
      "le.protobuf.DurationH\000\022-\n\013empty_field\030\004 "
      "\001(\0132\026.google.protobuf.EmptyH\000\0226\n\020field_m"
      "ask_field\030\005 \001(\0132\032.google.protobuf.FieldM"
      "askH\000\022>\n\024source_context_field\030\006 \001(\0132\036.go"
      "ogle.protobuf.SourceContextH\000\022/\n\014struct_"
      "field\030\007 \001(\0132\027.google.protobuf.StructH\000\0225"
      "\n\017timestamp_field\030\010 \001(\0132\032.google.protobu"
      "f.TimestampH\000\022+\n\ntype_field\030\t \001(\0132\025.goog"
      "le.protobuf.TypeH\000\0224\n\014double_field\030\n \001(\013"
      "2\034.google.protobuf.DoubleValueH\000\0222\n\013floa"
      "t_field\030\013 \001(\0132\033.google.protobuf.FloatVal"
      "ueH\000\0222\n\013int64_field\030\014 \001(\0132\033.google.proto"
      "buf.Int64ValueH\000\0224\n\014uint64_field\030\r \001(\0132\034"
      ".google.protobuf.UInt64ValueH\000\0222\n\013int32_"
      "field\030\016 \001(\0132\033.google.protobuf.Int32Value"
      "H\000\0224\n\014uint32_field\030\017 \001(\0132\034.google.protob"
      "uf.UInt32ValueH\000\0220\n\nbool_field\030\020 \001(\0132\032.g"
      "oogle.protobuf.BoolValueH\000\0224\n\014string_fie"
      "ld\030\021 \001(\0132\034.google.protobuf.StringValueH\000"
      "\0222\n\013bytes_field\030\022 \001(\0132\033.google.protobuf."
      "BytesValueH\000B\r\n\013oneof_field\"\226\026\n\021MapWellK"
      "nownTypes\022E\n\tany_field\030\001 \003(\01322.protobuf_"
      "unittest.MapWellKnownTypes.AnyFieldEntry"
      "\022E\n\tapi_field\030\002 \003(\01322.protobuf_unittest."
      "MapWellKnownTypes.ApiFieldEntry\022O\n\016durat"
      "ion_field\030\003 \003(\01327.protobuf_unittest.MapW"
      "ellKnownTypes.DurationFieldEntry\022I\n\013empt"
      "y_field\030\004 \003(\01324.protobuf_unittest.MapWel"
      "lKnownTypes.EmptyFieldEntry\022R\n\020field_mas"
      "k_field\030\005 \003(\01328.protobuf_unittest.MapWel"
      "lKnownTypes.FieldMaskFieldEntry\022Z\n\024sourc"
      "e_context_field\030\006 \003(\0132<.protobuf_unittes"
      "t.MapWellKnownTypes.SourceContextFieldEn"
      "try\022K\n\014struct_field\030\007 \003(\01325.protobuf_uni"
      "ttest.MapWellKnownTypes.StructFieldEntry"
      "\022Q\n\017timestamp_field\030\010 \003(\01328.protobuf_uni"
      "ttest.MapWellKnownTypes.TimestampFieldEn"
      "try\022G\n\ntype_field\030\t \003(\01323.protobuf_unitt"
      "est.MapWellKnownTypes.TypeFieldEntry\022K\n\014"
      "double_field\030\n \003(\01325.protobuf_unittest.M"
      "apWellKnownTypes.DoubleFieldEntry\022I\n\013flo"
      "at_field\030\013 \003(\01324.protobuf_unittest.MapWe"
      "llKnownTypes.FloatFieldEntry\022I\n\013int64_fi"
      "eld\030\014 \003(\01324.protobuf_unittest.MapWellKno"
      "wnTypes.Int64FieldEntry\022K\n\014uint64_field\030"
      "\r \003(\01325.protobuf_unittest.MapWellKnownTy"
      "pes.Uint64FieldEntry\022I\n\013int32_field\030\016 \003("
      "\01324.protobuf_unittest.MapWellKnownTypes."
      "Int32FieldEntry\022K\n\014uint32_field\030\017 \003(\01325."
      "protobuf_unittest.MapWellKnownTypes.Uint"
      "32FieldEntry\022G\n\nbool_field\030\020 \003(\01323.proto"
      "buf_unittest.MapWellKnownTypes.BoolField"
      "Entry\022K\n\014string_field\030\021 \003(\01325.protobuf_u"
      "nittest.MapWellKnownTypes.StringFieldEnt"
      "ry\022I\n\013bytes_field\030\022 \003(\01324.protobuf_unitt"
      "est.MapWellKnownTypes.BytesFieldEntry\032E\n"
      "\rAnyFieldEntry\022\013\n\003key\030\001 \001(\005\022#\n\005value\030\002 \001"
      "(\0132\024.google.protobuf.Any:\0028\001\032E\n\rApiField"
      "Entry\022\013\n\003key\030\001 \001(\005\022#\n\005value\030\002 \001(\0132\024.goog"
      "le.protobuf.Api:\0028\001\032O\n\022DurationFieldEntr"
      "y\022\013\n\003key\030\001 \001(\005\022(\n\005value\030\002 \001(\0132\031.google.p"
      "rotobuf.Duration:\0028\001\032I\n\017EmptyFieldEntry\022"
      "\013\n\003key\030\001 \001(\005\022%\n\005value\030\002 \001(\0132\026.google.pro"
      "tobuf.Empty:\0028\001\032Q\n\023FieldMaskFieldEntry\022\013"
      "\n\003key\030\001 \001(\005\022)\n\005value\030\002 \001(\0132\032.google.prot"
      "obuf.FieldMask:\0028\001\032Y\n\027SourceContextField"
      "Entry\022\013\n\003key\030\001 \001(\005\022-\n\005value\030\002 \001(\0132\036.goog"
      "le.protobuf.SourceContext:\0028\001\032K\n\020StructF"
      "ieldEntry\022\013\n\003key\030\001 \001(\005\022&\n\005value\030\002 \001(\0132\027."
      "google.protobuf.Struct:\0028\001\032Q\n\023TimestampF"
      "ieldEntry\022\013\n\003key\030\001 \001(\005\022)\n\005value\030\002 \001(\0132\032."
      "google.protobuf.Timestamp:\0028\001\032G\n\016TypeFie"
      "ldEntry\022\013\n\003key\030\001 \001(\005\022$\n\005value\030\002 \001(\0132\025.go"
      "ogle.protobuf.Type:\0028\001\032P\n\020DoubleFieldEnt"
      "ry\022\013\n\003key\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.google."
      "protobuf.DoubleValue:\0028\001\032N\n\017FloatFieldEn"
      "try\022\013\n\003key\030\001 \001(\005\022*\n\005value\030\002 \001(\0132\033.google"
      ".protobuf.FloatValue:\0028\001\032N\n\017Int64FieldEn"
      "try\022\013\n\003key\030\001 \001(\005\022*\n\005value\030\002 \001(\0132\033.google"
      ".protobuf.Int64Value:\0028\001\032P\n\020Uint64FieldE"
      "ntry\022\013\n\003key\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.googl"
      "e.protobuf.UInt64Value:\0028\001\032N\n\017Int32Field"
      "Entry\022\013\n\003key\030\001 \001(\005\022*\n\005value\030\002 \001(\0132\033.goog"
      "le.protobuf.Int32Value:\0028\001\032P\n\020Uint32Fiel"
      "dEntry\022\013\n\003key\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.goo"
      "gle.protobuf.UInt32Value:\0028\001\032L\n\016BoolFiel"
      "dEntry\022\013\n\003key\030\001 \001(\005\022)\n\005value\030\002 \001(\0132\032.goo"
      "gle.protobuf.BoolValue:\0028\001\032P\n\020StringFiel"
      "dEntry\022\013\n\003key\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.goo"
      "gle.protobuf.StringValue:\0028\001\032N\n\017BytesFie"
      "ldEntry\022\013\n\003key\030\001 \001(\005\022*\n\005value\030\002 \001(\0132\033.go"
      "ogle.protobuf.BytesValue:\0028\001B9\n\030com.goog"
      "le.protobuf.testP\001\252\002\032Google.Protobuf.Tes"
      "tProtosb\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 6135);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "google/protobuf/unittest_well_known_types.proto", &protobuf_RegisterTypes);
  ::protobuf_google_2fprotobuf_2fany_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fapi_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fduration_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fempty_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2ffield_5fmask_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fsource_5fcontext_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fstruct_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2ftimestamp_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2ftype_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fwrappers_2eproto::AddDescriptors();
}

void AddDescriptors() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto
namespace protobuf_unittest {

// ===================================================================

void TestWellKnownTypes::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->any_field_ = const_cast< ::google::protobuf::Any*>(
      ::google::protobuf::Any::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->api_field_ = const_cast< ::google::protobuf::Api*>(
      ::google::protobuf::Api::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->duration_field_ = const_cast< ::google::protobuf::Duration*>(
      ::google::protobuf::Duration::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->empty_field_ = const_cast< ::google::protobuf::Empty*>(
      ::google::protobuf::Empty::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->field_mask_field_ = const_cast< ::google::protobuf::FieldMask*>(
      ::google::protobuf::FieldMask::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->source_context_field_ = const_cast< ::google::protobuf::SourceContext*>(
      ::google::protobuf::SourceContext::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->struct_field_ = const_cast< ::google::protobuf::Struct*>(
      ::google::protobuf::Struct::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->timestamp_field_ = const_cast< ::google::protobuf::Timestamp*>(
      ::google::protobuf::Timestamp::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->type_field_ = const_cast< ::google::protobuf::Type*>(
      ::google::protobuf::Type::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->double_field_ = const_cast< ::google::protobuf::DoubleValue*>(
      ::google::protobuf::DoubleValue::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->float_field_ = const_cast< ::google::protobuf::FloatValue*>(
      ::google::protobuf::FloatValue::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->int64_field_ = const_cast< ::google::protobuf::Int64Value*>(
      ::google::protobuf::Int64Value::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->uint64_field_ = const_cast< ::google::protobuf::UInt64Value*>(
      ::google::protobuf::UInt64Value::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->int32_field_ = const_cast< ::google::protobuf::Int32Value*>(
      ::google::protobuf::Int32Value::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->uint32_field_ = const_cast< ::google::protobuf::UInt32Value*>(
      ::google::protobuf::UInt32Value::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->bool_field_ = const_cast< ::google::protobuf::BoolValue*>(
      ::google::protobuf::BoolValue::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->string_field_ = const_cast< ::google::protobuf::StringValue*>(
      ::google::protobuf::StringValue::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->bytes_field_ = const_cast< ::google::protobuf::BytesValue*>(
      ::google::protobuf::BytesValue::internal_default_instance());
  ::protobuf_unittest::_TestWellKnownTypes_default_instance_._instance.get_mutable()->value_field_ = const_cast< ::google::protobuf::Value*>(
      ::google::protobuf::Value::internal_default_instance());
}
void TestWellKnownTypes::clear_any_field() {
  if (GetArenaNoVirtual() == NULL && any_field_ != NULL) {
    delete any_field_;
  }
  any_field_ = NULL;
}
void TestWellKnownTypes::clear_api_field() {
  if (GetArenaNoVirtual() == NULL && api_field_ != NULL) {
    delete api_field_;
  }
  api_field_ = NULL;
}
void TestWellKnownTypes::clear_duration_field() {
  if (GetArenaNoVirtual() == NULL && duration_field_ != NULL) {
    delete duration_field_;
  }
  duration_field_ = NULL;
}
void TestWellKnownTypes::clear_empty_field() {
  if (GetArenaNoVirtual() == NULL && empty_field_ != NULL) {
    delete empty_field_;
  }
  empty_field_ = NULL;
}
void TestWellKnownTypes::clear_field_mask_field() {
  if (GetArenaNoVirtual() == NULL && field_mask_field_ != NULL) {
    delete field_mask_field_;
  }
  field_mask_field_ = NULL;
}
void TestWellKnownTypes::clear_source_context_field() {
  if (GetArenaNoVirtual() == NULL && source_context_field_ != NULL) {
    delete source_context_field_;
  }
  source_context_field_ = NULL;
}
void TestWellKnownTypes::clear_struct_field() {
  if (GetArenaNoVirtual() == NULL && struct_field_ != NULL) {
    delete struct_field_;
  }
  struct_field_ = NULL;
}
void TestWellKnownTypes::clear_timestamp_field() {
  if (GetArenaNoVirtual() == NULL && timestamp_field_ != NULL) {
    delete timestamp_field_;
  }
  timestamp_field_ = NULL;
}
void TestWellKnownTypes::clear_type_field() {
  if (GetArenaNoVirtual() == NULL && type_field_ != NULL) {
    delete type_field_;
  }
  type_field_ = NULL;
}
void TestWellKnownTypes::clear_double_field() {
  if (GetArenaNoVirtual() == NULL && double_field_ != NULL) {
    delete double_field_;
  }
  double_field_ = NULL;
}
void TestWellKnownTypes::clear_float_field() {
  if (GetArenaNoVirtual() == NULL && float_field_ != NULL) {
    delete float_field_;
  }
  float_field_ = NULL;
}
void TestWellKnownTypes::clear_int64_field() {
  if (GetArenaNoVirtual() == NULL && int64_field_ != NULL) {
    delete int64_field_;
  }
  int64_field_ = NULL;
}
void TestWellKnownTypes::clear_uint64_field() {
  if (GetArenaNoVirtual() == NULL && uint64_field_ != NULL) {
    delete uint64_field_;
  }
  uint64_field_ = NULL;
}
void TestWellKnownTypes::clear_int32_field() {
  if (GetArenaNoVirtual() == NULL && int32_field_ != NULL) {
    delete int32_field_;
  }
  int32_field_ = NULL;
}
void TestWellKnownTypes::clear_uint32_field() {
  if (GetArenaNoVirtual() == NULL && uint32_field_ != NULL) {
    delete uint32_field_;
  }
  uint32_field_ = NULL;
}
void TestWellKnownTypes::clear_bool_field() {
  if (GetArenaNoVirtual() == NULL && bool_field_ != NULL) {
    delete bool_field_;
  }
  bool_field_ = NULL;
}
void TestWellKnownTypes::clear_string_field() {
  if (GetArenaNoVirtual() == NULL && string_field_ != NULL) {
    delete string_field_;
  }
  string_field_ = NULL;
}
void TestWellKnownTypes::clear_bytes_field() {
  if (GetArenaNoVirtual() == NULL && bytes_field_ != NULL) {
    delete bytes_field_;
  }
  bytes_field_ = NULL;
}
void TestWellKnownTypes::clear_value_field() {
  if (GetArenaNoVirtual() == NULL && value_field_ != NULL) {
    delete value_field_;
  }
  value_field_ = NULL;
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestWellKnownTypes::kAnyFieldFieldNumber;
const int TestWellKnownTypes::kApiFieldFieldNumber;
const int TestWellKnownTypes::kDurationFieldFieldNumber;
const int TestWellKnownTypes::kEmptyFieldFieldNumber;
const int TestWellKnownTypes::kFieldMaskFieldFieldNumber;
const int TestWellKnownTypes::kSourceContextFieldFieldNumber;
const int TestWellKnownTypes::kStructFieldFieldNumber;
const int TestWellKnownTypes::kTimestampFieldFieldNumber;
const int TestWellKnownTypes::kTypeFieldFieldNumber;
const int TestWellKnownTypes::kDoubleFieldFieldNumber;
const int TestWellKnownTypes::kFloatFieldFieldNumber;
const int TestWellKnownTypes::kInt64FieldFieldNumber;
const int TestWellKnownTypes::kUint64FieldFieldNumber;
const int TestWellKnownTypes::kInt32FieldFieldNumber;
const int TestWellKnownTypes::kUint32FieldFieldNumber;
const int TestWellKnownTypes::kBoolFieldFieldNumber;
const int TestWellKnownTypes::kStringFieldFieldNumber;
const int TestWellKnownTypes::kBytesFieldFieldNumber;
const int TestWellKnownTypes::kValueFieldFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestWellKnownTypes::TestWellKnownTypes()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_TestWellKnownTypes.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestWellKnownTypes)
}
TestWellKnownTypes::TestWellKnownTypes(const TestWellKnownTypes& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_any_field()) {
    any_field_ = new ::google::protobuf::Any(*from.any_field_);
  } else {
    any_field_ = NULL;
  }
  if (from.has_api_field()) {
    api_field_ = new ::google::protobuf::Api(*from.api_field_);
  } else {
    api_field_ = NULL;
  }
  if (from.has_duration_field()) {
    duration_field_ = new ::google::protobuf::Duration(*from.duration_field_);
  } else {
    duration_field_ = NULL;
  }
  if (from.has_empty_field()) {
    empty_field_ = new ::google::protobuf::Empty(*from.empty_field_);
  } else {
    empty_field_ = NULL;
  }
  if (from.has_field_mask_field()) {
    field_mask_field_ = new ::google::protobuf::FieldMask(*from.field_mask_field_);
  } else {
    field_mask_field_ = NULL;
  }
  if (from.has_source_context_field()) {
    source_context_field_ = new ::google::protobuf::SourceContext(*from.source_context_field_);
  } else {
    source_context_field_ = NULL;
  }
  if (from.has_struct_field()) {
    struct_field_ = new ::google::protobuf::Struct(*from.struct_field_);
  } else {
    struct_field_ = NULL;
  }
  if (from.has_timestamp_field()) {
    timestamp_field_ = new ::google::protobuf::Timestamp(*from.timestamp_field_);
  } else {
    timestamp_field_ = NULL;
  }
  if (from.has_type_field()) {
    type_field_ = new ::google::protobuf::Type(*from.type_field_);
  } else {
    type_field_ = NULL;
  }
  if (from.has_double_field()) {
    double_field_ = new ::google::protobuf::DoubleValue(*from.double_field_);
  } else {
    double_field_ = NULL;
  }
  if (from.has_float_field()) {
    float_field_ = new ::google::protobuf::FloatValue(*from.float_field_);
  } else {
    float_field_ = NULL;
  }
  if (from.has_int64_field()) {
    int64_field_ = new ::google::protobuf::Int64Value(*from.int64_field_);
  } else {
    int64_field_ = NULL;
  }
  if (from.has_uint64_field()) {
    uint64_field_ = new ::google::protobuf::UInt64Value(*from.uint64_field_);
  } else {
    uint64_field_ = NULL;
  }
  if (from.has_int32_field()) {
    int32_field_ = new ::google::protobuf::Int32Value(*from.int32_field_);
  } else {
    int32_field_ = NULL;
  }
  if (from.has_uint32_field()) {
    uint32_field_ = new ::google::protobuf::UInt32Value(*from.uint32_field_);
  } else {
    uint32_field_ = NULL;
  }
  if (from.has_bool_field()) {
    bool_field_ = new ::google::protobuf::BoolValue(*from.bool_field_);
  } else {
    bool_field_ = NULL;
  }
  if (from.has_string_field()) {
    string_field_ = new ::google::protobuf::StringValue(*from.string_field_);
  } else {
    string_field_ = NULL;
  }
  if (from.has_bytes_field()) {
    bytes_field_ = new ::google::protobuf::BytesValue(*from.bytes_field_);
  } else {
    bytes_field_ = NULL;
  }
  if (from.has_value_field()) {
    value_field_ = new ::google::protobuf::Value(*from.value_field_);
  } else {
    value_field_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestWellKnownTypes)
}

void TestWellKnownTypes::SharedCtor() {
  ::memset(&any_field_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&value_field_) -
      reinterpret_cast<char*>(&any_field_)) + sizeof(value_field_));
}

TestWellKnownTypes::~TestWellKnownTypes() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestWellKnownTypes)
  SharedDtor();
}

void TestWellKnownTypes::SharedDtor() {
  if (this != internal_default_instance()) delete any_field_;
  if (this != internal_default_instance()) delete api_field_;
  if (this != internal_default_instance()) delete duration_field_;
  if (this != internal_default_instance()) delete empty_field_;
  if (this != internal_default_instance()) delete field_mask_field_;
  if (this != internal_default_instance()) delete source_context_field_;
  if (this != internal_default_instance()) delete struct_field_;
  if (this != internal_default_instance()) delete timestamp_field_;
  if (this != internal_default_instance()) delete type_field_;
  if (this != internal_default_instance()) delete double_field_;
  if (this != internal_default_instance()) delete float_field_;
  if (this != internal_default_instance()) delete int64_field_;
  if (this != internal_default_instance()) delete uint64_field_;
  if (this != internal_default_instance()) delete int32_field_;
  if (this != internal_default_instance()) delete uint32_field_;
  if (this != internal_default_instance()) delete bool_field_;
  if (this != internal_default_instance()) delete string_field_;
  if (this != internal_default_instance()) delete bytes_field_;
  if (this != internal_default_instance()) delete value_field_;
}

void TestWellKnownTypes::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestWellKnownTypes::descriptor() {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestWellKnownTypes& TestWellKnownTypes::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_TestWellKnownTypes.base);
  return *internal_default_instance();
}


void TestWellKnownTypes::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.TestWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaNoVirtual() == NULL && any_field_ != NULL) {
    delete any_field_;
  }
  any_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && api_field_ != NULL) {
    delete api_field_;
  }
  api_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration_field_ != NULL) {
    delete duration_field_;
  }
  duration_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_field_ != NULL) {
    delete empty_field_;
  }
  empty_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && field_mask_field_ != NULL) {
    delete field_mask_field_;
  }
  field_mask_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && source_context_field_ != NULL) {
    delete source_context_field_;
  }
  source_context_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && struct_field_ != NULL) {
    delete struct_field_;
  }
  struct_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && timestamp_field_ != NULL) {
    delete timestamp_field_;
  }
  timestamp_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && type_field_ != NULL) {
    delete type_field_;
  }
  type_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && double_field_ != NULL) {
    delete double_field_;
  }
  double_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && float_field_ != NULL) {
    delete float_field_;
  }
  float_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && int64_field_ != NULL) {
    delete int64_field_;
  }
  int64_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && uint64_field_ != NULL) {
    delete uint64_field_;
  }
  uint64_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && int32_field_ != NULL) {
    delete int32_field_;
  }
  int32_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && uint32_field_ != NULL) {
    delete uint32_field_;
  }
  uint32_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && bool_field_ != NULL) {
    delete bool_field_;
  }
  bool_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && string_field_ != NULL) {
    delete string_field_;
  }
  string_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && bytes_field_ != NULL) {
    delete bytes_field_;
  }
  bytes_field_ = NULL;
  if (GetArenaNoVirtual() == NULL && value_field_ != NULL) {
    delete value_field_;
  }
  value_field_ = NULL;
  _internal_metadata_.Clear();
}

bool TestWellKnownTypes::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestWellKnownTypes)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.Any any_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_any_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Api api_field = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_api_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Duration duration_field = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Empty empty_field = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_empty_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.FieldMask field_mask_field = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_field_mask_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.SourceContext source_context_field = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_source_context_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Struct struct_field = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_struct_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Timestamp timestamp_field = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timestamp_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Type type_field = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_type_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.DoubleValue double_field = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_double_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.FloatValue float_field = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_float_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Int64Value int64_field = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_int64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.UInt64Value uint64_field = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_uint64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Int32Value int32_field = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_int32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.UInt32Value uint32_field = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_uint32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.BoolValue bool_field = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_bool_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.StringValue string_field = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_string_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.BytesValue bytes_field = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_bytes_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Value value_field = 19;
      case 19: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 154 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_value_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestWellKnownTypes)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestWellKnownTypes)
  return false;
#undef DO_
}

void TestWellKnownTypes::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:protobuf_unittest.TestWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Any any_field = 1;
  if (this->has_any_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_any_field(), output);
  }

  // .google.protobuf.Api api_field = 2;
  if (this->has_api_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_api_field(), output);
  }

  // .google.protobuf.Duration duration_field = 3;
  if (this->has_duration_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->_internal_duration_field(), output);
  }

  // .google.protobuf.Empty empty_field = 4;
  if (this->has_empty_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->_internal_empty_field(), output);
  }

  // .google.protobuf.FieldMask field_mask_field = 5;
  if (this->has_field_mask_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->_internal_field_mask_field(), output);
  }

  // .google.protobuf.SourceContext source_context_field = 6;
  if (this->has_source_context_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->_internal_source_context_field(), output);
  }

  // .google.protobuf.Struct struct_field = 7;
  if (this->has_struct_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->_internal_struct_field(), output);
  }

  // .google.protobuf.Timestamp timestamp_field = 8;
  if (this->has_timestamp_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->_internal_timestamp_field(), output);
  }

  // .google.protobuf.Type type_field = 9;
  if (this->has_type_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9, this->_internal_type_field(), output);
  }

  // .google.protobuf.DoubleValue double_field = 10;
  if (this->has_double_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10, this->_internal_double_field(), output);
  }

  // .google.protobuf.FloatValue float_field = 11;
  if (this->has_float_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->_internal_float_field(), output);
  }

  // .google.protobuf.Int64Value int64_field = 12;
  if (this->has_int64_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->_internal_int64_field(), output);
  }

  // .google.protobuf.UInt64Value uint64_field = 13;
  if (this->has_uint64_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      13, this->_internal_uint64_field(), output);
  }

  // .google.protobuf.Int32Value int32_field = 14;
  if (this->has_int32_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      14, this->_internal_int32_field(), output);
  }

  // .google.protobuf.UInt32Value uint32_field = 15;
  if (this->has_uint32_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      15, this->_internal_uint32_field(), output);
  }

  // .google.protobuf.BoolValue bool_field = 16;
  if (this->has_bool_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      16, this->_internal_bool_field(), output);
  }

  // .google.protobuf.StringValue string_field = 17;
  if (this->has_string_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      17, this->_internal_string_field(), output);
  }

  // .google.protobuf.BytesValue bytes_field = 18;
  if (this->has_bytes_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      18, this->_internal_bytes_field(), output);
  }

  // .google.protobuf.Value value_field = 19;
  if (this->has_value_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      19, this->_internal_value_field(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestWellKnownTypes)
}

::google::protobuf::uint8* TestWellKnownTypes::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:protobuf_unittest.TestWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Any any_field = 1;
  if (this->has_any_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_any_field(), deterministic, target);
  }

  // .google.protobuf.Api api_field = 2;
  if (this->has_api_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_api_field(), deterministic, target);
  }

  // .google.protobuf.Duration duration_field = 3;
  if (this->has_duration_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->_internal_duration_field(), deterministic, target);
  }

  // .google.protobuf.Empty empty_field = 4;
  if (this->has_empty_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        4, this->_internal_empty_field(), deterministic, target);
  }

  // .google.protobuf.FieldMask field_mask_field = 5;
  if (this->has_field_mask_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->_internal_field_mask_field(), deterministic, target);
  }

  // .google.protobuf.SourceContext source_context_field = 6;
  if (this->has_source_context_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        6, this->_internal_source_context_field(), deterministic, target);
  }

  // .google.protobuf.Struct struct_field = 7;
  if (this->has_struct_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        7, this->_internal_struct_field(), deterministic, target);
  }

  // .google.protobuf.Timestamp timestamp_field = 8;
  if (this->has_timestamp_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        8, this->_internal_timestamp_field(), deterministic, target);
  }

  // .google.protobuf.Type type_field = 9;
  if (this->has_type_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        9, this->_internal_type_field(), deterministic, target);
  }

  // .google.protobuf.DoubleValue double_field = 10;
  if (this->has_double_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        10, this->_internal_double_field(), deterministic, target);
  }

  // .google.protobuf.FloatValue float_field = 11;
  if (this->has_float_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        11, this->_internal_float_field(), deterministic, target);
  }

  // .google.protobuf.Int64Value int64_field = 12;
  if (this->has_int64_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        12, this->_internal_int64_field(), deterministic, target);
  }

  // .google.protobuf.UInt64Value uint64_field = 13;
  if (this->has_uint64_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        13, this->_internal_uint64_field(), deterministic, target);
  }

  // .google.protobuf.Int32Value int32_field = 14;
  if (this->has_int32_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        14, this->_internal_int32_field(), deterministic, target);
  }

  // .google.protobuf.UInt32Value uint32_field = 15;
  if (this->has_uint32_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        15, this->_internal_uint32_field(), deterministic, target);
  }

  // .google.protobuf.BoolValue bool_field = 16;
  if (this->has_bool_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        16, this->_internal_bool_field(), deterministic, target);
  }

  // .google.protobuf.StringValue string_field = 17;
  if (this->has_string_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        17, this->_internal_string_field(), deterministic, target);
  }

  // .google.protobuf.BytesValue bytes_field = 18;
  if (this->has_bytes_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        18, this->_internal_bytes_field(), deterministic, target);
  }

  // .google.protobuf.Value value_field = 19;
  if (this->has_value_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        19, this->_internal_value_field(), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestWellKnownTypes)
  return target;
}

size_t TestWellKnownTypes::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestWellKnownTypes)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .google.protobuf.Any any_field = 1;
  if (this->has_any_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *any_field_);
  }

  // .google.protobuf.Api api_field = 2;
  if (this->has_api_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *api_field_);
  }

  // .google.protobuf.Duration duration_field = 3;
  if (this->has_duration_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration_field_);
  }

  // .google.protobuf.Empty empty_field = 4;
  if (this->has_empty_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_field_);
  }

  // .google.protobuf.FieldMask field_mask_field = 5;
  if (this->has_field_mask_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *field_mask_field_);
  }

  // .google.protobuf.SourceContext source_context_field = 6;
  if (this->has_source_context_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *source_context_field_);
  }

  // .google.protobuf.Struct struct_field = 7;
  if (this->has_struct_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *struct_field_);
  }

  // .google.protobuf.Timestamp timestamp_field = 8;
  if (this->has_timestamp_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timestamp_field_);
  }

  // .google.protobuf.Type type_field = 9;
  if (this->has_type_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *type_field_);
  }

  // .google.protobuf.DoubleValue double_field = 10;
  if (this->has_double_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *double_field_);
  }

  // .google.protobuf.FloatValue float_field = 11;
  if (this->has_float_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *float_field_);
  }

  // .google.protobuf.Int64Value int64_field = 12;
  if (this->has_int64_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *int64_field_);
  }

  // .google.protobuf.UInt64Value uint64_field = 13;
  if (this->has_uint64_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *uint64_field_);
  }

  // .google.protobuf.Int32Value int32_field = 14;
  if (this->has_int32_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *int32_field_);
  }

  // .google.protobuf.UInt32Value uint32_field = 15;
  if (this->has_uint32_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *uint32_field_);
  }

  // .google.protobuf.BoolValue bool_field = 16;
  if (this->has_bool_field()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *bool_field_);
  }

  // .google.protobuf.StringValue string_field = 17;
  if (this->has_string_field()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *string_field_);
  }

  // .google.protobuf.BytesValue bytes_field = 18;
  if (this->has_bytes_field()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *bytes_field_);
  }

  // .google.protobuf.Value value_field = 19;
  if (this->has_value_field()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *value_field_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void TestWellKnownTypes::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:protobuf_unittest.TestWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  const TestWellKnownTypes* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const TestWellKnownTypes>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:protobuf_unittest.TestWellKnownTypes)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:protobuf_unittest.TestWellKnownTypes)
    MergeFrom(*source);
  }
}

void TestWellKnownTypes::MergeFrom(const TestWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_any_field()) {
    mutable_any_field()->::google::protobuf::Any::MergeFrom(from.any_field());
  }
  if (from.has_api_field()) {
    mutable_api_field()->::google::protobuf::Api::MergeFrom(from.api_field());
  }
  if (from.has_duration_field()) {
    mutable_duration_field()->::google::protobuf::Duration::MergeFrom(from.duration_field());
  }
  if (from.has_empty_field()) {
    mutable_empty_field()->::google::protobuf::Empty::MergeFrom(from.empty_field());
  }
  if (from.has_field_mask_field()) {
    mutable_field_mask_field()->::google::protobuf::FieldMask::MergeFrom(from.field_mask_field());
  }
  if (from.has_source_context_field()) {
    mutable_source_context_field()->::google::protobuf::SourceContext::MergeFrom(from.source_context_field());
  }
  if (from.has_struct_field()) {
    mutable_struct_field()->::google::protobuf::Struct::MergeFrom(from.struct_field());
  }
  if (from.has_timestamp_field()) {
    mutable_timestamp_field()->::google::protobuf::Timestamp::MergeFrom(from.timestamp_field());
  }
  if (from.has_type_field()) {
    mutable_type_field()->::google::protobuf::Type::MergeFrom(from.type_field());
  }
  if (from.has_double_field()) {
    mutable_double_field()->::google::protobuf::DoubleValue::MergeFrom(from.double_field());
  }
  if (from.has_float_field()) {
    mutable_float_field()->::google::protobuf::FloatValue::MergeFrom(from.float_field());
  }
  if (from.has_int64_field()) {
    mutable_int64_field()->::google::protobuf::Int64Value::MergeFrom(from.int64_field());
  }
  if (from.has_uint64_field()) {
    mutable_uint64_field()->::google::protobuf::UInt64Value::MergeFrom(from.uint64_field());
  }
  if (from.has_int32_field()) {
    mutable_int32_field()->::google::protobuf::Int32Value::MergeFrom(from.int32_field());
  }
  if (from.has_uint32_field()) {
    mutable_uint32_field()->::google::protobuf::UInt32Value::MergeFrom(from.uint32_field());
  }
  if (from.has_bool_field()) {
    mutable_bool_field()->::google::protobuf::BoolValue::MergeFrom(from.bool_field());
  }
  if (from.has_string_field()) {
    mutable_string_field()->::google::protobuf::StringValue::MergeFrom(from.string_field());
  }
  if (from.has_bytes_field()) {
    mutable_bytes_field()->::google::protobuf::BytesValue::MergeFrom(from.bytes_field());
  }
  if (from.has_value_field()) {
    mutable_value_field()->::google::protobuf::Value::MergeFrom(from.value_field());
  }
}

void TestWellKnownTypes::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:protobuf_unittest.TestWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void TestWellKnownTypes::CopyFrom(const TestWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.TestWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TestWellKnownTypes::IsInitialized() const {
  return true;
}

void TestWellKnownTypes::Swap(TestWellKnownTypes* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestWellKnownTypes::InternalSwap(TestWellKnownTypes* other) {
  using std::swap;
  swap(any_field_, other->any_field_);
  swap(api_field_, other->api_field_);
  swap(duration_field_, other->duration_field_);
  swap(empty_field_, other->empty_field_);
  swap(field_mask_field_, other->field_mask_field_);
  swap(source_context_field_, other->source_context_field_);
  swap(struct_field_, other->struct_field_);
  swap(timestamp_field_, other->timestamp_field_);
  swap(type_field_, other->type_field_);
  swap(double_field_, other->double_field_);
  swap(float_field_, other->float_field_);
  swap(int64_field_, other->int64_field_);
  swap(uint64_field_, other->uint64_field_);
  swap(int32_field_, other->int32_field_);
  swap(uint32_field_, other->uint32_field_);
  swap(bool_field_, other->bool_field_);
  swap(string_field_, other->string_field_);
  swap(bytes_field_, other->bytes_field_);
  swap(value_field_, other->value_field_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata TestWellKnownTypes::GetMetadata() const {
  protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages];
}


// ===================================================================

void RepeatedWellKnownTypes::InitAsDefaultInstance() {
}
void RepeatedWellKnownTypes::clear_any_field() {
  any_field_.Clear();
}
void RepeatedWellKnownTypes::clear_api_field() {
  api_field_.Clear();
}
void RepeatedWellKnownTypes::clear_duration_field() {
  duration_field_.Clear();
}
void RepeatedWellKnownTypes::clear_empty_field() {
  empty_field_.Clear();
}
void RepeatedWellKnownTypes::clear_field_mask_field() {
  field_mask_field_.Clear();
}
void RepeatedWellKnownTypes::clear_source_context_field() {
  source_context_field_.Clear();
}
void RepeatedWellKnownTypes::clear_struct_field() {
  struct_field_.Clear();
}
void RepeatedWellKnownTypes::clear_timestamp_field() {
  timestamp_field_.Clear();
}
void RepeatedWellKnownTypes::clear_type_field() {
  type_field_.Clear();
}
void RepeatedWellKnownTypes::clear_double_field() {
  double_field_.Clear();
}
void RepeatedWellKnownTypes::clear_float_field() {
  float_field_.Clear();
}
void RepeatedWellKnownTypes::clear_int64_field() {
  int64_field_.Clear();
}
void RepeatedWellKnownTypes::clear_uint64_field() {
  uint64_field_.Clear();
}
void RepeatedWellKnownTypes::clear_int32_field() {
  int32_field_.Clear();
}
void RepeatedWellKnownTypes::clear_uint32_field() {
  uint32_field_.Clear();
}
void RepeatedWellKnownTypes::clear_bool_field() {
  bool_field_.Clear();
}
void RepeatedWellKnownTypes::clear_string_field() {
  string_field_.Clear();
}
void RepeatedWellKnownTypes::clear_bytes_field() {
  bytes_field_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int RepeatedWellKnownTypes::kAnyFieldFieldNumber;
const int RepeatedWellKnownTypes::kApiFieldFieldNumber;
const int RepeatedWellKnownTypes::kDurationFieldFieldNumber;
const int RepeatedWellKnownTypes::kEmptyFieldFieldNumber;
const int RepeatedWellKnownTypes::kFieldMaskFieldFieldNumber;
const int RepeatedWellKnownTypes::kSourceContextFieldFieldNumber;
const int RepeatedWellKnownTypes::kStructFieldFieldNumber;
const int RepeatedWellKnownTypes::kTimestampFieldFieldNumber;
const int RepeatedWellKnownTypes::kTypeFieldFieldNumber;
const int RepeatedWellKnownTypes::kDoubleFieldFieldNumber;
const int RepeatedWellKnownTypes::kFloatFieldFieldNumber;
const int RepeatedWellKnownTypes::kInt64FieldFieldNumber;
const int RepeatedWellKnownTypes::kUint64FieldFieldNumber;
const int RepeatedWellKnownTypes::kInt32FieldFieldNumber;
const int RepeatedWellKnownTypes::kUint32FieldFieldNumber;
const int RepeatedWellKnownTypes::kBoolFieldFieldNumber;
const int RepeatedWellKnownTypes::kStringFieldFieldNumber;
const int RepeatedWellKnownTypes::kBytesFieldFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

RepeatedWellKnownTypes::RepeatedWellKnownTypes()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_RepeatedWellKnownTypes.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.RepeatedWellKnownTypes)
}
RepeatedWellKnownTypes::RepeatedWellKnownTypes(const RepeatedWellKnownTypes& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      any_field_(from.any_field_),
      api_field_(from.api_field_),
      duration_field_(from.duration_field_),
      empty_field_(from.empty_field_),
      field_mask_field_(from.field_mask_field_),
      source_context_field_(from.source_context_field_),
      struct_field_(from.struct_field_),
      timestamp_field_(from.timestamp_field_),
      type_field_(from.type_field_),
      double_field_(from.double_field_),
      float_field_(from.float_field_),
      int64_field_(from.int64_field_),
      uint64_field_(from.uint64_field_),
      int32_field_(from.int32_field_),
      uint32_field_(from.uint32_field_),
      bool_field_(from.bool_field_),
      string_field_(from.string_field_),
      bytes_field_(from.bytes_field_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.RepeatedWellKnownTypes)
}

void RepeatedWellKnownTypes::SharedCtor() {
}

RepeatedWellKnownTypes::~RepeatedWellKnownTypes() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.RepeatedWellKnownTypes)
  SharedDtor();
}

void RepeatedWellKnownTypes::SharedDtor() {
}

void RepeatedWellKnownTypes::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* RepeatedWellKnownTypes::descriptor() {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const RepeatedWellKnownTypes& RepeatedWellKnownTypes::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_RepeatedWellKnownTypes.base);
  return *internal_default_instance();
}


void RepeatedWellKnownTypes::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.RepeatedWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  any_field_.Clear();
  api_field_.Clear();
  duration_field_.Clear();
  empty_field_.Clear();
  field_mask_field_.Clear();
  source_context_field_.Clear();
  struct_field_.Clear();
  timestamp_field_.Clear();
  type_field_.Clear();
  double_field_.Clear();
  float_field_.Clear();
  int64_field_.Clear();
  uint64_field_.Clear();
  int32_field_.Clear();
  uint32_field_.Clear();
  bool_field_.Clear();
  string_field_.Clear();
  bytes_field_.Clear();
  _internal_metadata_.Clear();
}

bool RepeatedWellKnownTypes::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.RepeatedWellKnownTypes)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .google.protobuf.Any any_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_any_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Api api_field = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_api_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Duration duration_field = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_duration_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Empty empty_field = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_empty_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.FieldMask field_mask_field = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_field_mask_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.SourceContext source_context_field = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_source_context_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Struct struct_field = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_struct_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Timestamp timestamp_field = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_timestamp_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Type type_field = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_type_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.DoubleValue double_field = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_double_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.FloatValue float_field = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_float_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Int64Value int64_field = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_int64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.UInt64Value uint64_field = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_uint64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Int32Value int32_field = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_int32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.UInt32Value uint32_field = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_uint32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.BoolValue bool_field = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_bool_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.StringValue string_field = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_string_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.BytesValue bytes_field = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_bytes_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.RepeatedWellKnownTypes)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.RepeatedWellKnownTypes)
  return false;
#undef DO_
}

void RepeatedWellKnownTypes::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:protobuf_unittest.RepeatedWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.Any any_field = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->any_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1,
      this->any_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Api api_field = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->api_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2,
      this->api_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Duration duration_field = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->duration_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3,
      this->duration_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Empty empty_field = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->empty_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4,
      this->empty_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.FieldMask field_mask_field = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field_mask_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5,
      this->field_mask_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.SourceContext source_context_field = 6;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->source_context_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6,
      this->source_context_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Struct struct_field = 7;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->struct_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7,
      this->struct_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Timestamp timestamp_field = 8;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->timestamp_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8,
      this->timestamp_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Type type_field = 9;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->type_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9,
      this->type_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.DoubleValue double_field = 10;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->double_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10,
      this->double_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.FloatValue float_field = 11;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->float_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11,
      this->float_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Int64Value int64_field = 12;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->int64_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12,
      this->int64_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.UInt64Value uint64_field = 13;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->uint64_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      13,
      this->uint64_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.Int32Value int32_field = 14;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->int32_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      14,
      this->int32_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.UInt32Value uint32_field = 15;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->uint32_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      15,
      this->uint32_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.BoolValue bool_field = 16;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->bool_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      16,
      this->bool_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.StringValue string_field = 17;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->string_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      17,
      this->string_field(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.BytesValue bytes_field = 18;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->bytes_field_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      18,
      this->bytes_field(static_cast<int>(i)),
      output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.RepeatedWellKnownTypes)
}

::google::protobuf::uint8* RepeatedWellKnownTypes::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:protobuf_unittest.RepeatedWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.Any any_field = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->any_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->any_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Api api_field = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->api_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->api_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Duration duration_field = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->duration_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->duration_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Empty empty_field = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->empty_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        4, this->empty_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.FieldMask field_mask_field = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field_mask_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->field_mask_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.SourceContext source_context_field = 6;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->source_context_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        6, this->source_context_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Struct struct_field = 7;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->struct_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        7, this->struct_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Timestamp timestamp_field = 8;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->timestamp_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        8, this->timestamp_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Type type_field = 9;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->type_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        9, this->type_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.DoubleValue double_field = 10;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->double_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        10, this->double_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.FloatValue float_field = 11;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->float_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        11, this->float_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Int64Value int64_field = 12;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->int64_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        12, this->int64_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.UInt64Value uint64_field = 13;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->uint64_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        13, this->uint64_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.Int32Value int32_field = 14;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->int32_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        14, this->int32_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.UInt32Value uint32_field = 15;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->uint32_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        15, this->uint32_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.BoolValue bool_field = 16;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->bool_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        16, this->bool_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.StringValue string_field = 17;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->string_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        17, this->string_field(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.BytesValue bytes_field = 18;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->bytes_field_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        18, this->bytes_field(static_cast<int>(i)), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.RepeatedWellKnownTypes)
  return target;
}

size_t RepeatedWellKnownTypes::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.RepeatedWellKnownTypes)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // repeated .google.protobuf.Any any_field = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->any_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->any_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Api api_field = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->api_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->api_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Duration duration_field = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->duration_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->duration_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Empty empty_field = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->empty_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->empty_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.FieldMask field_mask_field = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->field_mask_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->field_mask_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.SourceContext source_context_field = 6;
  {
    unsigned int count = static_cast<unsigned int>(this->source_context_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->source_context_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Struct struct_field = 7;
  {
    unsigned int count = static_cast<unsigned int>(this->struct_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->struct_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Timestamp timestamp_field = 8;
  {
    unsigned int count = static_cast<unsigned int>(this->timestamp_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->timestamp_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Type type_field = 9;
  {
    unsigned int count = static_cast<unsigned int>(this->type_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->type_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.DoubleValue double_field = 10;
  {
    unsigned int count = static_cast<unsigned int>(this->double_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->double_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.FloatValue float_field = 11;
  {
    unsigned int count = static_cast<unsigned int>(this->float_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->float_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Int64Value int64_field = 12;
  {
    unsigned int count = static_cast<unsigned int>(this->int64_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->int64_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.UInt64Value uint64_field = 13;
  {
    unsigned int count = static_cast<unsigned int>(this->uint64_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->uint64_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.Int32Value int32_field = 14;
  {
    unsigned int count = static_cast<unsigned int>(this->int32_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->int32_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.UInt32Value uint32_field = 15;
  {
    unsigned int count = static_cast<unsigned int>(this->uint32_field_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->uint32_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.BoolValue bool_field = 16;
  {
    unsigned int count = static_cast<unsigned int>(this->bool_field_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->bool_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.StringValue string_field = 17;
  {
    unsigned int count = static_cast<unsigned int>(this->string_field_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->string_field(static_cast<int>(i)));
    }
  }

  // repeated .google.protobuf.BytesValue bytes_field = 18;
  {
    unsigned int count = static_cast<unsigned int>(this->bytes_field_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->bytes_field(static_cast<int>(i)));
    }
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void RepeatedWellKnownTypes::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:protobuf_unittest.RepeatedWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  const RepeatedWellKnownTypes* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const RepeatedWellKnownTypes>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:protobuf_unittest.RepeatedWellKnownTypes)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:protobuf_unittest.RepeatedWellKnownTypes)
    MergeFrom(*source);
  }
}

void RepeatedWellKnownTypes::MergeFrom(const RepeatedWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.RepeatedWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  any_field_.MergeFrom(from.any_field_);
  api_field_.MergeFrom(from.api_field_);
  duration_field_.MergeFrom(from.duration_field_);
  empty_field_.MergeFrom(from.empty_field_);
  field_mask_field_.MergeFrom(from.field_mask_field_);
  source_context_field_.MergeFrom(from.source_context_field_);
  struct_field_.MergeFrom(from.struct_field_);
  timestamp_field_.MergeFrom(from.timestamp_field_);
  type_field_.MergeFrom(from.type_field_);
  double_field_.MergeFrom(from.double_field_);
  float_field_.MergeFrom(from.float_field_);
  int64_field_.MergeFrom(from.int64_field_);
  uint64_field_.MergeFrom(from.uint64_field_);
  int32_field_.MergeFrom(from.int32_field_);
  uint32_field_.MergeFrom(from.uint32_field_);
  bool_field_.MergeFrom(from.bool_field_);
  string_field_.MergeFrom(from.string_field_);
  bytes_field_.MergeFrom(from.bytes_field_);
}

void RepeatedWellKnownTypes::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:protobuf_unittest.RepeatedWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void RepeatedWellKnownTypes::CopyFrom(const RepeatedWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.RepeatedWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RepeatedWellKnownTypes::IsInitialized() const {
  return true;
}

void RepeatedWellKnownTypes::Swap(RepeatedWellKnownTypes* other) {
  if (other == this) return;
  InternalSwap(other);
}
void RepeatedWellKnownTypes::InternalSwap(RepeatedWellKnownTypes* other) {
  using std::swap;
  CastToBase(&any_field_)->InternalSwap(CastToBase(&other->any_field_));
  CastToBase(&api_field_)->InternalSwap(CastToBase(&other->api_field_));
  CastToBase(&duration_field_)->InternalSwap(CastToBase(&other->duration_field_));
  CastToBase(&empty_field_)->InternalSwap(CastToBase(&other->empty_field_));
  CastToBase(&field_mask_field_)->InternalSwap(CastToBase(&other->field_mask_field_));
  CastToBase(&source_context_field_)->InternalSwap(CastToBase(&other->source_context_field_));
  CastToBase(&struct_field_)->InternalSwap(CastToBase(&other->struct_field_));
  CastToBase(&timestamp_field_)->InternalSwap(CastToBase(&other->timestamp_field_));
  CastToBase(&type_field_)->InternalSwap(CastToBase(&other->type_field_));
  CastToBase(&double_field_)->InternalSwap(CastToBase(&other->double_field_));
  CastToBase(&float_field_)->InternalSwap(CastToBase(&other->float_field_));
  CastToBase(&int64_field_)->InternalSwap(CastToBase(&other->int64_field_));
  CastToBase(&uint64_field_)->InternalSwap(CastToBase(&other->uint64_field_));
  CastToBase(&int32_field_)->InternalSwap(CastToBase(&other->int32_field_));
  CastToBase(&uint32_field_)->InternalSwap(CastToBase(&other->uint32_field_));
  CastToBase(&bool_field_)->InternalSwap(CastToBase(&other->bool_field_));
  CastToBase(&string_field_)->InternalSwap(CastToBase(&other->string_field_));
  CastToBase(&bytes_field_)->InternalSwap(CastToBase(&other->bytes_field_));
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata RepeatedWellKnownTypes::GetMetadata() const {
  protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages];
}


// ===================================================================

void OneofWellKnownTypes::InitAsDefaultInstance() {
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.any_field_ = const_cast< ::google::protobuf::Any*>(
      ::google::protobuf::Any::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.api_field_ = const_cast< ::google::protobuf::Api*>(
      ::google::protobuf::Api::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.duration_field_ = const_cast< ::google::protobuf::Duration*>(
      ::google::protobuf::Duration::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.empty_field_ = const_cast< ::google::protobuf::Empty*>(
      ::google::protobuf::Empty::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.field_mask_field_ = const_cast< ::google::protobuf::FieldMask*>(
      ::google::protobuf::FieldMask::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.source_context_field_ = const_cast< ::google::protobuf::SourceContext*>(
      ::google::protobuf::SourceContext::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.struct_field_ = const_cast< ::google::protobuf::Struct*>(
      ::google::protobuf::Struct::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.timestamp_field_ = const_cast< ::google::protobuf::Timestamp*>(
      ::google::protobuf::Timestamp::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.type_field_ = const_cast< ::google::protobuf::Type*>(
      ::google::protobuf::Type::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.double_field_ = const_cast< ::google::protobuf::DoubleValue*>(
      ::google::protobuf::DoubleValue::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.float_field_ = const_cast< ::google::protobuf::FloatValue*>(
      ::google::protobuf::FloatValue::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.int64_field_ = const_cast< ::google::protobuf::Int64Value*>(
      ::google::protobuf::Int64Value::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.uint64_field_ = const_cast< ::google::protobuf::UInt64Value*>(
      ::google::protobuf::UInt64Value::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.int32_field_ = const_cast< ::google::protobuf::Int32Value*>(
      ::google::protobuf::Int32Value::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.uint32_field_ = const_cast< ::google::protobuf::UInt32Value*>(
      ::google::protobuf::UInt32Value::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.bool_field_ = const_cast< ::google::protobuf::BoolValue*>(
      ::google::protobuf::BoolValue::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.string_field_ = const_cast< ::google::protobuf::StringValue*>(
      ::google::protobuf::StringValue::internal_default_instance());
  ::protobuf_unittest::_OneofWellKnownTypes_default_instance_.bytes_field_ = const_cast< ::google::protobuf::BytesValue*>(
      ::google::protobuf::BytesValue::internal_default_instance());
}
void OneofWellKnownTypes::set_allocated_any_field(::google::protobuf::Any* any_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (any_field) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      any_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, any_field, submessage_arena);
    }
    set_has_any_field();
    oneof_field_.any_field_ = any_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.any_field)
}
void OneofWellKnownTypes::clear_any_field() {
  if (has_any_field()) {
    delete oneof_field_.any_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_api_field(::google::protobuf::Api* api_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (api_field) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      api_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, api_field, submessage_arena);
    }
    set_has_api_field();
    oneof_field_.api_field_ = api_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.api_field)
}
void OneofWellKnownTypes::clear_api_field() {
  if (has_api_field()) {
    delete oneof_field_.api_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_duration_field(::google::protobuf::Duration* duration_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (duration_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(duration_field)->GetArena();
    if (message_arena != submessage_arena) {
      duration_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, duration_field, submessage_arena);
    }
    set_has_duration_field();
    oneof_field_.duration_field_ = duration_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.duration_field)
}
void OneofWellKnownTypes::clear_duration_field() {
  if (has_duration_field()) {
    delete oneof_field_.duration_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_empty_field(::google::protobuf::Empty* empty_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (empty_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(empty_field)->GetArena();
    if (message_arena != submessage_arena) {
      empty_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_field, submessage_arena);
    }
    set_has_empty_field();
    oneof_field_.empty_field_ = empty_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.empty_field)
}
void OneofWellKnownTypes::clear_empty_field() {
  if (has_empty_field()) {
    delete oneof_field_.empty_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_field_mask_field(::google::protobuf::FieldMask* field_mask_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (field_mask_field) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      field_mask_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, field_mask_field, submessage_arena);
    }
    set_has_field_mask_field();
    oneof_field_.field_mask_field_ = field_mask_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.field_mask_field)
}
void OneofWellKnownTypes::clear_field_mask_field() {
  if (has_field_mask_field()) {
    delete oneof_field_.field_mask_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_source_context_field(::google::protobuf::SourceContext* source_context_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (source_context_field) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      source_context_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, source_context_field, submessage_arena);
    }
    set_has_source_context_field();
    oneof_field_.source_context_field_ = source_context_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.source_context_field)
}
void OneofWellKnownTypes::clear_source_context_field() {
  if (has_source_context_field()) {
    delete oneof_field_.source_context_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_struct_field(::google::protobuf::Struct* struct_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (struct_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(struct_field)->GetArena();
    if (message_arena != submessage_arena) {
      struct_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, struct_field, submessage_arena);
    }
    set_has_struct_field();
    oneof_field_.struct_field_ = struct_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.struct_field)
}
void OneofWellKnownTypes::clear_struct_field() {
  if (has_struct_field()) {
    delete oneof_field_.struct_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_timestamp_field(::google::protobuf::Timestamp* timestamp_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (timestamp_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(timestamp_field)->GetArena();
    if (message_arena != submessage_arena) {
      timestamp_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, timestamp_field, submessage_arena);
    }
    set_has_timestamp_field();
    oneof_field_.timestamp_field_ = timestamp_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.timestamp_field)
}
void OneofWellKnownTypes::clear_timestamp_field() {
  if (has_timestamp_field()) {
    delete oneof_field_.timestamp_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_type_field(::google::protobuf::Type* type_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (type_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(type_field)->GetArena();
    if (message_arena != submessage_arena) {
      type_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, type_field, submessage_arena);
    }
    set_has_type_field();
    oneof_field_.type_field_ = type_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.type_field)
}
void OneofWellKnownTypes::clear_type_field() {
  if (has_type_field()) {
    delete oneof_field_.type_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_double_field(::google::protobuf::DoubleValue* double_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (double_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(double_field)->GetArena();
    if (message_arena != submessage_arena) {
      double_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, double_field, submessage_arena);
    }
    set_has_double_field();
    oneof_field_.double_field_ = double_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.double_field)
}
void OneofWellKnownTypes::clear_double_field() {
  if (has_double_field()) {
    delete oneof_field_.double_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_float_field(::google::protobuf::FloatValue* float_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (float_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(float_field)->GetArena();
    if (message_arena != submessage_arena) {
      float_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, float_field, submessage_arena);
    }
    set_has_float_field();
    oneof_field_.float_field_ = float_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.float_field)
}
void OneofWellKnownTypes::clear_float_field() {
  if (has_float_field()) {
    delete oneof_field_.float_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_int64_field(::google::protobuf::Int64Value* int64_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (int64_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(int64_field)->GetArena();
    if (message_arena != submessage_arena) {
      int64_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, int64_field, submessage_arena);
    }
    set_has_int64_field();
    oneof_field_.int64_field_ = int64_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.int64_field)
}
void OneofWellKnownTypes::clear_int64_field() {
  if (has_int64_field()) {
    delete oneof_field_.int64_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_uint64_field(::google::protobuf::UInt64Value* uint64_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (uint64_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(uint64_field)->GetArena();
    if (message_arena != submessage_arena) {
      uint64_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, uint64_field, submessage_arena);
    }
    set_has_uint64_field();
    oneof_field_.uint64_field_ = uint64_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.uint64_field)
}
void OneofWellKnownTypes::clear_uint64_field() {
  if (has_uint64_field()) {
    delete oneof_field_.uint64_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_int32_field(::google::protobuf::Int32Value* int32_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (int32_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(int32_field)->GetArena();
    if (message_arena != submessage_arena) {
      int32_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, int32_field, submessage_arena);
    }
    set_has_int32_field();
    oneof_field_.int32_field_ = int32_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.int32_field)
}
void OneofWellKnownTypes::clear_int32_field() {
  if (has_int32_field()) {
    delete oneof_field_.int32_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_uint32_field(::google::protobuf::UInt32Value* uint32_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (uint32_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(uint32_field)->GetArena();
    if (message_arena != submessage_arena) {
      uint32_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, uint32_field, submessage_arena);
    }
    set_has_uint32_field();
    oneof_field_.uint32_field_ = uint32_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.uint32_field)
}
void OneofWellKnownTypes::clear_uint32_field() {
  if (has_uint32_field()) {
    delete oneof_field_.uint32_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_bool_field(::google::protobuf::BoolValue* bool_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (bool_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(bool_field)->GetArena();
    if (message_arena != submessage_arena) {
      bool_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, bool_field, submessage_arena);
    }
    set_has_bool_field();
    oneof_field_.bool_field_ = bool_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.bool_field)
}
void OneofWellKnownTypes::clear_bool_field() {
  if (has_bool_field()) {
    delete oneof_field_.bool_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_string_field(::google::protobuf::StringValue* string_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (string_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(string_field)->GetArena();
    if (message_arena != submessage_arena) {
      string_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, string_field, submessage_arena);
    }
    set_has_string_field();
    oneof_field_.string_field_ = string_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.string_field)
}
void OneofWellKnownTypes::clear_string_field() {
  if (has_string_field()) {
    delete oneof_field_.string_field_;
    clear_has_oneof_field();
  }
}
void OneofWellKnownTypes::set_allocated_bytes_field(::google::protobuf::BytesValue* bytes_field) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (bytes_field) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(bytes_field)->GetArena();
    if (message_arena != submessage_arena) {
      bytes_field = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, bytes_field, submessage_arena);
    }
    set_has_bytes_field();
    oneof_field_.bytes_field_ = bytes_field;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.OneofWellKnownTypes.bytes_field)
}
void OneofWellKnownTypes::clear_bytes_field() {
  if (has_bytes_field()) {
    delete oneof_field_.bytes_field_;
    clear_has_oneof_field();
  }
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int OneofWellKnownTypes::kAnyFieldFieldNumber;
const int OneofWellKnownTypes::kApiFieldFieldNumber;
const int OneofWellKnownTypes::kDurationFieldFieldNumber;
const int OneofWellKnownTypes::kEmptyFieldFieldNumber;
const int OneofWellKnownTypes::kFieldMaskFieldFieldNumber;
const int OneofWellKnownTypes::kSourceContextFieldFieldNumber;
const int OneofWellKnownTypes::kStructFieldFieldNumber;
const int OneofWellKnownTypes::kTimestampFieldFieldNumber;
const int OneofWellKnownTypes::kTypeFieldFieldNumber;
const int OneofWellKnownTypes::kDoubleFieldFieldNumber;
const int OneofWellKnownTypes::kFloatFieldFieldNumber;
const int OneofWellKnownTypes::kInt64FieldFieldNumber;
const int OneofWellKnownTypes::kUint64FieldFieldNumber;
const int OneofWellKnownTypes::kInt32FieldFieldNumber;
const int OneofWellKnownTypes::kUint32FieldFieldNumber;
const int OneofWellKnownTypes::kBoolFieldFieldNumber;
const int OneofWellKnownTypes::kStringFieldFieldNumber;
const int OneofWellKnownTypes::kBytesFieldFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

OneofWellKnownTypes::OneofWellKnownTypes()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_OneofWellKnownTypes.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.OneofWellKnownTypes)
}
OneofWellKnownTypes::OneofWellKnownTypes(const OneofWellKnownTypes& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  clear_has_oneof_field();
  switch (from.oneof_field_case()) {
    case kAnyField: {
      mutable_any_field()->::google::protobuf::Any::MergeFrom(from.any_field());
      break;
    }
    case kApiField: {
      mutable_api_field()->::google::protobuf::Api::MergeFrom(from.api_field());
      break;
    }
    case kDurationField: {
      mutable_duration_field()->::google::protobuf::Duration::MergeFrom(from.duration_field());
      break;
    }
    case kEmptyField: {
      mutable_empty_field()->::google::protobuf::Empty::MergeFrom(from.empty_field());
      break;
    }
    case kFieldMaskField: {
      mutable_field_mask_field()->::google::protobuf::FieldMask::MergeFrom(from.field_mask_field());
      break;
    }
    case kSourceContextField: {
      mutable_source_context_field()->::google::protobuf::SourceContext::MergeFrom(from.source_context_field());
      break;
    }
    case kStructField: {
      mutable_struct_field()->::google::protobuf::Struct::MergeFrom(from.struct_field());
      break;
    }
    case kTimestampField: {
      mutable_timestamp_field()->::google::protobuf::Timestamp::MergeFrom(from.timestamp_field());
      break;
    }
    case kTypeField: {
      mutable_type_field()->::google::protobuf::Type::MergeFrom(from.type_field());
      break;
    }
    case kDoubleField: {
      mutable_double_field()->::google::protobuf::DoubleValue::MergeFrom(from.double_field());
      break;
    }
    case kFloatField: {
      mutable_float_field()->::google::protobuf::FloatValue::MergeFrom(from.float_field());
      break;
    }
    case kInt64Field: {
      mutable_int64_field()->::google::protobuf::Int64Value::MergeFrom(from.int64_field());
      break;
    }
    case kUint64Field: {
      mutable_uint64_field()->::google::protobuf::UInt64Value::MergeFrom(from.uint64_field());
      break;
    }
    case kInt32Field: {
      mutable_int32_field()->::google::protobuf::Int32Value::MergeFrom(from.int32_field());
      break;
    }
    case kUint32Field: {
      mutable_uint32_field()->::google::protobuf::UInt32Value::MergeFrom(from.uint32_field());
      break;
    }
    case kBoolField: {
      mutable_bool_field()->::google::protobuf::BoolValue::MergeFrom(from.bool_field());
      break;
    }
    case kStringField: {
      mutable_string_field()->::google::protobuf::StringValue::MergeFrom(from.string_field());
      break;
    }
    case kBytesField: {
      mutable_bytes_field()->::google::protobuf::BytesValue::MergeFrom(from.bytes_field());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.OneofWellKnownTypes)
}

void OneofWellKnownTypes::SharedCtor() {
  clear_has_oneof_field();
}

OneofWellKnownTypes::~OneofWellKnownTypes() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.OneofWellKnownTypes)
  SharedDtor();
}

void OneofWellKnownTypes::SharedDtor() {
  if (has_oneof_field()) {
    clear_oneof_field();
  }
}

void OneofWellKnownTypes::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* OneofWellKnownTypes::descriptor() {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const OneofWellKnownTypes& OneofWellKnownTypes::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_OneofWellKnownTypes.base);
  return *internal_default_instance();
}


void OneofWellKnownTypes::clear_oneof_field() {
// @@protoc_insertion_point(one_of_clear_start:protobuf_unittest.OneofWellKnownTypes)
  switch (oneof_field_case()) {
    case kAnyField: {
      delete oneof_field_.any_field_;
      break;
    }
    case kApiField: {
      delete oneof_field_.api_field_;
      break;
    }
    case kDurationField: {
      delete oneof_field_.duration_field_;
      break;
    }
    case kEmptyField: {
      delete oneof_field_.empty_field_;
      break;
    }
    case kFieldMaskField: {
      delete oneof_field_.field_mask_field_;
      break;
    }
    case kSourceContextField: {
      delete oneof_field_.source_context_field_;
      break;
    }
    case kStructField: {
      delete oneof_field_.struct_field_;
      break;
    }
    case kTimestampField: {
      delete oneof_field_.timestamp_field_;
      break;
    }
    case kTypeField: {
      delete oneof_field_.type_field_;
      break;
    }
    case kDoubleField: {
      delete oneof_field_.double_field_;
      break;
    }
    case kFloatField: {
      delete oneof_field_.float_field_;
      break;
    }
    case kInt64Field: {
      delete oneof_field_.int64_field_;
      break;
    }
    case kUint64Field: {
      delete oneof_field_.uint64_field_;
      break;
    }
    case kInt32Field: {
      delete oneof_field_.int32_field_;
      break;
    }
    case kUint32Field: {
      delete oneof_field_.uint32_field_;
      break;
    }
    case kBoolField: {
      delete oneof_field_.bool_field_;
      break;
    }
    case kStringField: {
      delete oneof_field_.string_field_;
      break;
    }
    case kBytesField: {
      delete oneof_field_.bytes_field_;
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = ONEOF_FIELD_NOT_SET;
}


void OneofWellKnownTypes::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.OneofWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_oneof_field();
  _internal_metadata_.Clear();
}

bool OneofWellKnownTypes::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.OneofWellKnownTypes)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.Any any_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_any_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Api api_field = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_api_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Duration duration_field = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Empty empty_field = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_empty_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.FieldMask field_mask_field = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_field_mask_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.SourceContext source_context_field = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_source_context_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Struct struct_field = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_struct_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Timestamp timestamp_field = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timestamp_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Type type_field = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_type_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.DoubleValue double_field = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_double_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.FloatValue float_field = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_float_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Int64Value int64_field = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_int64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.UInt64Value uint64_field = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_uint64_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Int32Value int32_field = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_int32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.UInt32Value uint32_field = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_uint32_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.BoolValue bool_field = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_bool_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.StringValue string_field = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_string_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.BytesValue bytes_field = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_bytes_field()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.OneofWellKnownTypes)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.OneofWellKnownTypes)
  return false;
#undef DO_
}

void OneofWellKnownTypes::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:protobuf_unittest.OneofWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Any any_field = 1;
  if (has_any_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_any_field(), output);
  }

  // .google.protobuf.Api api_field = 2;
  if (has_api_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_api_field(), output);
  }

  // .google.protobuf.Duration duration_field = 3;
  if (has_duration_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->_internal_duration_field(), output);
  }

  // .google.protobuf.Empty empty_field = 4;
  if (has_empty_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->_internal_empty_field(), output);
  }

  // .google.protobuf.FieldMask field_mask_field = 5;
  if (has_field_mask_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->_internal_field_mask_field(), output);
  }

  // .google.protobuf.SourceContext source_context_field = 6;
  if (has_source_context_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->_internal_source_context_field(), output);
  }

  // .google.protobuf.Struct struct_field = 7;
  if (has_struct_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->_internal_struct_field(), output);
  }

  // .google.protobuf.Timestamp timestamp_field = 8;
  if (has_timestamp_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->_internal_timestamp_field(), output);
  }

  // .google.protobuf.Type type_field = 9;
  if (has_type_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9, this->_internal_type_field(), output);
  }

  // .google.protobuf.DoubleValue double_field = 10;
  if (has_double_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10, this->_internal_double_field(), output);
  }

  // .google.protobuf.FloatValue float_field = 11;
  if (has_float_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->_internal_float_field(), output);
  }

  // .google.protobuf.Int64Value int64_field = 12;
  if (has_int64_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->_internal_int64_field(), output);
  }

  // .google.protobuf.UInt64Value uint64_field = 13;
  if (has_uint64_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      13, this->_internal_uint64_field(), output);
  }

  // .google.protobuf.Int32Value int32_field = 14;
  if (has_int32_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      14, this->_internal_int32_field(), output);
  }

  // .google.protobuf.UInt32Value uint32_field = 15;
  if (has_uint32_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      15, this->_internal_uint32_field(), output);
  }

  // .google.protobuf.BoolValue bool_field = 16;
  if (has_bool_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      16, this->_internal_bool_field(), output);
  }

  // .google.protobuf.StringValue string_field = 17;
  if (has_string_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      17, this->_internal_string_field(), output);
  }

  // .google.protobuf.BytesValue bytes_field = 18;
  if (has_bytes_field()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      18, this->_internal_bytes_field(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.OneofWellKnownTypes)
}

::google::protobuf::uint8* OneofWellKnownTypes::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:protobuf_unittest.OneofWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Any any_field = 1;
  if (has_any_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_any_field(), deterministic, target);
  }

  // .google.protobuf.Api api_field = 2;
  if (has_api_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_api_field(), deterministic, target);
  }

  // .google.protobuf.Duration duration_field = 3;
  if (has_duration_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->_internal_duration_field(), deterministic, target);
  }

  // .google.protobuf.Empty empty_field = 4;
  if (has_empty_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        4, this->_internal_empty_field(), deterministic, target);
  }

  // .google.protobuf.FieldMask field_mask_field = 5;
  if (has_field_mask_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->_internal_field_mask_field(), deterministic, target);
  }

  // .google.protobuf.SourceContext source_context_field = 6;
  if (has_source_context_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        6, this->_internal_source_context_field(), deterministic, target);
  }

  // .google.protobuf.Struct struct_field = 7;
  if (has_struct_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        7, this->_internal_struct_field(), deterministic, target);
  }

  // .google.protobuf.Timestamp timestamp_field = 8;
  if (has_timestamp_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        8, this->_internal_timestamp_field(), deterministic, target);
  }

  // .google.protobuf.Type type_field = 9;
  if (has_type_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        9, this->_internal_type_field(), deterministic, target);
  }

  // .google.protobuf.DoubleValue double_field = 10;
  if (has_double_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        10, this->_internal_double_field(), deterministic, target);
  }

  // .google.protobuf.FloatValue float_field = 11;
  if (has_float_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        11, this->_internal_float_field(), deterministic, target);
  }

  // .google.protobuf.Int64Value int64_field = 12;
  if (has_int64_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        12, this->_internal_int64_field(), deterministic, target);
  }

  // .google.protobuf.UInt64Value uint64_field = 13;
  if (has_uint64_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        13, this->_internal_uint64_field(), deterministic, target);
  }

  // .google.protobuf.Int32Value int32_field = 14;
  if (has_int32_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        14, this->_internal_int32_field(), deterministic, target);
  }

  // .google.protobuf.UInt32Value uint32_field = 15;
  if (has_uint32_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        15, this->_internal_uint32_field(), deterministic, target);
  }

  // .google.protobuf.BoolValue bool_field = 16;
  if (has_bool_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        16, this->_internal_bool_field(), deterministic, target);
  }

  // .google.protobuf.StringValue string_field = 17;
  if (has_string_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        17, this->_internal_string_field(), deterministic, target);
  }

  // .google.protobuf.BytesValue bytes_field = 18;
  if (has_bytes_field()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        18, this->_internal_bytes_field(), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.OneofWellKnownTypes)
  return target;
}

size_t OneofWellKnownTypes::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.OneofWellKnownTypes)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  switch (oneof_field_case()) {
    // .google.protobuf.Any any_field = 1;
    case kAnyField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.any_field_);
      break;
    }
    // .google.protobuf.Api api_field = 2;
    case kApiField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.api_field_);
      break;
    }
    // .google.protobuf.Duration duration_field = 3;
    case kDurationField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.duration_field_);
      break;
    }
    // .google.protobuf.Empty empty_field = 4;
    case kEmptyField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.empty_field_);
      break;
    }
    // .google.protobuf.FieldMask field_mask_field = 5;
    case kFieldMaskField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.field_mask_field_);
      break;
    }
    // .google.protobuf.SourceContext source_context_field = 6;
    case kSourceContextField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.source_context_field_);
      break;
    }
    // .google.protobuf.Struct struct_field = 7;
    case kStructField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.struct_field_);
      break;
    }
    // .google.protobuf.Timestamp timestamp_field = 8;
    case kTimestampField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.timestamp_field_);
      break;
    }
    // .google.protobuf.Type type_field = 9;
    case kTypeField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.type_field_);
      break;
    }
    // .google.protobuf.DoubleValue double_field = 10;
    case kDoubleField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.double_field_);
      break;
    }
    // .google.protobuf.FloatValue float_field = 11;
    case kFloatField: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.float_field_);
      break;
    }
    // .google.protobuf.Int64Value int64_field = 12;
    case kInt64Field: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.int64_field_);
      break;
    }
    // .google.protobuf.UInt64Value uint64_field = 13;
    case kUint64Field: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.uint64_field_);
      break;
    }
    // .google.protobuf.Int32Value int32_field = 14;
    case kInt32Field: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.int32_field_);
      break;
    }
    // .google.protobuf.UInt32Value uint32_field = 15;
    case kUint32Field: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.uint32_field_);
      break;
    }
    // .google.protobuf.BoolValue bool_field = 16;
    case kBoolField: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.bool_field_);
      break;
    }
    // .google.protobuf.StringValue string_field = 17;
    case kStringField: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.string_field_);
      break;
    }
    // .google.protobuf.BytesValue bytes_field = 18;
    case kBytesField: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.bytes_field_);
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void OneofWellKnownTypes::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:protobuf_unittest.OneofWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  const OneofWellKnownTypes* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const OneofWellKnownTypes>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:protobuf_unittest.OneofWellKnownTypes)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:protobuf_unittest.OneofWellKnownTypes)
    MergeFrom(*source);
  }
}

void OneofWellKnownTypes::MergeFrom(const OneofWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.OneofWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.oneof_field_case()) {
    case kAnyField: {
      mutable_any_field()->::google::protobuf::Any::MergeFrom(from.any_field());
      break;
    }
    case kApiField: {
      mutable_api_field()->::google::protobuf::Api::MergeFrom(from.api_field());
      break;
    }
    case kDurationField: {
      mutable_duration_field()->::google::protobuf::Duration::MergeFrom(from.duration_field());
      break;
    }
    case kEmptyField: {
      mutable_empty_field()->::google::protobuf::Empty::MergeFrom(from.empty_field());
      break;
    }
    case kFieldMaskField: {
      mutable_field_mask_field()->::google::protobuf::FieldMask::MergeFrom(from.field_mask_field());
      break;
    }
    case kSourceContextField: {
      mutable_source_context_field()->::google::protobuf::SourceContext::MergeFrom(from.source_context_field());
      break;
    }
    case kStructField: {
      mutable_struct_field()->::google::protobuf::Struct::MergeFrom(from.struct_field());
      break;
    }
    case kTimestampField: {
      mutable_timestamp_field()->::google::protobuf::Timestamp::MergeFrom(from.timestamp_field());
      break;
    }
    case kTypeField: {
      mutable_type_field()->::google::protobuf::Type::MergeFrom(from.type_field());
      break;
    }
    case kDoubleField: {
      mutable_double_field()->::google::protobuf::DoubleValue::MergeFrom(from.double_field());
      break;
    }
    case kFloatField: {
      mutable_float_field()->::google::protobuf::FloatValue::MergeFrom(from.float_field());
      break;
    }
    case kInt64Field: {
      mutable_int64_field()->::google::protobuf::Int64Value::MergeFrom(from.int64_field());
      break;
    }
    case kUint64Field: {
      mutable_uint64_field()->::google::protobuf::UInt64Value::MergeFrom(from.uint64_field());
      break;
    }
    case kInt32Field: {
      mutable_int32_field()->::google::protobuf::Int32Value::MergeFrom(from.int32_field());
      break;
    }
    case kUint32Field: {
      mutable_uint32_field()->::google::protobuf::UInt32Value::MergeFrom(from.uint32_field());
      break;
    }
    case kBoolField: {
      mutable_bool_field()->::google::protobuf::BoolValue::MergeFrom(from.bool_field());
      break;
    }
    case kStringField: {
      mutable_string_field()->::google::protobuf::StringValue::MergeFrom(from.string_field());
      break;
    }
    case kBytesField: {
      mutable_bytes_field()->::google::protobuf::BytesValue::MergeFrom(from.bytes_field());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
}

void OneofWellKnownTypes::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:protobuf_unittest.OneofWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void OneofWellKnownTypes::CopyFrom(const OneofWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.OneofWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OneofWellKnownTypes::IsInitialized() const {
  return true;
}

void OneofWellKnownTypes::Swap(OneofWellKnownTypes* other) {
  if (other == this) return;
  InternalSwap(other);
}
void OneofWellKnownTypes::InternalSwap(OneofWellKnownTypes* other) {
  using std::swap;
  swap(oneof_field_, other->oneof_field_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata OneofWellKnownTypes::GetMetadata() const {
  protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages];
}


// ===================================================================

MapWellKnownTypes_AnyFieldEntry_DoNotUse::MapWellKnownTypes_AnyFieldEntry_DoNotUse() {}
MapWellKnownTypes_AnyFieldEntry_DoNotUse::MapWellKnownTypes_AnyFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_AnyFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_AnyFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_AnyFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[3];
}
void MapWellKnownTypes_AnyFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_ApiFieldEntry_DoNotUse::MapWellKnownTypes_ApiFieldEntry_DoNotUse() {}
MapWellKnownTypes_ApiFieldEntry_DoNotUse::MapWellKnownTypes_ApiFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_ApiFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_ApiFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_ApiFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[4];
}
void MapWellKnownTypes_ApiFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_DurationFieldEntry_DoNotUse::MapWellKnownTypes_DurationFieldEntry_DoNotUse() {}
MapWellKnownTypes_DurationFieldEntry_DoNotUse::MapWellKnownTypes_DurationFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_DurationFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_DurationFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_DurationFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[5];
}
void MapWellKnownTypes_DurationFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_EmptyFieldEntry_DoNotUse::MapWellKnownTypes_EmptyFieldEntry_DoNotUse() {}
MapWellKnownTypes_EmptyFieldEntry_DoNotUse::MapWellKnownTypes_EmptyFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_EmptyFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_EmptyFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_EmptyFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[6];
}
void MapWellKnownTypes_EmptyFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse() {}
MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[7];
}
void MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse() {}
MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_SourceContextFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[8];
}
void MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_StructFieldEntry_DoNotUse::MapWellKnownTypes_StructFieldEntry_DoNotUse() {}
MapWellKnownTypes_StructFieldEntry_DoNotUse::MapWellKnownTypes_StructFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_StructFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_StructFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_StructFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[9];
}
void MapWellKnownTypes_StructFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_TimestampFieldEntry_DoNotUse::MapWellKnownTypes_TimestampFieldEntry_DoNotUse() {}
MapWellKnownTypes_TimestampFieldEntry_DoNotUse::MapWellKnownTypes_TimestampFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_TimestampFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_TimestampFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_TimestampFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[10];
}
void MapWellKnownTypes_TimestampFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_TypeFieldEntry_DoNotUse::MapWellKnownTypes_TypeFieldEntry_DoNotUse() {}
MapWellKnownTypes_TypeFieldEntry_DoNotUse::MapWellKnownTypes_TypeFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_TypeFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_TypeFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_TypeFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[11];
}
void MapWellKnownTypes_TypeFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_DoubleFieldEntry_DoNotUse::MapWellKnownTypes_DoubleFieldEntry_DoNotUse() {}
MapWellKnownTypes_DoubleFieldEntry_DoNotUse::MapWellKnownTypes_DoubleFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_DoubleFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_DoubleFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_DoubleFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[12];
}
void MapWellKnownTypes_DoubleFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_FloatFieldEntry_DoNotUse::MapWellKnownTypes_FloatFieldEntry_DoNotUse() {}
MapWellKnownTypes_FloatFieldEntry_DoNotUse::MapWellKnownTypes_FloatFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_FloatFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_FloatFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_FloatFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[13];
}
void MapWellKnownTypes_FloatFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_Int64FieldEntry_DoNotUse::MapWellKnownTypes_Int64FieldEntry_DoNotUse() {}
MapWellKnownTypes_Int64FieldEntry_DoNotUse::MapWellKnownTypes_Int64FieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_Int64FieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_Int64FieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_Int64FieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[14];
}
void MapWellKnownTypes_Int64FieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_Uint64FieldEntry_DoNotUse::MapWellKnownTypes_Uint64FieldEntry_DoNotUse() {}
MapWellKnownTypes_Uint64FieldEntry_DoNotUse::MapWellKnownTypes_Uint64FieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_Uint64FieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_Uint64FieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_Uint64FieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[15];
}
void MapWellKnownTypes_Uint64FieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_Int32FieldEntry_DoNotUse::MapWellKnownTypes_Int32FieldEntry_DoNotUse() {}
MapWellKnownTypes_Int32FieldEntry_DoNotUse::MapWellKnownTypes_Int32FieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_Int32FieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_Int32FieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_Int32FieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[16];
}
void MapWellKnownTypes_Int32FieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_Uint32FieldEntry_DoNotUse::MapWellKnownTypes_Uint32FieldEntry_DoNotUse() {}
MapWellKnownTypes_Uint32FieldEntry_DoNotUse::MapWellKnownTypes_Uint32FieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_Uint32FieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_Uint32FieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_Uint32FieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[17];
}
void MapWellKnownTypes_Uint32FieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_BoolFieldEntry_DoNotUse::MapWellKnownTypes_BoolFieldEntry_DoNotUse() {}
MapWellKnownTypes_BoolFieldEntry_DoNotUse::MapWellKnownTypes_BoolFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_BoolFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_BoolFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_BoolFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[18];
}
void MapWellKnownTypes_BoolFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_StringFieldEntry_DoNotUse::MapWellKnownTypes_StringFieldEntry_DoNotUse() {}
MapWellKnownTypes_StringFieldEntry_DoNotUse::MapWellKnownTypes_StringFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_StringFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_StringFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_StringFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[19];
}
void MapWellKnownTypes_StringFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

MapWellKnownTypes_BytesFieldEntry_DoNotUse::MapWellKnownTypes_BytesFieldEntry_DoNotUse() {}
MapWellKnownTypes_BytesFieldEntry_DoNotUse::MapWellKnownTypes_BytesFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void MapWellKnownTypes_BytesFieldEntry_DoNotUse::MergeFrom(const MapWellKnownTypes_BytesFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::google::protobuf::Metadata MapWellKnownTypes_BytesFieldEntry_DoNotUse::GetMetadata() const {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[20];
}
void MapWellKnownTypes_BytesFieldEntry_DoNotUse::MergeFrom(
    const ::google::protobuf::Message& other) {
  ::google::protobuf::Message::MergeFrom(other);
}


// ===================================================================

void MapWellKnownTypes::InitAsDefaultInstance() {
}
void MapWellKnownTypes::clear_any_field() {
  any_field_.Clear();
}
void MapWellKnownTypes::clear_api_field() {
  api_field_.Clear();
}
void MapWellKnownTypes::clear_duration_field() {
  duration_field_.Clear();
}
void MapWellKnownTypes::clear_empty_field() {
  empty_field_.Clear();
}
void MapWellKnownTypes::clear_field_mask_field() {
  field_mask_field_.Clear();
}
void MapWellKnownTypes::clear_source_context_field() {
  source_context_field_.Clear();
}
void MapWellKnownTypes::clear_struct_field() {
  struct_field_.Clear();
}
void MapWellKnownTypes::clear_timestamp_field() {
  timestamp_field_.Clear();
}
void MapWellKnownTypes::clear_type_field() {
  type_field_.Clear();
}
void MapWellKnownTypes::clear_double_field() {
  double_field_.Clear();
}
void MapWellKnownTypes::clear_float_field() {
  float_field_.Clear();
}
void MapWellKnownTypes::clear_int64_field() {
  int64_field_.Clear();
}
void MapWellKnownTypes::clear_uint64_field() {
  uint64_field_.Clear();
}
void MapWellKnownTypes::clear_int32_field() {
  int32_field_.Clear();
}
void MapWellKnownTypes::clear_uint32_field() {
  uint32_field_.Clear();
}
void MapWellKnownTypes::clear_bool_field() {
  bool_field_.Clear();
}
void MapWellKnownTypes::clear_string_field() {
  string_field_.Clear();
}
void MapWellKnownTypes::clear_bytes_field() {
  bytes_field_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MapWellKnownTypes::kAnyFieldFieldNumber;
const int MapWellKnownTypes::kApiFieldFieldNumber;
const int MapWellKnownTypes::kDurationFieldFieldNumber;
const int MapWellKnownTypes::kEmptyFieldFieldNumber;
const int MapWellKnownTypes::kFieldMaskFieldFieldNumber;
const int MapWellKnownTypes::kSourceContextFieldFieldNumber;
const int MapWellKnownTypes::kStructFieldFieldNumber;
const int MapWellKnownTypes::kTimestampFieldFieldNumber;
const int MapWellKnownTypes::kTypeFieldFieldNumber;
const int MapWellKnownTypes::kDoubleFieldFieldNumber;
const int MapWellKnownTypes::kFloatFieldFieldNumber;
const int MapWellKnownTypes::kInt64FieldFieldNumber;
const int MapWellKnownTypes::kUint64FieldFieldNumber;
const int MapWellKnownTypes::kInt32FieldFieldNumber;
const int MapWellKnownTypes::kUint32FieldFieldNumber;
const int MapWellKnownTypes::kBoolFieldFieldNumber;
const int MapWellKnownTypes::kStringFieldFieldNumber;
const int MapWellKnownTypes::kBytesFieldFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MapWellKnownTypes::MapWellKnownTypes()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.MapWellKnownTypes)
}
MapWellKnownTypes::MapWellKnownTypes(const MapWellKnownTypes& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  any_field_.MergeFrom(from.any_field_);
  api_field_.MergeFrom(from.api_field_);
  duration_field_.MergeFrom(from.duration_field_);
  empty_field_.MergeFrom(from.empty_field_);
  field_mask_field_.MergeFrom(from.field_mask_field_);
  source_context_field_.MergeFrom(from.source_context_field_);
  struct_field_.MergeFrom(from.struct_field_);
  timestamp_field_.MergeFrom(from.timestamp_field_);
  type_field_.MergeFrom(from.type_field_);
  double_field_.MergeFrom(from.double_field_);
  float_field_.MergeFrom(from.float_field_);
  int64_field_.MergeFrom(from.int64_field_);
  uint64_field_.MergeFrom(from.uint64_field_);
  int32_field_.MergeFrom(from.int32_field_);
  uint32_field_.MergeFrom(from.uint32_field_);
  bool_field_.MergeFrom(from.bool_field_);
  string_field_.MergeFrom(from.string_field_);
  bytes_field_.MergeFrom(from.bytes_field_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.MapWellKnownTypes)
}

void MapWellKnownTypes::SharedCtor() {
}

MapWellKnownTypes::~MapWellKnownTypes() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.MapWellKnownTypes)
  SharedDtor();
}

void MapWellKnownTypes::SharedDtor() {
}

void MapWellKnownTypes::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* MapWellKnownTypes::descriptor() {
  ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const MapWellKnownTypes& MapWellKnownTypes::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::scc_info_MapWellKnownTypes.base);
  return *internal_default_instance();
}


void MapWellKnownTypes::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.MapWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  any_field_.Clear();
  api_field_.Clear();
  duration_field_.Clear();
  empty_field_.Clear();
  field_mask_field_.Clear();
  source_context_field_.Clear();
  struct_field_.Clear();
  timestamp_field_.Clear();
  type_field_.Clear();
  double_field_.Clear();
  float_field_.Clear();
  int64_field_.Clear();
  uint64_field_.Clear();
  int32_field_.Clear();
  uint32_field_.Clear();
  bool_field_.Clear();
  string_field_.Clear();
  bytes_field_.Clear();
  _internal_metadata_.Clear();
}

bool MapWellKnownTypes::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.MapWellKnownTypes)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .google.protobuf.Any> any_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          MapWellKnownTypes_AnyFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_AnyFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Any,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any > > parser(&any_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Api> api_field = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          MapWellKnownTypes_ApiFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_ApiFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Api,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api > > parser(&api_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Duration> duration_field = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          MapWellKnownTypes_DurationFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_DurationFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Duration,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration > > parser(&duration_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Empty> empty_field = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          MapWellKnownTypes_EmptyFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_EmptyFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Empty,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty > > parser(&empty_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.FieldMask> field_mask_field = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::FieldMask,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask > > parser(&field_mask_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.SourceContext> source_context_field = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          MapWellKnownTypes_SourceContextFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_SourceContextFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::SourceContext,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext > > parser(&source_context_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Struct> struct_field = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          MapWellKnownTypes_StructFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_StructFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Struct,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct > > parser(&struct_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Timestamp> timestamp_field = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          MapWellKnownTypes_TimestampFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_TimestampFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Timestamp,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp > > parser(&timestamp_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Type> type_field = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          MapWellKnownTypes_TypeFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_TypeFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Type,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type > > parser(&type_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.DoubleValue> double_field = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          MapWellKnownTypes_DoubleFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_DoubleFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::DoubleValue,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue > > parser(&double_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.FloatValue> float_field = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          MapWellKnownTypes_FloatFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_FloatFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::FloatValue,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue > > parser(&float_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Int64Value> int64_field = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          MapWellKnownTypes_Int64FieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_Int64FieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Int64Value,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value > > parser(&int64_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.UInt64Value> uint64_field = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          MapWellKnownTypes_Uint64FieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_Uint64FieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::UInt64Value,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value > > parser(&uint64_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.Int32Value> int32_field = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          MapWellKnownTypes_Int32FieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_Int32FieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::Int32Value,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value > > parser(&int32_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.UInt32Value> uint32_field = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          MapWellKnownTypes_Uint32FieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_Uint32FieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::UInt32Value,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value > > parser(&uint32_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.BoolValue> bool_field = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          MapWellKnownTypes_BoolFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_BoolFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::BoolValue,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue > > parser(&bool_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.StringValue> string_field = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          MapWellKnownTypes_StringFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_StringFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::StringValue,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue > > parser(&string_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .google.protobuf.BytesValue> bytes_field = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          MapWellKnownTypes_BytesFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapWellKnownTypes_BytesFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::BytesValue,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue > > parser(&bytes_field_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.MapWellKnownTypes)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.MapWellKnownTypes)
  return false;
#undef DO_
}

void MapWellKnownTypes::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:protobuf_unittest.MapWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // map<int32, .google.protobuf.Any> any_field = 1;
  if (!this->any_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->any_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->any_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_iterator
          it = this->any_field().begin();
          it != this->any_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_AnyFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(any_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_AnyFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_iterator
          it = this->any_field().begin();
          it != this->any_field().end(); ++it) {
        entry.reset(any_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Api> api_field = 2;
  if (!this->api_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->api_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->api_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_iterator
          it = this->api_field().begin();
          it != this->api_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_ApiFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(api_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_ApiFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_iterator
          it = this->api_field().begin();
          it != this->api_field().end(); ++it) {
        entry.reset(api_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Duration> duration_field = 3;
  if (!this->duration_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->duration_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->duration_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_iterator
          it = this->duration_field().begin();
          it != this->duration_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_DurationFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(duration_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_DurationFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_iterator
          it = this->duration_field().begin();
          it != this->duration_field().end(); ++it) {
        entry.reset(duration_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Empty> empty_field = 4;
  if (!this->empty_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->empty_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->empty_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_iterator
          it = this->empty_field().begin();
          it != this->empty_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_EmptyFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(empty_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_EmptyFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_iterator
          it = this->empty_field().begin();
          it != this->empty_field().end(); ++it) {
        entry.reset(empty_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.FieldMask> field_mask_field = 5;
  if (!this->field_mask_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->field_mask_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->field_mask_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_iterator
          it = this->field_mask_field().begin();
          it != this->field_mask_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(field_mask_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            5, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_iterator
          it = this->field_mask_field().begin();
          it != this->field_mask_field().end(); ++it) {
        entry.reset(field_mask_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            5, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.SourceContext> source_context_field = 6;
  if (!this->source_context_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->source_context_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->source_context_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_iterator
          it = this->source_context_field().begin();
          it != this->source_context_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(source_context_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_iterator
          it = this->source_context_field().begin();
          it != this->source_context_field().end(); ++it) {
        entry.reset(source_context_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Struct> struct_field = 7;
  if (!this->struct_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->struct_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->struct_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_iterator
          it = this->struct_field().begin();
          it != this->struct_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_StructFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(struct_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_StructFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_iterator
          it = this->struct_field().begin();
          it != this->struct_field().end(); ++it) {
        entry.reset(struct_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Timestamp> timestamp_field = 8;
  if (!this->timestamp_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->timestamp_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->timestamp_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_iterator
          it = this->timestamp_field().begin();
          it != this->timestamp_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_TimestampFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(timestamp_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_TimestampFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_iterator
          it = this->timestamp_field().begin();
          it != this->timestamp_field().end(); ++it) {
        entry.reset(timestamp_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Type> type_field = 9;
  if (!this->type_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->type_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->type_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_iterator
          it = this->type_field().begin();
          it != this->type_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_TypeFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(type_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            9, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_TypeFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_iterator
          it = this->type_field().begin();
          it != this->type_field().end(); ++it) {
        entry.reset(type_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            9, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.DoubleValue> double_field = 10;
  if (!this->double_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->double_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->double_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_iterator
          it = this->double_field().begin();
          it != this->double_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_DoubleFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(double_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_DoubleFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_iterator
          it = this->double_field().begin();
          it != this->double_field().end(); ++it) {
        entry.reset(double_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.FloatValue> float_field = 11;
  if (!this->float_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->float_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->float_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_iterator
          it = this->float_field().begin();
          it != this->float_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_FloatFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(float_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            11, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_FloatFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_iterator
          it = this->float_field().begin();
          it != this->float_field().end(); ++it) {
        entry.reset(float_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            11, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Int64Value> int64_field = 12;
  if (!this->int64_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->int64_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->int64_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_iterator
          it = this->int64_field().begin();
          it != this->int64_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Int64FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(int64_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            12, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Int64FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_iterator
          it = this->int64_field().begin();
          it != this->int64_field().end(); ++it) {
        entry.reset(int64_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            12, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.UInt64Value> uint64_field = 13;
  if (!this->uint64_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->uint64_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->uint64_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_iterator
          it = this->uint64_field().begin();
          it != this->uint64_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Uint64FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(uint64_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Uint64FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_iterator
          it = this->uint64_field().begin();
          it != this->uint64_field().end(); ++it) {
        entry.reset(uint64_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.Int32Value> int32_field = 14;
  if (!this->int32_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->int32_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->int32_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_iterator
          it = this->int32_field().begin();
          it != this->int32_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Int32FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(int32_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Int32FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_iterator
          it = this->int32_field().begin();
          it != this->int32_field().end(); ++it) {
        entry.reset(int32_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.UInt32Value> uint32_field = 15;
  if (!this->uint32_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->uint32_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->uint32_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_iterator
          it = this->uint32_field().begin();
          it != this->uint32_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Uint32FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(uint32_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            15, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Uint32FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_iterator
          it = this->uint32_field().begin();
          it != this->uint32_field().end(); ++it) {
        entry.reset(uint32_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            15, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.BoolValue> bool_field = 16;
  if (!this->bool_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->bool_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->bool_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_iterator
          it = this->bool_field().begin();
          it != this->bool_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_BoolFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(bool_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_BoolFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_iterator
          it = this->bool_field().begin();
          it != this->bool_field().end(); ++it) {
        entry.reset(bool_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.StringValue> string_field = 17;
  if (!this->string_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->string_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->string_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_iterator
          it = this->string_field().begin();
          it != this->string_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_StringFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(string_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            17, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_StringFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_iterator
          it = this->string_field().begin();
          it != this->string_field().end(); ++it) {
        entry.reset(string_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            17, *entry, output);
      }
    }
  }

  // map<int32, .google.protobuf.BytesValue> bytes_field = 18;
  if (!this->bytes_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (output->IsSerializationDeterministic() &&
        this->bytes_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->bytes_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_iterator
          it = this->bytes_field().begin();
          it != this->bytes_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_BytesFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(bytes_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            18, *entry, output);
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_BytesFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_iterator
          it = this->bytes_field().begin();
          it != this->bytes_field().end(); ++it) {
        entry.reset(bytes_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            18, *entry, output);
      }
    }
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.MapWellKnownTypes)
}

::google::protobuf::uint8* MapWellKnownTypes::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:protobuf_unittest.MapWellKnownTypes)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // map<int32, .google.protobuf.Any> any_field = 1;
  if (!this->any_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->any_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->any_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_iterator
          it = this->any_field().begin();
          it != this->any_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_AnyFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(any_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_AnyFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_iterator
          it = this->any_field().begin();
          it != this->any_field().end(); ++it) {
        entry.reset(any_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Api> api_field = 2;
  if (!this->api_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->api_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->api_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_iterator
          it = this->api_field().begin();
          it != this->api_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_ApiFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(api_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_ApiFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_iterator
          it = this->api_field().begin();
          it != this->api_field().end(); ++it) {
        entry.reset(api_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Duration> duration_field = 3;
  if (!this->duration_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->duration_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->duration_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_iterator
          it = this->duration_field().begin();
          it != this->duration_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_DurationFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(duration_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_DurationFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_iterator
          it = this->duration_field().begin();
          it != this->duration_field().end(); ++it) {
        entry.reset(duration_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Empty> empty_field = 4;
  if (!this->empty_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->empty_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->empty_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_iterator
          it = this->empty_field().begin();
          it != this->empty_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_EmptyFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(empty_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_EmptyFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_iterator
          it = this->empty_field().begin();
          it != this->empty_field().end(); ++it) {
        entry.reset(empty_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.FieldMask> field_mask_field = 5;
  if (!this->field_mask_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->field_mask_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->field_mask_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_iterator
          it = this->field_mask_field().begin();
          it != this->field_mask_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(field_mask_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       5, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_iterator
          it = this->field_mask_field().begin();
          it != this->field_mask_field().end(); ++it) {
        entry.reset(field_mask_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       5, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.SourceContext> source_context_field = 6;
  if (!this->source_context_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->source_context_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->source_context_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_iterator
          it = this->source_context_field().begin();
          it != this->source_context_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(source_context_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_iterator
          it = this->source_context_field().begin();
          it != this->source_context_field().end(); ++it) {
        entry.reset(source_context_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Struct> struct_field = 7;
  if (!this->struct_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->struct_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->struct_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_iterator
          it = this->struct_field().begin();
          it != this->struct_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_StructFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(struct_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_StructFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_iterator
          it = this->struct_field().begin();
          it != this->struct_field().end(); ++it) {
        entry.reset(struct_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Timestamp> timestamp_field = 8;
  if (!this->timestamp_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->timestamp_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->timestamp_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_iterator
          it = this->timestamp_field().begin();
          it != this->timestamp_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_TimestampFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(timestamp_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_TimestampFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_iterator
          it = this->timestamp_field().begin();
          it != this->timestamp_field().end(); ++it) {
        entry.reset(timestamp_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Type> type_field = 9;
  if (!this->type_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->type_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->type_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_iterator
          it = this->type_field().begin();
          it != this->type_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_TypeFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(type_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       9, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_TypeFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_iterator
          it = this->type_field().begin();
          it != this->type_field().end(); ++it) {
        entry.reset(type_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       9, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.DoubleValue> double_field = 10;
  if (!this->double_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->double_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->double_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_iterator
          it = this->double_field().begin();
          it != this->double_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_DoubleFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(double_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_DoubleFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_iterator
          it = this->double_field().begin();
          it != this->double_field().end(); ++it) {
        entry.reset(double_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.FloatValue> float_field = 11;
  if (!this->float_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->float_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->float_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_iterator
          it = this->float_field().begin();
          it != this->float_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_FloatFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(float_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       11, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_FloatFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_iterator
          it = this->float_field().begin();
          it != this->float_field().end(); ++it) {
        entry.reset(float_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       11, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Int64Value> int64_field = 12;
  if (!this->int64_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->int64_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->int64_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_iterator
          it = this->int64_field().begin();
          it != this->int64_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Int64FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(int64_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       12, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Int64FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_iterator
          it = this->int64_field().begin();
          it != this->int64_field().end(); ++it) {
        entry.reset(int64_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       12, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.UInt64Value> uint64_field = 13;
  if (!this->uint64_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->uint64_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->uint64_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_iterator
          it = this->uint64_field().begin();
          it != this->uint64_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Uint64FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(uint64_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Uint64FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_iterator
          it = this->uint64_field().begin();
          it != this->uint64_field().end(); ++it) {
        entry.reset(uint64_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.Int32Value> int32_field = 14;
  if (!this->int32_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->int32_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->int32_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_iterator
          it = this->int32_field().begin();
          it != this->int32_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Int32FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(int32_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Int32FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_iterator
          it = this->int32_field().begin();
          it != this->int32_field().end(); ++it) {
        entry.reset(int32_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.UInt32Value> uint32_field = 15;
  if (!this->uint32_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->uint32_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->uint32_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_iterator
          it = this->uint32_field().begin();
          it != this->uint32_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_Uint32FieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(uint32_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       15, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_Uint32FieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_iterator
          it = this->uint32_field().begin();
          it != this->uint32_field().end(); ++it) {
        entry.reset(uint32_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       15, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.BoolValue> bool_field = 16;
  if (!this->bool_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->bool_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->bool_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_iterator
          it = this->bool_field().begin();
          it != this->bool_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_BoolFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(bool_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       16, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_BoolFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_iterator
          it = this->bool_field().begin();
          it != this->bool_field().end(); ++it) {
        entry.reset(bool_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       16, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.StringValue> string_field = 17;
  if (!this->string_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->string_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->string_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_iterator
          it = this->string_field().begin();
          it != this->string_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_StringFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(string_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       17, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_StringFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_iterator
          it = this->string_field().begin();
          it != this->string_field().end(); ++it) {
        entry.reset(string_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       17, *entry, deterministic, target);
;
      }
    }
  }

  // map<int32, .google.protobuf.BytesValue> bytes_field = 18;
  if (!this->bytes_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;

    if (deterministic &&
        this->bytes_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->bytes_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_iterator
          it = this->bytes_field().begin();
          it != this->bytes_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<MapWellKnownTypes_BytesFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(bytes_field_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       18, *entry, deterministic, target);
;
      }
    } else {
      ::std::unique_ptr<MapWellKnownTypes_BytesFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_iterator
          it = this->bytes_field().begin();
          it != this->bytes_field().end(); ++it) {
        entry.reset(bytes_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       18, *entry, deterministic, target);
;
      }
    }
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.MapWellKnownTypes)
  return target;
}

size_t MapWellKnownTypes::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.MapWellKnownTypes)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // map<int32, .google.protobuf.Any> any_field = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->any_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_AnyFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Any >::const_iterator
        it = this->any_field().begin();
        it != this->any_field().end(); ++it) {
      entry.reset(any_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Api> api_field = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->api_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_ApiFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Api >::const_iterator
        it = this->api_field().begin();
        it != this->api_field().end(); ++it) {
      entry.reset(api_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Duration> duration_field = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->duration_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_DurationFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Duration >::const_iterator
        it = this->duration_field().begin();
        it != this->duration_field().end(); ++it) {
      entry.reset(duration_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Empty> empty_field = 4;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->empty_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_EmptyFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Empty >::const_iterator
        it = this->empty_field().begin();
        it != this->empty_field().end(); ++it) {
      entry.reset(empty_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.FieldMask> field_mask_field = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->field_mask_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FieldMask >::const_iterator
        it = this->field_mask_field().begin();
        it != this->field_mask_field().end(); ++it) {
      entry.reset(field_mask_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.SourceContext> source_context_field = 6;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->source_context_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_SourceContextFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::SourceContext >::const_iterator
        it = this->source_context_field().begin();
        it != this->source_context_field().end(); ++it) {
      entry.reset(source_context_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Struct> struct_field = 7;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->struct_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_StructFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Struct >::const_iterator
        it = this->struct_field().begin();
        it != this->struct_field().end(); ++it) {
      entry.reset(struct_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Timestamp> timestamp_field = 8;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->timestamp_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_TimestampFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Timestamp >::const_iterator
        it = this->timestamp_field().begin();
        it != this->timestamp_field().end(); ++it) {
      entry.reset(timestamp_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Type> type_field = 9;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->type_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_TypeFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Type >::const_iterator
        it = this->type_field().begin();
        it != this->type_field().end(); ++it) {
      entry.reset(type_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.DoubleValue> double_field = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->double_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_DoubleFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::DoubleValue >::const_iterator
        it = this->double_field().begin();
        it != this->double_field().end(); ++it) {
      entry.reset(double_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.FloatValue> float_field = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->float_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_FloatFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::FloatValue >::const_iterator
        it = this->float_field().begin();
        it != this->float_field().end(); ++it) {
      entry.reset(float_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Int64Value> int64_field = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->int64_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_Int64FieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int64Value >::const_iterator
        it = this->int64_field().begin();
        it != this->int64_field().end(); ++it) {
      entry.reset(int64_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.UInt64Value> uint64_field = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->uint64_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_Uint64FieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt64Value >::const_iterator
        it = this->uint64_field().begin();
        it != this->uint64_field().end(); ++it) {
      entry.reset(uint64_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.Int32Value> int32_field = 14;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->int32_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_Int32FieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::Int32Value >::const_iterator
        it = this->int32_field().begin();
        it != this->int32_field().end(); ++it) {
      entry.reset(int32_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.UInt32Value> uint32_field = 15;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->uint32_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_Uint32FieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::UInt32Value >::const_iterator
        it = this->uint32_field().begin();
        it != this->uint32_field().end(); ++it) {
      entry.reset(uint32_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.BoolValue> bool_field = 16;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->bool_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_BoolFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BoolValue >::const_iterator
        it = this->bool_field().begin();
        it != this->bool_field().end(); ++it) {
      entry.reset(bool_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.StringValue> string_field = 17;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->string_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_StringFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::StringValue >::const_iterator
        it = this->string_field().begin();
        it != this->string_field().end(); ++it) {
      entry.reset(string_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<int32, .google.protobuf.BytesValue> bytes_field = 18;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->bytes_field_size());
  {
    ::std::unique_ptr<MapWellKnownTypes_BytesFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::BytesValue >::const_iterator
        it = this->bytes_field().begin();
        it != this->bytes_field().end(); ++it) {
      entry.reset(bytes_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MapWellKnownTypes::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:protobuf_unittest.MapWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  const MapWellKnownTypes* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const MapWellKnownTypes>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:protobuf_unittest.MapWellKnownTypes)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:protobuf_unittest.MapWellKnownTypes)
    MergeFrom(*source);
  }
}

void MapWellKnownTypes::MergeFrom(const MapWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.MapWellKnownTypes)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  any_field_.MergeFrom(from.any_field_);
  api_field_.MergeFrom(from.api_field_);
  duration_field_.MergeFrom(from.duration_field_);
  empty_field_.MergeFrom(from.empty_field_);
  field_mask_field_.MergeFrom(from.field_mask_field_);
  source_context_field_.MergeFrom(from.source_context_field_);
  struct_field_.MergeFrom(from.struct_field_);
  timestamp_field_.MergeFrom(from.timestamp_field_);
  type_field_.MergeFrom(from.type_field_);
  double_field_.MergeFrom(from.double_field_);
  float_field_.MergeFrom(from.float_field_);
  int64_field_.MergeFrom(from.int64_field_);
  uint64_field_.MergeFrom(from.uint64_field_);
  int32_field_.MergeFrom(from.int32_field_);
  uint32_field_.MergeFrom(from.uint32_field_);
  bool_field_.MergeFrom(from.bool_field_);
  string_field_.MergeFrom(from.string_field_);
  bytes_field_.MergeFrom(from.bytes_field_);
}

void MapWellKnownTypes::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:protobuf_unittest.MapWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void MapWellKnownTypes::CopyFrom(const MapWellKnownTypes& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.MapWellKnownTypes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MapWellKnownTypes::IsInitialized() const {
  return true;
}

void MapWellKnownTypes::Swap(MapWellKnownTypes* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapWellKnownTypes::InternalSwap(MapWellKnownTypes* other) {
  using std::swap;
  any_field_.Swap(&other->any_field_);
  api_field_.Swap(&other->api_field_);
  duration_field_.Swap(&other->duration_field_);
  empty_field_.Swap(&other->empty_field_);
  field_mask_field_.Swap(&other->field_mask_field_);
  source_context_field_.Swap(&other->source_context_field_);
  struct_field_.Swap(&other->struct_field_);
  timestamp_field_.Swap(&other->timestamp_field_);
  type_field_.Swap(&other->type_field_);
  double_field_.Swap(&other->double_field_);
  float_field_.Swap(&other->float_field_);
  int64_field_.Swap(&other->int64_field_);
  uint64_field_.Swap(&other->uint64_field_);
  int32_field_.Swap(&other->int32_field_);
  uint32_field_.Swap(&other->uint32_field_);
  bool_field_.Swap(&other->bool_field_);
  string_field_.Swap(&other->string_field_);
  bytes_field_.Swap(&other->bytes_field_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata MapWellKnownTypes::GetMetadata() const {
  protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2funittest_5fwell_5fknown_5ftypes_2eproto::file_level_metadata[kIndexInFileMessages];
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestWellKnownTypes* Arena::CreateMaybeMessage< ::protobuf_unittest::TestWellKnownTypes >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestWellKnownTypes >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::RepeatedWellKnownTypes* Arena::CreateMaybeMessage< ::protobuf_unittest::RepeatedWellKnownTypes >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::RepeatedWellKnownTypes >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::OneofWellKnownTypes* Arena::CreateMaybeMessage< ::protobuf_unittest::OneofWellKnownTypes >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::OneofWellKnownTypes >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_AnyFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_ApiFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_DurationFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_EmptyFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_FieldMaskFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_SourceContextFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_StructFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_TimestampFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_TypeFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_DoubleFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_FloatFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_Int64FieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_Uint64FieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_Int32FieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_Uint32FieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_BoolFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_StringFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes_BytesFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MapWellKnownTypes* Arena::CreateMaybeMessage< ::protobuf_unittest::MapWellKnownTypes >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::MapWellKnownTypes >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
