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

#include <google/protobuf/map_unittest.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_2fmap_5funittest_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MessageContainingEnumCalledType;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MessageContainingMapCalledEntry_EntryEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapBoolBoolEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32BytesEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32DoubleEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32EnumEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32FloatEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32Int32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt64Int64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSint32Sint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSint64Sint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapStringStringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapUint32Uint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapUint64Uint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapBoolBoolEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapFixed32Fixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapFixed64Fixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32BytesEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32DoubleEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32EnumEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32FloatEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32Int32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt64Int64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSfixed32Sfixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSfixed64Sfixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSint32Sint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSint64Sint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapStringStringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapUint32Uint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapUint64Uint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestRecursiveMapMessage;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestSameTypeMap_Map1Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestSameTypeMap_Map2Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<19> scc_info_TestMap;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapInt32AllTypesEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapInt32ForeignMessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapStringForeignMessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMap_MapInt32MessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMap_MapFieldEntry_DoNotUse;
}  // namespace protobuf_google_2fprotobuf_2fmap_5funittest_2eproto
namespace protobuf_google_2fprotobuf_2funittest_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ForeignMessage;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestRequired;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_TestAllTypes;
}  // namespace protobuf_google_2fprotobuf_2funittest_2eproto
namespace protobuf_google_2fprotobuf_2funittest_5fno_5farena_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fno_5farena_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ForeignMessage;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fno_5farena_2eproto
namespace protobuf_unittest {
class TestMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32Int32Entry_DoNotUse>
      _instance;
} _TestMap_MapInt32Int32Entry_DoNotUse_default_instance_;
class TestMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt64Int64Entry_DoNotUse>
      _instance;
} _TestMap_MapInt64Int64Entry_DoNotUse_default_instance_;
class TestMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapUint32Uint32Entry_DoNotUse>
      _instance;
} _TestMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
class TestMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapUint64Uint64Entry_DoNotUse>
      _instance;
} _TestMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
class TestMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapSint32Sint32Entry_DoNotUse>
      _instance;
} _TestMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
class TestMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapSint64Sint64Entry_DoNotUse>
      _instance;
} _TestMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
class TestMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapFixed32Fixed32Entry_DoNotUse>
      _instance;
} _TestMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
class TestMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapFixed64Fixed64Entry_DoNotUse>
      _instance;
} _TestMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
class TestMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapSfixed32Sfixed32Entry_DoNotUse>
      _instance;
} _TestMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
class TestMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapSfixed64Sfixed64Entry_DoNotUse>
      _instance;
} _TestMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
class TestMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32FloatEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32FloatEntry_DoNotUse_default_instance_;
class TestMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32DoubleEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
class TestMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapBoolBoolEntry_DoNotUse>
      _instance;
} _TestMap_MapBoolBoolEntry_DoNotUse_default_instance_;
class TestMap_MapStringStringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapStringStringEntry_DoNotUse>
      _instance;
} _TestMap_MapStringStringEntry_DoNotUse_default_instance_;
class TestMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32BytesEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32BytesEntry_DoNotUse_default_instance_;
class TestMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32EnumEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32EnumEntry_DoNotUse_default_instance_;
class TestMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32ForeignMessageEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
class TestMap_MapStringForeignMessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapStringForeignMessageEntry_DoNotUse>
      _instance;
} _TestMap_MapStringForeignMessageEntry_DoNotUse_default_instance_;
class TestMap_MapInt32AllTypesEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap_MapInt32AllTypesEntry_DoNotUse>
      _instance;
} _TestMap_MapInt32AllTypesEntry_DoNotUse_default_instance_;
class TestMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMap>
      _instance;
} _TestMap_default_instance_;
class TestMapSubmessageDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapSubmessage>
      _instance;
} _TestMapSubmessage_default_instance_;
class TestMessageMap_MapInt32MessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMessageMap_MapInt32MessageEntry_DoNotUse>
      _instance;
} _TestMessageMap_MapInt32MessageEntry_DoNotUse_default_instance_;
class TestMessageMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMessageMap>
      _instance;
} _TestMessageMap_default_instance_;
class TestSameTypeMap_Map1Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestSameTypeMap_Map1Entry_DoNotUse>
      _instance;
} _TestSameTypeMap_Map1Entry_DoNotUse_default_instance_;
class TestSameTypeMap_Map2Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestSameTypeMap_Map2Entry_DoNotUse>
      _instance;
} _TestSameTypeMap_Map2Entry_DoNotUse_default_instance_;
class TestSameTypeMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestSameTypeMap>
      _instance;
} _TestSameTypeMap_default_instance_;
class TestRequiredMessageMap_MapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRequiredMessageMap_MapFieldEntry_DoNotUse>
      _instance;
} _TestRequiredMessageMap_MapFieldEntry_DoNotUse_default_instance_;
class TestRequiredMessageMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRequiredMessageMap>
      _instance;
} _TestRequiredMessageMap_default_instance_;
class TestArenaMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32Int32Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32Int32Entry_DoNotUse_default_instance_;
class TestArenaMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt64Int64Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt64Int64Entry_DoNotUse_default_instance_;
class TestArenaMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapUint32Uint32Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
class TestArenaMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapUint64Uint64Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
class TestArenaMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapSint32Sint32Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
class TestArenaMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapSint64Sint64Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
class TestArenaMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
class TestArenaMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
class TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
class TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse>
      _instance;
} _TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32FloatEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32FloatEntry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32DoubleEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
class TestArenaMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapBoolBoolEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapBoolBoolEntry_DoNotUse_default_instance_;
class TestArenaMap_MapStringStringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapStringStringEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapStringStringEntry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32BytesEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32BytesEntry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32EnumEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32EnumEntry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
class TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse>
      _instance;
} _TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_;
class TestArenaMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMap>
      _instance;
} _TestArenaMap_default_instance_;
class MessageContainingEnumCalledType_TypeEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MessageContainingEnumCalledType_TypeEntry_DoNotUse>
      _instance;
} _MessageContainingEnumCalledType_TypeEntry_DoNotUse_default_instance_;
class MessageContainingEnumCalledTypeDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MessageContainingEnumCalledType>
      _instance;
} _MessageContainingEnumCalledType_default_instance_;
class MessageContainingMapCalledEntry_EntryEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MessageContainingMapCalledEntry_EntryEntry_DoNotUse>
      _instance;
} _MessageContainingMapCalledEntry_EntryEntry_DoNotUse_default_instance_;
class MessageContainingMapCalledEntryDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MessageContainingMapCalledEntry>
      _instance;
} _MessageContainingMapCalledEntry_default_instance_;
class TestRecursiveMapMessage_AEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRecursiveMapMessage_AEntry_DoNotUse>
      _instance;
} _TestRecursiveMapMessage_AEntry_DoNotUse_default_instance_;
class TestRecursiveMapMessageDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRecursiveMapMessage>
      _instance;
} _TestRecursiveMapMessage_default_instance_;
}  // namespace protobuf_unittest
namespace protobuf_google_2fprotobuf_2fmap_5funittest_2eproto {
static void InitDefaultsTestMap_MapInt32Int32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32Int32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32Int32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt32Int32Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt64Int64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt64Int64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt64Int64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt64Int64Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapUint32Uint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapUint32Uint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapUint32Uint32Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapUint64Uint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapUint64Uint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapUint64Uint64Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapSint32Sint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSint32Sint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapSint32Sint32Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapSint64Sint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSint64Sint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapSint64Sint64Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapFixed32Fixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapFixed32Fixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapFixed32Fixed32Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapFixed64Fixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapFixed64Fixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapFixed64Fixed64Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapSfixed32Sfixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSfixed32Sfixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapSfixed32Sfixed32Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapSfixed64Sfixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapSfixed64Sfixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapSfixed64Sfixed64Entry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt32FloatEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32FloatEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32FloatEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt32FloatEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt32DoubleEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32DoubleEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt32DoubleEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapBoolBoolEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapBoolBoolEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapBoolBoolEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapBoolBoolEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapStringStringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapStringStringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapStringStringEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapStringStringEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt32BytesEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32BytesEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32BytesEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt32BytesEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt32EnumEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32EnumEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestMap_MapInt32EnumEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestMap_MapInt32EnumEntry_DoNotUse}, {}};

static void InitDefaultsTestMap_MapInt32ForeignMessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapInt32ForeignMessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMap_MapInt32ForeignMessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_ForeignMessage.base,}};

static void InitDefaultsTestMap_MapStringForeignMessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapStringForeignMessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapStringForeignMessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMap_MapStringForeignMessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_ForeignMessage.base,}};

static void InitDefaultsTestMap_MapInt32AllTypesEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMap_MapInt32AllTypesEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMap_MapInt32AllTypesEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMap_MapInt32AllTypesEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_TestAllTypes.base,}};

static void InitDefaultsTestMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<19> scc_info_TestMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 19, InitDefaultsTestMap}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32Int32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt64Int64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapUint32Uint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapUint64Uint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapSint32Sint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapSint64Sint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapFixed32Fixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapFixed64Fixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapSfixed32Sfixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapSfixed64Sfixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32FloatEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32DoubleEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapBoolBoolEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapStringStringEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32BytesEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32EnumEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32ForeignMessageEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapStringForeignMessageEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap_MapInt32AllTypesEntry_DoNotUse.base,}};

static void InitDefaultsTestMapSubmessage() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestMapSubmessage =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMapSubmessage}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap.base,}};

static void InitDefaultsTestMessageMap_MapInt32MessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMessageMap_MapInt32MessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMap_MapInt32MessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMessageMap_MapInt32MessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_TestAllTypes.base,}};

static void InitDefaultsTestMessageMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMessageMap}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMessageMap_MapInt32MessageEntry_DoNotUse.base,}};

static void InitDefaultsTestSameTypeMap_Map1Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestSameTypeMap_Map1Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse();
  }
  ::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestSameTypeMap_Map1Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestSameTypeMap_Map1Entry_DoNotUse}, {}};

static void InitDefaultsTestSameTypeMap_Map2Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestSameTypeMap_Map2Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse();
  }
  ::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestSameTypeMap_Map2Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestSameTypeMap_Map2Entry_DoNotUse}, {}};

static void InitDefaultsTestSameTypeMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<2> scc_info_TestSameTypeMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTestSameTypeMap}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestSameTypeMap_Map1Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestSameTypeMap_Map2Entry_DoNotUse.base,}};

static void InitDefaultsTestRequiredMessageMap_MapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestRequiredMessageMap_MapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMap_MapFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestRequiredMessageMap_MapFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_TestRequired.base,}};

static void InitDefaultsTestRequiredMessageMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestRequiredMessageMap}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRequiredMessageMap_MapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestArenaMap_MapInt32Int32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32Int32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32Int32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt32Int32Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt64Int64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt64Int64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt64Int64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt64Int64Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapUint32Uint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapUint32Uint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapUint32Uint32Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapUint64Uint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapUint64Uint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapUint64Uint64Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapSint32Sint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSint32Sint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapSint32Sint32Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapSint64Sint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSint64Sint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapSint64Sint64Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapFixed32Fixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapFixed32Fixed32Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapFixed64Fixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapFixed64Fixed64Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt32FloatEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32FloatEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32FloatEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt32FloatEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt32DoubleEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32DoubleEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt32DoubleEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapBoolBoolEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapBoolBoolEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapBoolBoolEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapBoolBoolEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapStringStringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapStringStringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapStringStringEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapStringStringEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt32BytesEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32BytesEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32BytesEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt32BytesEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt32EnumEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32EnumEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMap_MapInt32EnumEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestArenaMap_MapInt32EnumEntry_DoNotUse}, {}};

static void InitDefaultsTestArenaMap_MapInt32ForeignMessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestArenaMap_MapInt32ForeignMessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_2eproto::scc_info_ForeignMessage.base,}};

static void InitDefaultsTestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_5fno_5farena_2eproto::scc_info_ForeignMessage.base,}};

static void InitDefaultsTestArenaMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<18> scc_info_TestArenaMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsTestArenaMap}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32Int32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt64Int64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapUint32Uint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapUint64Uint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapSint32Sint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapSint64Sint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32FloatEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32DoubleEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapBoolBoolEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapStringStringEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32BytesEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32EnumEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse.base,}};

static void InitDefaultsMessageContainingEnumCalledType() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MessageContainingEnumCalledType_TypeEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse();
  }
  {
    void* ptr = &::protobuf_unittest::_MessageContainingEnumCalledType_default_instance_;
    new (ptr) ::protobuf_unittest::MessageContainingEnumCalledType();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse::InitAsDefaultInstance();
  ::protobuf_unittest::MessageContainingEnumCalledType::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_MessageContainingEnumCalledType =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMessageContainingEnumCalledType}, {}};

static void InitDefaultsMessageContainingMapCalledEntry_EntryEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_MessageContainingMapCalledEntry_EntryEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse();
  }
  ::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_MessageContainingMapCalledEntry_EntryEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMessageContainingMapCalledEntry_EntryEntry_DoNotUse}, {}};

static void InitDefaultsMessageContainingMapCalledEntry() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_MessageContainingMapCalledEntry =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMessageContainingMapCalledEntry}, {
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingMapCalledEntry_EntryEntry_DoNotUse.base,}};

static void InitDefaultsTestRecursiveMapMessage() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestRecursiveMapMessage_AEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse();
  }
  {
    void* ptr = &::protobuf_unittest::_TestRecursiveMapMessage_default_instance_;
    new (ptr) ::protobuf_unittest::TestRecursiveMapMessage();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse::InitAsDefaultInstance();
  ::protobuf_unittest::TestRecursiveMapMessage::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_TestRecursiveMapMessage =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsTestRecursiveMapMessage}, {}};

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32Int32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt64Int64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapUint32Uint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapUint64Uint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapSint32Sint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapSint64Sint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapFixed32Fixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapFixed64Fixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapSfixed32Sfixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapSfixed64Sfixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32FloatEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32DoubleEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapBoolBoolEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapStringStringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32BytesEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32EnumEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32ForeignMessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapStringForeignMessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap_MapInt32AllTypesEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapSubmessage.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMessageMap_MapInt32MessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMessageMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestSameTypeMap_Map1Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestSameTypeMap_Map2Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestSameTypeMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRequiredMessageMap_MapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRequiredMessageMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32Int32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt64Int64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapUint32Uint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapUint64Uint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapSint32Sint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapSint64Sint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32FloatEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32DoubleEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapBoolBoolEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapStringStringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32BytesEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32EnumEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MessageContainingEnumCalledType.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MessageContainingMapCalledEntry_EntryEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MessageContainingMapCalledEntry.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRecursiveMapMessage.base);
}

::google::protobuf::Metadata file_level_metadata[53];
const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[2];

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_int32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int64_int64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_uint32_uint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_uint64_uint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_sint32_sint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_sint64_sint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_fixed32_fixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_fixed64_fixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_sfixed32_sfixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_sfixed64_sfixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_float_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_double_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_bool_bool_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_string_string_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_bytes_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_enum_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_foreign_message_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_string_foreign_message_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMap, map_int32_all_types_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMapSubmessage, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMapSubmessage, test_map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMessageMap, map_int32_message_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap, map1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSameTypeMap, map2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRequiredMessageMap, map_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_int32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int64_int64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_uint32_uint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_uint64_uint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_sint32_sint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_sint64_sint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_fixed32_fixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_fixed64_fixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_sfixed32_sfixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_sfixed64_sfixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_float_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_double_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_bool_bool_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_string_string_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_bytes_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_enum_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_foreign_message_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestArenaMap, map_int32_foreign_message_no_arena_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingEnumCalledType, type_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::MessageContainingMapCalledEntry, entry_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestRecursiveMapMessage, a_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 7, sizeof(::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse)},
  { 9, 16, sizeof(::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse)},
  { 18, 25, sizeof(::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse)},
  { 27, 34, sizeof(::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse)},
  { 36, 43, sizeof(::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse)},
  { 45, 52, sizeof(::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse)},
  { 54, 61, sizeof(::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse)},
  { 63, 70, sizeof(::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse)},
  { 72, 79, sizeof(::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse)},
  { 81, 88, sizeof(::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse)},
  { 90, 97, sizeof(::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse)},
  { 99, 106, sizeof(::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse)},
  { 108, 115, sizeof(::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse)},
  { 117, 124, sizeof(::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse)},
  { 126, 133, sizeof(::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse)},
  { 135, 142, sizeof(::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse)},
  { 144, 151, sizeof(::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse)},
  { 153, 160, sizeof(::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse)},
  { 162, 169, sizeof(::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse)},
  { 171, -1, sizeof(::protobuf_unittest::TestMap)},
  { 195, -1, sizeof(::protobuf_unittest::TestMapSubmessage)},
  { 201, 208, sizeof(::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse)},
  { 210, -1, sizeof(::protobuf_unittest::TestMessageMap)},
  { 216, 223, sizeof(::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse)},
  { 225, 232, sizeof(::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse)},
  { 234, -1, sizeof(::protobuf_unittest::TestSameTypeMap)},
  { 241, 248, sizeof(::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse)},
  { 250, -1, sizeof(::protobuf_unittest::TestRequiredMessageMap)},
  { 256, 263, sizeof(::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse)},
  { 265, 272, sizeof(::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse)},
  { 274, 281, sizeof(::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse)},
  { 283, 290, sizeof(::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse)},
  { 292, 299, sizeof(::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse)},
  { 301, 308, sizeof(::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse)},
  { 310, 317, sizeof(::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse)},
  { 319, 326, sizeof(::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse)},
  { 328, 335, sizeof(::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse)},
  { 337, 344, sizeof(::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse)},
  { 346, 353, sizeof(::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse)},
  { 355, 362, sizeof(::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse)},
  { 364, 371, sizeof(::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse)},
  { 373, 380, sizeof(::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse)},
  { 382, 389, sizeof(::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse)},
  { 391, 398, sizeof(::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse)},
  { 400, 407, sizeof(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse)},
  { 409, 416, sizeof(::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse)},
  { 418, -1, sizeof(::protobuf_unittest::TestArenaMap)},
  { 441, 448, sizeof(::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse)},
  { 450, -1, sizeof(::protobuf_unittest::MessageContainingEnumCalledType)},
  { 456, 463, sizeof(::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse)},
  { 465, -1, sizeof(::protobuf_unittest::MessageContainingMapCalledEntry)},
  { 471, 478, sizeof(::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse)},
  { 480, -1, sizeof(::protobuf_unittest::TestRecursiveMapMessage)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32Int32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt64Int64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapUint32Uint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapUint64Uint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapSint32Sint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapSint64Sint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32FloatEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32DoubleEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapBoolBoolEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapStringStringEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32BytesEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32EnumEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapStringForeignMessageEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_MapInt32AllTypesEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMapSubmessage_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMessageMap_MapInt32MessageEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMessageMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestSameTypeMap_Map1Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestSameTypeMap_Map2Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestSameTypeMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestRequiredMessageMap_MapFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestRequiredMessageMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32Int32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt64Int64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapUint32Uint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapUint64Uint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapSint32Sint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapSint64Sint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32FloatEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32DoubleEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapBoolBoolEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapStringStringEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32BytesEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32EnumEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestArenaMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MessageContainingEnumCalledType_TypeEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MessageContainingEnumCalledType_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MessageContainingMapCalledEntry_EntryEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_MessageContainingMapCalledEntry_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestRecursiveMapMessage_AEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestRecursiveMapMessage_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  AssignDescriptors(
      "google/protobuf/map_unittest.proto", schemas, file_default_instances, TableStruct::offsets,
      file_level_metadata, file_level_enum_descriptors, 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, 53);
}

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n\"google/protobuf/map_unittest.proto\022\021pr"
      "otobuf_unittest\032\036google/protobuf/unittes"
      "t.proto\032\'google/protobuf/unittest_no_are"
      "na.proto\"\377\024\n\007TestMap\022F\n\017map_int32_int32\030"
      "\001 \003(\0132-.protobuf_unittest.TestMap.MapInt"
      "32Int32Entry\022F\n\017map_int64_int64\030\002 \003(\0132-."
      "protobuf_unittest.TestMap.MapInt64Int64E"
      "ntry\022J\n\021map_uint32_uint32\030\003 \003(\0132/.protob"
      "uf_unittest.TestMap.MapUint32Uint32Entry"
      "\022J\n\021map_uint64_uint64\030\004 \003(\0132/.protobuf_u"
      "nittest.TestMap.MapUint64Uint64Entry\022J\n\021"
      "map_sint32_sint32\030\005 \003(\0132/.protobuf_unitt"
      "est.TestMap.MapSint32Sint32Entry\022J\n\021map_"
      "sint64_sint64\030\006 \003(\0132/.protobuf_unittest."
      "TestMap.MapSint64Sint64Entry\022N\n\023map_fixe"
      "d32_fixed32\030\007 \003(\01321.protobuf_unittest.Te"
      "stMap.MapFixed32Fixed32Entry\022N\n\023map_fixe"
      "d64_fixed64\030\010 \003(\01321.protobuf_unittest.Te"
      "stMap.MapFixed64Fixed64Entry\022R\n\025map_sfix"
      "ed32_sfixed32\030\t \003(\01323.protobuf_unittest."
      "TestMap.MapSfixed32Sfixed32Entry\022R\n\025map_"
      "sfixed64_sfixed64\030\n \003(\01323.protobuf_unitt"
      "est.TestMap.MapSfixed64Sfixed64Entry\022F\n\017"
      "map_int32_float\030\013 \003(\0132-.protobuf_unittes"
      "t.TestMap.MapInt32FloatEntry\022H\n\020map_int3"
      "2_double\030\014 \003(\0132..protobuf_unittest.TestM"
      "ap.MapInt32DoubleEntry\022B\n\rmap_bool_bool\030"
      "\r \003(\0132+.protobuf_unittest.TestMap.MapBoo"
      "lBoolEntry\022J\n\021map_string_string\030\016 \003(\0132/."
      "protobuf_unittest.TestMap.MapStringStrin"
      "gEntry\022F\n\017map_int32_bytes\030\017 \003(\0132-.protob"
      "uf_unittest.TestMap.MapInt32BytesEntry\022D"
      "\n\016map_int32_enum\030\020 \003(\0132,.protobuf_unitte"
      "st.TestMap.MapInt32EnumEntry\022Y\n\031map_int3"
      "2_foreign_message\030\021 \003(\01326.protobuf_unitt"
      "est.TestMap.MapInt32ForeignMessageEntry\022"
      "[\n\032map_string_foreign_message\030\022 \003(\01327.pr"
      "otobuf_unittest.TestMap.MapStringForeign"
      "MessageEntry\022M\n\023map_int32_all_types\030\023 \003("
      "\01320.protobuf_unittest.TestMap.MapInt32Al"
      "lTypesEntry\0324\n\022MapInt32Int32Entry\022\013\n\003key"
      "\030\001 \001(\005\022\r\n\005value\030\002 \001(\005:\0028\001\0324\n\022MapInt64Int"
      "64Entry\022\013\n\003key\030\001 \001(\003\022\r\n\005value\030\002 \001(\003:\0028\001\032"
      "6\n\024MapUint32Uint32Entry\022\013\n\003key\030\001 \001(\r\022\r\n\005"
      "value\030\002 \001(\r:\0028\001\0326\n\024MapUint64Uint64Entry\022"
      "\013\n\003key\030\001 \001(\004\022\r\n\005value\030\002 \001(\004:\0028\001\0326\n\024MapSi"
      "nt32Sint32Entry\022\013\n\003key\030\001 \001(\021\022\r\n\005value\030\002 "
      "\001(\021:\0028\001\0326\n\024MapSint64Sint64Entry\022\013\n\003key\030\001"
      " \001(\022\022\r\n\005value\030\002 \001(\022:\0028\001\0328\n\026MapFixed32Fix"
      "ed32Entry\022\013\n\003key\030\001 \001(\007\022\r\n\005value\030\002 \001(\007:\0028"
      "\001\0328\n\026MapFixed64Fixed64Entry\022\013\n\003key\030\001 \001(\006"
      "\022\r\n\005value\030\002 \001(\006:\0028\001\032:\n\030MapSfixed32Sfixed"
      "32Entry\022\013\n\003key\030\001 \001(\017\022\r\n\005value\030\002 \001(\017:\0028\001\032"
      ":\n\030MapSfixed64Sfixed64Entry\022\013\n\003key\030\001 \001(\020"
      "\022\r\n\005value\030\002 \001(\020:\0028\001\0324\n\022MapInt32FloatEntr"
      "y\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\002:\0028\001\0325\n\023Map"
      "Int32DoubleEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002"
      " \001(\001:\0028\001\0322\n\020MapBoolBoolEntry\022\013\n\003key\030\001 \001("
      "\010\022\r\n\005value\030\002 \001(\010:\0028\001\0326\n\024MapStringStringE"
      "ntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0324\n\022"
      "MapInt32BytesEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value"
      "\030\002 \001(\014:\0028\001\032O\n\021MapInt32EnumEntry\022\013\n\003key\030\001"
      " \001(\005\022)\n\005value\030\002 \001(\0162\032.protobuf_unittest."
      "MapEnum:\0028\001\032`\n\033MapInt32ForeignMessageEnt"
      "ry\022\013\n\003key\030\001 \001(\005\0220\n\005value\030\002 \001(\0132!.protobu"
      "f_unittest.ForeignMessage:\0028\001\032a\n\034MapStri"
      "ngForeignMessageEntry\022\013\n\003key\030\001 \001(\t\0220\n\005va"
      "lue\030\002 \001(\0132!.protobuf_unittest.ForeignMes"
      "sage:\0028\001\032X\n\025MapInt32AllTypesEntry\022\013\n\003key"
      "\030\001 \001(\005\022.\n\005value\030\002 \001(\0132\037.protobuf_unittes"
      "t.TestAllTypes:\0028\001\"A\n\021TestMapSubmessage\022"
      ",\n\010test_map\030\001 \001(\0132\032.protobuf_unittest.Te"
      "stMap\"\274\001\n\016TestMessageMap\022Q\n\021map_int32_me"
      "ssage\030\001 \003(\01326.protobuf_unittest.TestMess"
      "ageMap.MapInt32MessageEntry\032W\n\024MapInt32M"
      "essageEntry\022\013\n\003key\030\001 \001(\005\022.\n\005value\030\002 \001(\0132"
      "\037.protobuf_unittest.TestAllTypes:\0028\001\"\343\001\n"
      "\017TestSameTypeMap\022:\n\004map1\030\001 \003(\0132,.protobu"
      "f_unittest.TestSameTypeMap.Map1Entry\022:\n\004"
      "map2\030\002 \003(\0132,.protobuf_unittest.TestSameT"
      "ypeMap.Map2Entry\032+\n\tMap1Entry\022\013\n\003key\030\001 \001"
      "(\005\022\r\n\005value\030\002 \001(\005:\0028\001\032+\n\tMap2Entry\022\013\n\003ke"
      "y\030\001 \001(\005\022\r\n\005value\030\002 \001(\005:\0028\001\"\266\001\n\026TestRequi"
      "redMessageMap\022J\n\tmap_field\030\001 \003(\01327.proto"
      "buf_unittest.TestRequiredMessageMap.MapF"
      "ieldEntry\032P\n\rMapFieldEntry\022\013\n\003key\030\001 \001(\005\022"
      ".\n\005value\030\002 \001(\0132\037.protobuf_unittest.TestR"
      "equired:\0028\001\"\322\024\n\014TestArenaMap\022K\n\017map_int3"
      "2_int32\030\001 \003(\01322.protobuf_unittest.TestAr"
      "enaMap.MapInt32Int32Entry\022K\n\017map_int64_i"
      "nt64\030\002 \003(\01322.protobuf_unittest.TestArena"
      "Map.MapInt64Int64Entry\022O\n\021map_uint32_uin"
      "t32\030\003 \003(\01324.protobuf_unittest.TestArenaM"
      "ap.MapUint32Uint32Entry\022O\n\021map_uint64_ui"
      "nt64\030\004 \003(\01324.protobuf_unittest.TestArena"
      "Map.MapUint64Uint64Entry\022O\n\021map_sint32_s"
      "int32\030\005 \003(\01324.protobuf_unittest.TestAren"
      "aMap.MapSint32Sint32Entry\022O\n\021map_sint64_"
      "sint64\030\006 \003(\01324.protobuf_unittest.TestAre"
      "naMap.MapSint64Sint64Entry\022S\n\023map_fixed3"
      "2_fixed32\030\007 \003(\01326.protobuf_unittest.Test"
      "ArenaMap.MapFixed32Fixed32Entry\022S\n\023map_f"
      "ixed64_fixed64\030\010 \003(\01326.protobuf_unittest"
      ".TestArenaMap.MapFixed64Fixed64Entry\022W\n\025"
      "map_sfixed32_sfixed32\030\t \003(\01328.protobuf_u"
      "nittest.TestArenaMap.MapSfixed32Sfixed32"
      "Entry\022W\n\025map_sfixed64_sfixed64\030\n \003(\01328.p"
      "rotobuf_unittest.TestArenaMap.MapSfixed6"
      "4Sfixed64Entry\022K\n\017map_int32_float\030\013 \003(\0132"
      "2.protobuf_unittest.TestArenaMap.MapInt3"
      "2FloatEntry\022M\n\020map_int32_double\030\014 \003(\01323."
      "protobuf_unittest.TestArenaMap.MapInt32D"
      "oubleEntry\022G\n\rmap_bool_bool\030\r \003(\01320.prot"
      "obuf_unittest.TestArenaMap.MapBoolBoolEn"
      "try\022O\n\021map_string_string\030\016 \003(\01324.protobu"
      "f_unittest.TestArenaMap.MapStringStringE"
      "ntry\022K\n\017map_int32_bytes\030\017 \003(\01322.protobuf"
      "_unittest.TestArenaMap.MapInt32BytesEntr"
      "y\022I\n\016map_int32_enum\030\020 \003(\01321.protobuf_uni"
      "ttest.TestArenaMap.MapInt32EnumEntry\022^\n\031"
      "map_int32_foreign_message\030\021 \003(\0132;.protob"
      "uf_unittest.TestArenaMap.MapInt32Foreign"
      "MessageEntry\022n\n\"map_int32_foreign_messag"
      "e_no_arena\030\022 \003(\0132B.protobuf_unittest.Tes"
      "tArenaMap.MapInt32ForeignMessageNoArenaE"
      "ntry\0324\n\022MapInt32Int32Entry\022\013\n\003key\030\001 \001(\005\022"
      "\r\n\005value\030\002 \001(\005:\0028\001\0324\n\022MapInt64Int64Entry"
      "\022\013\n\003key\030\001 \001(\003\022\r\n\005value\030\002 \001(\003:\0028\001\0326\n\024MapU"
      "int32Uint32Entry\022\013\n\003key\030\001 \001(\r\022\r\n\005value\030\002"
      " \001(\r:\0028\001\0326\n\024MapUint64Uint64Entry\022\013\n\003key\030"
      "\001 \001(\004\022\r\n\005value\030\002 \001(\004:\0028\001\0326\n\024MapSint32Sin"
      "t32Entry\022\013\n\003key\030\001 \001(\021\022\r\n\005value\030\002 \001(\021:\0028\001"
      "\0326\n\024MapSint64Sint64Entry\022\013\n\003key\030\001 \001(\022\022\r\n"
      "\005value\030\002 \001(\022:\0028\001\0328\n\026MapFixed32Fixed32Ent"
      "ry\022\013\n\003key\030\001 \001(\007\022\r\n\005value\030\002 \001(\007:\0028\001\0328\n\026Ma"
      "pFixed64Fixed64Entry\022\013\n\003key\030\001 \001(\006\022\r\n\005val"
      "ue\030\002 \001(\006:\0028\001\032:\n\030MapSfixed32Sfixed32Entry"
      "\022\013\n\003key\030\001 \001(\017\022\r\n\005value\030\002 \001(\017:\0028\001\032:\n\030MapS"
      "fixed64Sfixed64Entry\022\013\n\003key\030\001 \001(\020\022\r\n\005val"
      "ue\030\002 \001(\020:\0028\001\0324\n\022MapInt32FloatEntry\022\013\n\003ke"
      "y\030\001 \001(\005\022\r\n\005value\030\002 \001(\002:\0028\001\0325\n\023MapInt32Do"
      "ubleEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\001:\0028"
      "\001\0322\n\020MapBoolBoolEntry\022\013\n\003key\030\001 \001(\010\022\r\n\005va"
      "lue\030\002 \001(\010:\0028\001\0326\n\024MapStringStringEntry\022\013\n"
      "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0324\n\022MapInt3"
      "2BytesEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\014:"
      "\0028\001\032O\n\021MapInt32EnumEntry\022\013\n\003key\030\001 \001(\005\022)\n"
      "\005value\030\002 \001(\0162\032.protobuf_unittest.MapEnum"
      ":\0028\001\032`\n\033MapInt32ForeignMessageEntry\022\013\n\003k"
      "ey\030\001 \001(\005\0220\n\005value\030\002 \001(\0132!.protobuf_unitt"
      "est.ForeignMessage:\0028\001\032p\n\"MapInt32Foreig"
      "nMessageNoArenaEntry\022\013\n\003key\030\001 \001(\005\0229\n\005val"
      "ue\030\002 \001(\0132*.protobuf_unittest_no_arena.Fo"
      "reignMessage:\0028\001\"\344\001\n\037MessageContainingEn"
      "umCalledType\022J\n\004type\030\001 \003(\0132<.protobuf_un"
      "ittest.MessageContainingEnumCalledType.T"
      "ypeEntry\032_\n\tTypeEntry\022\013\n\003key\030\001 \001(\t\022A\n\005va"
      "lue\030\002 \001(\01322.protobuf_unittest.MessageCon"
      "tainingEnumCalledType:\0028\001\"\024\n\004Type\022\014\n\010TYP"
      "E_FOO\020\000\"\235\001\n\037MessageContainingMapCalledEn"
      "try\022L\n\005entry\030\001 \003(\0132=.protobuf_unittest.M"
      "essageContainingMapCalledEntry.EntryEntr"
      "y\032,\n\nEntryEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 "
      "\001(\005:\0028\001\"\255\001\n\027TestRecursiveMapMessage\022<\n\001a"
      "\030\001 \003(\01321.protobuf_unittest.TestRecursive"
      "MapMessage.AEntry\032T\n\006AEntry\022\013\n\003key\030\001 \001(\t"
      "\0229\n\005value\030\002 \001(\0132*.protobuf_unittest.Test"
      "RecursiveMapMessage:\0028\001*\?\n\007MapEnum\022\020\n\014MA"
      "P_ENUM_FOO\020\000\022\020\n\014MAP_ENUM_BAR\020\001\022\020\n\014MAP_EN"
      "UM_BAZ\020\002B\003\370\001\001b\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 6781);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "google/protobuf/map_unittest.proto", &protobuf_RegisterTypes);
  ::protobuf_google_2fprotobuf_2funittest_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2funittest_5fno_5farena_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_2fmap_5funittest_2eproto
namespace protobuf_unittest {
const ::google::protobuf::EnumDescriptor* MessageContainingEnumCalledType_Type_descriptor() {
  protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_enum_descriptors[0];
}
bool MessageContainingEnumCalledType_Type_IsValid(int value) {
  switch (value) {
    case 0:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const MessageContainingEnumCalledType_Type MessageContainingEnumCalledType::TYPE_FOO;
const MessageContainingEnumCalledType_Type MessageContainingEnumCalledType::Type_MIN;
const MessageContainingEnumCalledType_Type MessageContainingEnumCalledType::Type_MAX;
const int MessageContainingEnumCalledType::Type_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
const ::google::protobuf::EnumDescriptor* MapEnum_descriptor() {
  protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_enum_descriptors[1];
}
bool MapEnum_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

void TestMap::InitAsDefaultInstance() {
}
void TestMap::clear_map_int32_foreign_message() {
  map_int32_foreign_message_.Clear();
}
void TestMap::clear_map_string_foreign_message() {
  map_string_foreign_message_.Clear();
}
void TestMap::clear_map_int32_all_types() {
  map_int32_all_types_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMap::kMapInt32Int32FieldNumber;
const int TestMap::kMapInt64Int64FieldNumber;
const int TestMap::kMapUint32Uint32FieldNumber;
const int TestMap::kMapUint64Uint64FieldNumber;
const int TestMap::kMapSint32Sint32FieldNumber;
const int TestMap::kMapSint64Sint64FieldNumber;
const int TestMap::kMapFixed32Fixed32FieldNumber;
const int TestMap::kMapFixed64Fixed64FieldNumber;
const int TestMap::kMapSfixed32Sfixed32FieldNumber;
const int TestMap::kMapSfixed64Sfixed64FieldNumber;
const int TestMap::kMapInt32FloatFieldNumber;
const int TestMap::kMapInt32DoubleFieldNumber;
const int TestMap::kMapBoolBoolFieldNumber;
const int TestMap::kMapStringStringFieldNumber;
const int TestMap::kMapInt32BytesFieldNumber;
const int TestMap::kMapInt32EnumFieldNumber;
const int TestMap::kMapInt32ForeignMessageFieldNumber;
const int TestMap::kMapStringForeignMessageFieldNumber;
const int TestMap::kMapInt32AllTypesFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMap::TestMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMap)
}
TestMap::TestMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  map_int32_int32_(arena),
  map_int64_int64_(arena),
  map_uint32_uint32_(arena),
  map_uint64_uint64_(arena),
  map_sint32_sint32_(arena),
  map_sint64_sint64_(arena),
  map_fixed32_fixed32_(arena),
  map_fixed64_fixed64_(arena),
  map_sfixed32_sfixed32_(arena),
  map_sfixed64_sfixed64_(arena),
  map_int32_float_(arena),
  map_int32_double_(arena),
  map_bool_bool_(arena),
  map_string_string_(arena),
  map_int32_bytes_(arena),
  map_int32_enum_(arena),
  map_int32_foreign_message_(arena),
  map_string_foreign_message_(arena),
  map_int32_all_types_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMap)
}
TestMap::TestMap(const TestMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_string_foreign_message_.MergeFrom(from.map_string_foreign_message_);
  map_int32_all_types_.MergeFrom(from.map_int32_all_types_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMap)
}

void TestMap::SharedCtor() {
}

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

void TestMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestMap::ArenaDtor(void* object) {
  TestMap* _this = reinterpret_cast< TestMap* >(object);
  (void)_this;
}
void TestMap::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestMap::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestMap& TestMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMap.base);
  return *internal_default_instance();
}


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

  map_int32_int32_.Clear();
  map_int64_int64_.Clear();
  map_uint32_uint32_.Clear();
  map_uint64_uint64_.Clear();
  map_sint32_sint32_.Clear();
  map_sint64_sint64_.Clear();
  map_fixed32_fixed32_.Clear();
  map_fixed64_fixed64_.Clear();
  map_sfixed32_sfixed32_.Clear();
  map_sfixed64_sfixed64_.Clear();
  map_int32_float_.Clear();
  map_int32_double_.Clear();
  map_bool_bool_.Clear();
  map_string_string_.Clear();
  map_int32_bytes_.Clear();
  map_int32_enum_.Clear();
  map_int32_foreign_message_.Clear();
  map_string_foreign_message_.Clear();
  map_int32_all_types_.Clear();
  _internal_metadata_.Clear();
}

bool TestMap::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.TestMap)
  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, int32> map_int32_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestMap_MapInt32Int32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32Int32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_int32_int32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int64, int64> map_int64_int64 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          TestMap_MapInt64Int64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt64Int64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_int64_int64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint32, uint32> map_uint32_uint32 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          TestMap_MapUint32Uint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapUint32Uint32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_uint32_uint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint64, uint64> map_uint64_uint64 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          TestMap_MapUint64Uint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapUint64Uint64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_uint64_uint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint32, sint32> map_sint32_sint32 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          TestMap_MapSint32Sint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapSint32Sint32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sint32_sint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint64, sint64> map_sint64_sint64 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          TestMap_MapSint64Sint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapSint64Sint64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sint64_sint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          TestMap_MapFixed32Fixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapFixed32Fixed32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_fixed32_fixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          TestMap_MapFixed64Fixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapFixed64Fixed64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_fixed64_fixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          TestMap_MapSfixed32Sfixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapSfixed32Sfixed32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sfixed32_sfixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          TestMap_MapSfixed64Sfixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapSfixed64Sfixed64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sfixed64_sfixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, float> map_int32_float = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          TestMap_MapInt32FloatEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32FloatEntry_DoNotUse,
              ::google::protobuf::int32, float,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, float > > parser(&map_int32_float_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, double> map_int32_double = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          TestMap_MapInt32DoubleEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32DoubleEntry_DoNotUse,
              ::google::protobuf::int32, double,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, double > > parser(&map_int32_double_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<bool, bool> map_bool_bool = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          TestMap_MapBoolBoolEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapBoolBoolEntry_DoNotUse,
              bool, bool,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              0 >,
            ::google::protobuf::Map< bool, bool > > parser(&map_bool_bool_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> map_string_string = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          TestMap_MapStringStringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapStringStringEntry_DoNotUse,
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&map_string_string_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestMap.MapStringStringEntry.key"));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestMap.MapStringStringEntry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, bytes> map_int32_bytes = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          TestMap_MapInt32BytesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32BytesEntry_DoNotUse,
              ::google::protobuf::int32, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map_int32_bytes_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          TestMap_MapInt32EnumEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32EnumEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum > > parser(&map_int32_enum_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

      // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          TestMap_MapStringForeignMessageEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapStringForeignMessageEntry_DoNotUse,
              ::std::string, ::protobuf_unittest::ForeignMessage,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage > > parser(&map_string_foreign_message_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestMap.MapStringForeignMessageEntry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.TestAllTypes> map_int32_all_types = 19;
      case 19: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 154 & 0xFF */)) {
          TestMap_MapInt32AllTypesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMap_MapInt32AllTypesEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes > > parser(&map_int32_all_types_);
          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.TestMap)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestMap)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_int32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_int32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().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<TestMap_MapInt32Int32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_int32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32Int32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().end(); ++it) {
        entry.reset(map_int32_int32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().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<TestMap_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().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<TestMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().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<TestMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint32_sint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint32_sint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().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<TestMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint32_sint32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().end(); ++it) {
        entry.reset(map_sint32_sint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            5, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().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<TestMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().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<TestMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().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<TestMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed32_sfixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed32_sfixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().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<TestMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed32_sfixed32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().end(); ++it) {
        entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            9, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().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<TestMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_float().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_float().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, float >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().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<TestMap_MapInt32FloatEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_float_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32FloatEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().end(); ++it) {
        entry.reset(map_int32_float_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            11, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_double().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_double().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, double >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().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<TestMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_double_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().end(); ++it) {
        entry.reset(map_int32_double_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            12, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().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<TestMap_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringStringEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringStringEntry.value");
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().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<TestMap_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestMap_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_bytes().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_bytes().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().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<TestMap_MapInt32BytesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_bytes_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32BytesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().end(); ++it) {
        entry.reset(map_int32_bytes_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            15, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_enum().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_enum().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().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<TestMap_MapInt32EnumEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32EnumEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().end(); ++it) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().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<TestMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().end(); ++it) {
        entry.reset(map_int32_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            17, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
  if (!this->map_string_foreign_message().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringForeignMessageEntry.key");
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->map_string_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_string_foreign_message().begin();
          it != this->map_string_foreign_message().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<TestMap_MapStringForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_foreign_message_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            18, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestMap_MapStringForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_string_foreign_message().begin();
          it != this->map_string_foreign_message().end(); ++it) {
        entry.reset(map_string_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            18, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_all_types().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_all_types().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_all_types().begin();
          it != this->map_int32_all_types().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<TestMap_MapInt32AllTypesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_all_types_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            19, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32AllTypesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_all_types().begin();
          it != this->map_int32_all_types().end(); ++it) {
        entry.reset(map_int32_all_types_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            19, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestMap)
}

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

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

    if (deterministic &&
        this->map_int32_int32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_int32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().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<TestMap_MapInt32Int32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_int32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32Int32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().end(); ++it) {
        entry.reset(map_int32_int32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().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<TestMap_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().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<TestMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().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<TestMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sint32_sint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint32_sint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().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<TestMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint32_sint32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().end(); ++it) {
        entry.reset(map_sint32_sint32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       5, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().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<TestMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().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<TestMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().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<TestMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sfixed32_sfixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed32_sfixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().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<TestMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed32_sfixed32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().end(); ++it) {
        entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       9, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().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<TestMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_float().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_float().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, float >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().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<TestMap_MapInt32FloatEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_float_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32FloatEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().end(); ++it) {
        entry.reset(map_int32_float_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       11, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_double().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_double().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, double >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().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<TestMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_double_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().end(); ++it) {
        entry.reset(map_int32_double_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       12, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().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<TestMap_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringStringEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringStringEntry.value");
      }
    };

    if (deterministic &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().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<TestMap_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestMap_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_bytes().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_bytes().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().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<TestMap_MapInt32BytesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_bytes_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32BytesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().end(); ++it) {
        entry.reset(map_int32_bytes_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       15, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_enum().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_enum().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().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<TestMap_MapInt32EnumEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32EnumEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().end(); ++it) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       16, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().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<TestMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().end(); ++it) {
        entry.reset(map_int32_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       17, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
  if (!this->map_string_foreign_message().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestMap.MapStringForeignMessageEntry.key");
      }
    };

    if (deterministic &&
        this->map_string_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_string_foreign_message().begin();
          it != this->map_string_foreign_message().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<TestMap_MapStringForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_foreign_message_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       18, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestMap_MapStringForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_string_foreign_message().begin();
          it != this->map_string_foreign_message().end(); ++it) {
        entry.reset(map_string_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       18, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_all_types().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_all_types().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_all_types().begin();
          it != this->map_int32_all_types().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<TestMap_MapInt32AllTypesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_all_types_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       19, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMap_MapInt32AllTypesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_all_types().begin();
          it != this->map_int32_all_types().end(); ++it) {
        entry.reset(map_int32_all_types_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       19, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestMap)
  return target;
}

size_t TestMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestMap)
  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, int32> map_int32_int32 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_int32_size());
  {
    ::std::unique_ptr<TestMap_MapInt32Int32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_int32_int32().begin();
        it != this->map_int32_int32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_int32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int64, int64> map_int64_int64 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int64_int64_size());
  {
    ::std::unique_ptr<TestMap_MapInt64Int64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_int64_int64().begin();
        it != this->map_int64_int64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int64_int64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<uint32, uint32> map_uint32_uint32 = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint32_uint32_size());
  {
    ::std::unique_ptr<TestMap_MapUint32Uint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_uint32_uint32().begin();
        it != this->map_uint32_uint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint32_uint32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<uint64, uint64> map_uint64_uint64 = 4;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint64_uint64_size());
  {
    ::std::unique_ptr<TestMap_MapUint64Uint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_uint64_uint64().begin();
        it != this->map_uint64_uint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint64_uint64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sint32, sint32> map_sint32_sint32 = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint32_sint32_size());
  {
    ::std::unique_ptr<TestMap_MapSint32Sint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sint32_sint32().begin();
        it != this->map_sint32_sint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint32_sint32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sint64, sint64> map_sint64_sint64 = 6;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint64_sint64_size());
  {
    ::std::unique_ptr<TestMap_MapSint64Sint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sint64_sint64().begin();
        it != this->map_sint64_sint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint64_sint64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed32_fixed32_size());
  {
    ::std::unique_ptr<TestMap_MapFixed32Fixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_fixed32_fixed32().begin();
        it != this->map_fixed32_fixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed32_fixed32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed64_fixed64_size());
  {
    ::std::unique_ptr<TestMap_MapFixed64Fixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_fixed64_fixed64().begin();
        it != this->map_fixed64_fixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed64_fixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed32_sfixed32_size());
  {
    ::std::unique_ptr<TestMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sfixed32_sfixed32().begin();
        it != this->map_sfixed32_sfixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed64_sfixed64_size());
  {
    ::std::unique_ptr<TestMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sfixed64_sfixed64().begin();
        it != this->map_sfixed64_sfixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, float> map_int32_float = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_float_size());
  {
    ::std::unique_ptr<TestMap_MapInt32FloatEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
        it = this->map_int32_float().begin();
        it != this->map_int32_float().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_float_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, double> map_int32_double = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_double_size());
  {
    ::std::unique_ptr<TestMap_MapInt32DoubleEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
        it = this->map_int32_double().begin();
        it != this->map_int32_double().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_double_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<bool, bool> map_bool_bool = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_bool_bool_size());
  {
    ::std::unique_ptr<TestMap_MapBoolBoolEntry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, bool >::const_iterator
        it = this->map_bool_bool().begin();
        it != this->map_bool_bool().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_bool_bool_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<string, string> map_string_string = 14;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_string_string_size());
  {
    ::std::unique_ptr<TestMap_MapStringStringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->map_string_string().begin();
        it != this->map_string_string().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_string_string_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, bytes> map_int32_bytes = 15;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_bytes_size());
  {
    ::std::unique_ptr<TestMap_MapInt32BytesEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
        it = this->map_int32_bytes().begin();
        it != this->map_int32_bytes().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_bytes_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_enum_size());
  {
    ::std::unique_ptr<TestMap_MapInt32EnumEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
        it = this->map_int32_enum().begin();
        it != this->map_int32_enum().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_enum_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_size());
  {
    ::std::unique_ptr<TestMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
        it = this->map_int32_foreign_message().begin();
        it != this->map_int32_foreign_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_string_foreign_message_size());
  {
    ::std::unique_ptr<TestMap_MapStringForeignMessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >::const_iterator
        it = this->map_string_foreign_message().begin();
        it != this->map_string_foreign_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_string_foreign_message_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.TestAllTypes> map_int32_all_types = 19;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_all_types_size());
  {
    ::std::unique_ptr<TestMap_MapInt32AllTypesEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
        it = this->map_int32_all_types().begin();
        it != this->map_int32_all_types().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_all_types_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_string_foreign_message_.MergeFrom(from.map_string_foreign_message_);
  map_int32_all_types_.MergeFrom(from.map_int32_all_types_);
}

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

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

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

void TestMap::Swap(TestMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestMap::UnsafeArenaSwap(TestMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestMap::InternalSwap(TestMap* other) {
  using std::swap;
  map_int32_int32_.Swap(&other->map_int32_int32_);
  map_int64_int64_.Swap(&other->map_int64_int64_);
  map_uint32_uint32_.Swap(&other->map_uint32_uint32_);
  map_uint64_uint64_.Swap(&other->map_uint64_uint64_);
  map_sint32_sint32_.Swap(&other->map_sint32_sint32_);
  map_sint64_sint64_.Swap(&other->map_sint64_sint64_);
  map_fixed32_fixed32_.Swap(&other->map_fixed32_fixed32_);
  map_fixed64_fixed64_.Swap(&other->map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.Swap(&other->map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.Swap(&other->map_sfixed64_sfixed64_);
  map_int32_float_.Swap(&other->map_int32_float_);
  map_int32_double_.Swap(&other->map_int32_double_);
  map_bool_bool_.Swap(&other->map_bool_bool_);
  map_string_string_.Swap(&other->map_string_string_);
  map_int32_bytes_.Swap(&other->map_int32_bytes_);
  map_int32_enum_.Swap(&other->map_int32_enum_);
  map_int32_foreign_message_.Swap(&other->map_int32_foreign_message_);
  map_string_foreign_message_.Swap(&other->map_string_foreign_message_);
  map_int32_all_types_.Swap(&other->map_int32_all_types_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void TestMapSubmessage::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestMapSubmessage_default_instance_._instance.get_mutable()->test_map_ = const_cast< ::protobuf_unittest::TestMap*>(
      ::protobuf_unittest::TestMap::internal_default_instance());
}
void TestMapSubmessage::unsafe_arena_set_allocated_test_map(
    ::protobuf_unittest::TestMap* test_map) {
  if (GetArenaNoVirtual() == NULL) {
    delete test_map_;
  }
  test_map_ = test_map;
  if (test_map) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:protobuf_unittest.TestMapSubmessage.test_map)
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMapSubmessage::kTestMapFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMapSubmessage::TestMapSubmessage()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMapSubmessage.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMapSubmessage)
}
TestMapSubmessage::TestMapSubmessage(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMapSubmessage.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMapSubmessage)
}
TestMapSubmessage::TestMapSubmessage(const TestMapSubmessage& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_test_map()) {
    test_map_ = new ::protobuf_unittest::TestMap(*from.test_map_);
  } else {
    test_map_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMapSubmessage)
}

void TestMapSubmessage::SharedCtor() {
  test_map_ = NULL;
}

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

void TestMapSubmessage::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
  if (this != internal_default_instance()) delete test_map_;
}

void TestMapSubmessage::ArenaDtor(void* object) {
  TestMapSubmessage* _this = reinterpret_cast< TestMapSubmessage* >(object);
  (void)_this;
}
void TestMapSubmessage::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestMapSubmessage::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestMapSubmessage::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestMapSubmessage& TestMapSubmessage::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMapSubmessage.base);
  return *internal_default_instance();
}


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

  if (GetArenaNoVirtual() == NULL && test_map_ != NULL) {
    delete test_map_;
  }
  test_map_ = NULL;
  _internal_metadata_.Clear();
}

bool TestMapSubmessage::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.TestMapSubmessage)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .protobuf_unittest.TestMap test_map = 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_test_map()));
        } 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.TestMapSubmessage)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestMapSubmessage)
  return false;
#undef DO_
}

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

  // .protobuf_unittest.TestMap test_map = 1;
  if (this->has_test_map()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_test_map(), 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.TestMapSubmessage)
}

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

  // .protobuf_unittest.TestMap test_map = 1;
  if (this->has_test_map()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_test_map(), 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.TestMapSubmessage)
  return target;
}

size_t TestMapSubmessage::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestMapSubmessage)
  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()));
  }
  // .protobuf_unittest.TestMap test_map = 1;
  if (this->has_test_map()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *test_map_);
  }

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

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

void TestMapSubmessage::MergeFrom(const TestMapSubmessage& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestMapSubmessage)
  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_test_map()) {
    mutable_test_map()->::protobuf_unittest::TestMap::MergeFrom(from.test_map());
  }
}

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

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

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

void TestMapSubmessage::Swap(TestMapSubmessage* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestMapSubmessage* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestMapSubmessage::UnsafeArenaSwap(TestMapSubmessage* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestMapSubmessage::InternalSwap(TestMapSubmessage* other) {
  using std::swap;
  swap(test_map_, other->test_map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void TestMessageMap::InitAsDefaultInstance() {
}
void TestMessageMap::clear_map_int32_message() {
  map_int32_message_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMessageMap::kMapInt32MessageFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMessageMap::TestMessageMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMessageMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMessageMap)
}
TestMessageMap::TestMessageMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  map_int32_message_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMessageMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMessageMap)
}
TestMessageMap::TestMessageMap(const TestMessageMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_message_.MergeFrom(from.map_int32_message_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMessageMap)
}

void TestMessageMap::SharedCtor() {
}

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

void TestMessageMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestMessageMap::ArenaDtor(void* object) {
  TestMessageMap* _this = reinterpret_cast< TestMessageMap* >(object);
  (void)_this;
}
void TestMessageMap::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestMessageMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestMessageMap::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestMessageMap& TestMessageMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestMessageMap.base);
  return *internal_default_instance();
}


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

  map_int32_message_.Clear();
  _internal_metadata_.Clear();
}

bool TestMessageMap::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.TestMessageMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .protobuf_unittest.TestAllTypes> map_int32_message = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestMessageMap_MapInt32MessageEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMessageMap_MapInt32MessageEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes > > parser(&map_int32_message_);
          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.TestMessageMap)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestMessageMap)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_message().begin();
          it != this->map_int32_message().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<TestMessageMap_MapInt32MessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_message_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMessageMap_MapInt32MessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_message().begin();
          it != this->map_int32_message().end(); ++it) {
        entry.reset(map_int32_message_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestMessageMap)
}

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

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

    if (deterministic &&
        this->map_int32_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_message().begin();
          it != this->map_int32_message().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<TestMessageMap_MapInt32MessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_message_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMessageMap_MapInt32MessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
          it = this->map_int32_message().begin();
          it != this->map_int32_message().end(); ++it) {
        entry.reset(map_int32_message_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestMessageMap)
  return target;
}

size_t TestMessageMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestMessageMap)
  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, .protobuf_unittest.TestAllTypes> map_int32_message = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_message_size());
  {
    ::std::unique_ptr<TestMessageMap_MapInt32MessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >::const_iterator
        it = this->map_int32_message().begin();
        it != this->map_int32_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_message_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  map_int32_message_.MergeFrom(from.map_int32_message_);
}

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

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

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

void TestMessageMap::Swap(TestMessageMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestMessageMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestMessageMap::UnsafeArenaSwap(TestMessageMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestMessageMap::InternalSwap(TestMessageMap* other) {
  using std::swap;
  map_int32_message_.Swap(&other->map_int32_message_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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


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

void TestSameTypeMap::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestSameTypeMap::kMap1FieldNumber;
const int TestSameTypeMap::kMap2FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestSameTypeMap::TestSameTypeMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestSameTypeMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestSameTypeMap)
}
TestSameTypeMap::TestSameTypeMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  map1_(arena),
  map2_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestSameTypeMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestSameTypeMap)
}
TestSameTypeMap::TestSameTypeMap(const TestSameTypeMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map1_.MergeFrom(from.map1_);
  map2_.MergeFrom(from.map2_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestSameTypeMap)
}

void TestSameTypeMap::SharedCtor() {
}

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

void TestSameTypeMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestSameTypeMap::ArenaDtor(void* object) {
  TestSameTypeMap* _this = reinterpret_cast< TestSameTypeMap* >(object);
  (void)_this;
}
void TestSameTypeMap::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestSameTypeMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestSameTypeMap::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestSameTypeMap& TestSameTypeMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestSameTypeMap.base);
  return *internal_default_instance();
}


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

  map1_.Clear();
  map2_.Clear();
  _internal_metadata_.Clear();
}

bool TestSameTypeMap::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.TestSameTypeMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, int32> map1 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestSameTypeMap_Map1Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestSameTypeMap_Map1Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map1_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, int32> map2 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          TestSameTypeMap_Map2Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestSameTypeMap_Map2Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map2_);
          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.TestSameTypeMap)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestSameTypeMap)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->map1().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map1().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map1().begin();
          it != this->map1().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<TestSameTypeMap_Map1Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map1_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestSameTypeMap_Map1Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map1().begin();
          it != this->map1().end(); ++it) {
        entry.reset(map1_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map2().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map2().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map2().begin();
          it != this->map2().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<TestSameTypeMap_Map2Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map2_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestSameTypeMap_Map2Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map2().begin();
          it != this->map2().end(); ++it) {
        entry.reset(map2_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestSameTypeMap)
}

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

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

    if (deterministic &&
        this->map1().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map1().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map1().begin();
          it != this->map1().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<TestSameTypeMap_Map1Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map1_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestSameTypeMap_Map1Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map1().begin();
          it != this->map1().end(); ++it) {
        entry.reset(map1_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map2().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map2().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map2().begin();
          it != this->map2().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<TestSameTypeMap_Map2Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map2_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestSameTypeMap_Map2Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map2().begin();
          it != this->map2().end(); ++it) {
        entry.reset(map2_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestSameTypeMap)
  return target;
}

size_t TestSameTypeMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestSameTypeMap)
  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, int32> map1 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map1_size());
  {
    ::std::unique_ptr<TestSameTypeMap_Map1Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map1().begin();
        it != this->map1().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map1_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, int32> map2 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map2_size());
  {
    ::std::unique_ptr<TestSameTypeMap_Map2Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map2().begin();
        it != this->map2().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map2_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  map1_.MergeFrom(from.map1_);
  map2_.MergeFrom(from.map2_);
}

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

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

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

void TestSameTypeMap::Swap(TestSameTypeMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestSameTypeMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestSameTypeMap::UnsafeArenaSwap(TestSameTypeMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestSameTypeMap::InternalSwap(TestSameTypeMap* other) {
  using std::swap;
  map1_.Swap(&other->map1_);
  map2_.Swap(&other->map2_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void TestRequiredMessageMap::InitAsDefaultInstance() {
}
void TestRequiredMessageMap::clear_map_field() {
  map_field_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestRequiredMessageMap::kMapFieldFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestRequiredMessageMap::TestRequiredMessageMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRequiredMessageMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestRequiredMessageMap)
}
TestRequiredMessageMap::TestRequiredMessageMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRequiredMessageMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestRequiredMessageMap)
}
TestRequiredMessageMap::TestRequiredMessageMap(const TestRequiredMessageMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_field_.MergeFrom(from.map_field_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestRequiredMessageMap)
}

void TestRequiredMessageMap::SharedCtor() {
}

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

void TestRequiredMessageMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestRequiredMessageMap::ArenaDtor(void* object) {
  TestRequiredMessageMap* _this = reinterpret_cast< TestRequiredMessageMap* >(object);
  (void)_this;
}
void TestRequiredMessageMap::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestRequiredMessageMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestRequiredMessageMap::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestRequiredMessageMap& TestRequiredMessageMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRequiredMessageMap.base);
  return *internal_default_instance();
}


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

  map_field_.Clear();
  _internal_metadata_.Clear();
}

bool TestRequiredMessageMap::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.TestRequiredMessageMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .protobuf_unittest.TestRequired> map_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestRequiredMessageMap_MapFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestRequiredMessageMap_MapFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::TestRequired,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired > > parser(&map_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.TestRequiredMessageMap)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestRequiredMessageMap)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::const_iterator
          it = this->map_field().begin();
          it != this->map_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<TestRequiredMessageMap_MapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestRequiredMessageMap_MapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::const_iterator
          it = this->map_field().begin();
          it != this->map_field().end(); ++it) {
        entry.reset(map_field_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestRequiredMessageMap)
}

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

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

    if (deterministic &&
        this->map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::const_iterator
          it = this->map_field().begin();
          it != this->map_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<TestRequiredMessageMap_MapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestRequiredMessageMap_MapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::const_iterator
          it = this->map_field().begin();
          it != this->map_field().end(); ++it) {
        entry.reset(map_field_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestRequiredMessageMap)
  return target;
}

size_t TestRequiredMessageMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestRequiredMessageMap)
  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, .protobuf_unittest.TestRequired> map_field = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_field_size());
  {
    ::std::unique_ptr<TestRequiredMessageMap_MapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >::const_iterator
        it = this->map_field().begin();
        it != this->map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_field_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  map_field_.MergeFrom(from.map_field_);
}

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

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

bool TestRequiredMessageMap::IsInitialized() const {
  if (!::google::protobuf::internal::AllAreInitialized(this->map_field())) return false;
  return true;
}

void TestRequiredMessageMap::Swap(TestRequiredMessageMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestRequiredMessageMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestRequiredMessageMap::UnsafeArenaSwap(TestRequiredMessageMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestRequiredMessageMap::InternalSwap(TestRequiredMessageMap* other) {
  using std::swap;
  map_field_.Swap(&other->map_field_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

void TestArenaMap::InitAsDefaultInstance() {
}
void TestArenaMap::clear_map_int32_foreign_message() {
  map_int32_foreign_message_.Clear();
}
void TestArenaMap::clear_map_int32_foreign_message_no_arena() {
  map_int32_foreign_message_no_arena_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestArenaMap::kMapInt32Int32FieldNumber;
const int TestArenaMap::kMapInt64Int64FieldNumber;
const int TestArenaMap::kMapUint32Uint32FieldNumber;
const int TestArenaMap::kMapUint64Uint64FieldNumber;
const int TestArenaMap::kMapSint32Sint32FieldNumber;
const int TestArenaMap::kMapSint64Sint64FieldNumber;
const int TestArenaMap::kMapFixed32Fixed32FieldNumber;
const int TestArenaMap::kMapFixed64Fixed64FieldNumber;
const int TestArenaMap::kMapSfixed32Sfixed32FieldNumber;
const int TestArenaMap::kMapSfixed64Sfixed64FieldNumber;
const int TestArenaMap::kMapInt32FloatFieldNumber;
const int TestArenaMap::kMapInt32DoubleFieldNumber;
const int TestArenaMap::kMapBoolBoolFieldNumber;
const int TestArenaMap::kMapStringStringFieldNumber;
const int TestArenaMap::kMapInt32BytesFieldNumber;
const int TestArenaMap::kMapInt32EnumFieldNumber;
const int TestArenaMap::kMapInt32ForeignMessageFieldNumber;
const int TestArenaMap::kMapInt32ForeignMessageNoArenaFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestArenaMap::TestArenaMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestArenaMap)
}
TestArenaMap::TestArenaMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  map_int32_int32_(arena),
  map_int64_int64_(arena),
  map_uint32_uint32_(arena),
  map_uint64_uint64_(arena),
  map_sint32_sint32_(arena),
  map_sint64_sint64_(arena),
  map_fixed32_fixed32_(arena),
  map_fixed64_fixed64_(arena),
  map_sfixed32_sfixed32_(arena),
  map_sfixed64_sfixed64_(arena),
  map_int32_float_(arena),
  map_int32_double_(arena),
  map_bool_bool_(arena),
  map_string_string_(arena),
  map_int32_bytes_(arena),
  map_int32_enum_(arena),
  map_int32_foreign_message_(arena),
  map_int32_foreign_message_no_arena_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestArenaMap)
}
TestArenaMap::TestArenaMap(const TestArenaMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.MergeFrom(from.map_int32_foreign_message_no_arena_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestArenaMap)
}

void TestArenaMap::SharedCtor() {
}

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

void TestArenaMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestArenaMap::ArenaDtor(void* object) {
  TestArenaMap* _this = reinterpret_cast< TestArenaMap* >(object);
  (void)_this;
}
void TestArenaMap::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestArenaMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestArenaMap::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestArenaMap& TestArenaMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestArenaMap.base);
  return *internal_default_instance();
}


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

  map_int32_int32_.Clear();
  map_int64_int64_.Clear();
  map_uint32_uint32_.Clear();
  map_uint64_uint64_.Clear();
  map_sint32_sint32_.Clear();
  map_sint64_sint64_.Clear();
  map_fixed32_fixed32_.Clear();
  map_fixed64_fixed64_.Clear();
  map_sfixed32_sfixed32_.Clear();
  map_sfixed64_sfixed64_.Clear();
  map_int32_float_.Clear();
  map_int32_double_.Clear();
  map_bool_bool_.Clear();
  map_string_string_.Clear();
  map_int32_bytes_.Clear();
  map_int32_enum_.Clear();
  map_int32_foreign_message_.Clear();
  map_int32_foreign_message_no_arena_.Clear();
  _internal_metadata_.Clear();
}

bool TestArenaMap::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.TestArenaMap)
  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, int32> map_int32_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestArenaMap_MapInt32Int32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32Int32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_int32_int32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int64, int64> map_int64_int64 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          TestArenaMap_MapInt64Int64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt64Int64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_int64_int64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint32, uint32> map_uint32_uint32 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          TestArenaMap_MapUint32Uint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapUint32Uint32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_uint32_uint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint64, uint64> map_uint64_uint64 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          TestArenaMap_MapUint64Uint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapUint64Uint64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_uint64_uint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint32, sint32> map_sint32_sint32 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          TestArenaMap_MapSint32Sint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapSint32Sint32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sint32_sint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint64, sint64> map_sint64_sint64 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          TestArenaMap_MapSint64Sint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapSint64Sint64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sint64_sint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          TestArenaMap_MapFixed32Fixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapFixed32Fixed32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_fixed32_fixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          TestArenaMap_MapFixed64Fixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapFixed64Fixed64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_fixed64_fixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sfixed32_sfixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sfixed64_sfixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, float> map_int32_float = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          TestArenaMap_MapInt32FloatEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32FloatEntry_DoNotUse,
              ::google::protobuf::int32, float,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, float > > parser(&map_int32_float_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, double> map_int32_double = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          TestArenaMap_MapInt32DoubleEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32DoubleEntry_DoNotUse,
              ::google::protobuf::int32, double,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, double > > parser(&map_int32_double_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<bool, bool> map_bool_bool = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          TestArenaMap_MapBoolBoolEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapBoolBoolEntry_DoNotUse,
              bool, bool,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              0 >,
            ::google::protobuf::Map< bool, bool > > parser(&map_bool_bool_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> map_string_string = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          TestArenaMap_MapStringStringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapStringStringEntry_DoNotUse,
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&map_string_string_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestArenaMap.MapStringStringEntry.key"));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestArenaMap.MapStringStringEntry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, bytes> map_int32_bytes = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          TestArenaMap_MapInt32BytesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32BytesEntry_DoNotUse,
              ::google::protobuf::int32, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map_int32_bytes_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          TestArenaMap_MapInt32EnumEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32EnumEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum > > parser(&map_int32_enum_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

      // map<int32, .protobuf_unittest_no_arena.ForeignMessage> map_int32_foreign_message_no_arena = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage > > parser(&map_int32_foreign_message_no_arena_);
          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.TestArenaMap)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestArenaMap)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_int32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_int32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().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<TestArenaMap_MapInt32Int32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_int32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32Int32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().end(); ++it) {
        entry.reset(map_int32_int32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().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<TestArenaMap_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().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<TestArenaMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().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<TestArenaMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint32_sint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint32_sint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().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<TestArenaMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint32_sint32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().end(); ++it) {
        entry.reset(map_sint32_sint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            5, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().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<TestArenaMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().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<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().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<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed32_sfixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed32_sfixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().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<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed32_sfixed32_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().end(); ++it) {
        entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            9, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().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<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_float().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_float().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, float >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().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<TestArenaMap_MapInt32FloatEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_float_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32FloatEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().end(); ++it) {
        entry.reset(map_int32_float_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            11, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_double().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_double().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, double >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().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<TestArenaMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_double_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().end(); ++it) {
        entry.reset(map_int32_double_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            12, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().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<TestArenaMap_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestArenaMap.MapStringStringEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestArenaMap.MapStringStringEntry.value");
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().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<TestArenaMap_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_bytes().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_bytes().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().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<TestArenaMap_MapInt32BytesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_bytes_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32BytesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().end(); ++it) {
        entry.reset(map_int32_bytes_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            15, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_enum().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_enum().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().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<TestArenaMap_MapInt32EnumEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32EnumEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().end(); ++it) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            16, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().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<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().end(); ++it) {
        entry.reset(map_int32_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            17, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_int32_foreign_message_no_arena().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message_no_arena().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message_no_arena().begin();
          it != this->map_int32_foreign_message_no_arena().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<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_no_arena_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message_no_arena().begin();
          it != this->map_int32_foreign_message_no_arena().end(); ++it) {
        entry.reset(map_int32_foreign_message_no_arena_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            18, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestArenaMap)
}

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

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

    if (deterministic &&
        this->map_int32_int32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_int32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().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<TestArenaMap_MapInt32Int32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_int32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32Int32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_int32_int32().begin();
          it != this->map_int32_int32().end(); ++it) {
        entry.reset(map_int32_int32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().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<TestArenaMap_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().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<TestArenaMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().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<TestArenaMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sint32_sint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint32_sint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().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<TestArenaMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint32_sint32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSint32Sint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sint32_sint32().begin();
          it != this->map_sint32_sint32().end(); ++it) {
        entry.reset(map_sint32_sint32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       5, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().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<TestArenaMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().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<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().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<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sfixed32_sfixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed32_sfixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().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<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed32_sfixed32_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->map_sfixed32_sfixed32().begin();
          it != this->map_sfixed32_sfixed32().end(); ++it) {
        entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       9, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().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<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_float().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_float().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, float >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().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<TestArenaMap_MapInt32FloatEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_float_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32FloatEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
          it = this->map_int32_float().begin();
          it != this->map_int32_float().end(); ++it) {
        entry.reset(map_int32_float_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       11, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_double().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_double().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, double >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().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<TestArenaMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_double_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32DoubleEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
          it = this->map_int32_double().begin();
          it != this->map_int32_double().end(); ++it) {
        entry.reset(map_int32_double_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       12, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().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<TestArenaMap_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       13, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestArenaMap.MapStringStringEntry.key");
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestArenaMap.MapStringStringEntry.value");
      }
    };

    if (deterministic &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().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<TestArenaMap_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       14, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_bytes().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_bytes().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().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<TestArenaMap_MapInt32BytesEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_bytes_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32BytesEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
          it = this->map_int32_bytes().begin();
          it != this->map_int32_bytes().end(); ++it) {
        entry.reset(map_int32_bytes_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       15, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_enum().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_enum().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().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<TestArenaMap_MapInt32EnumEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32EnumEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
          it = this->map_int32_enum().begin();
          it != this->map_int32_enum().end(); ++it) {
        entry.reset(map_int32_enum_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       16, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_foreign_message().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().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<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message().begin();
          it != this->map_int32_foreign_message().end(); ++it) {
        entry.reset(map_int32_foreign_message_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       17, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->map_int32_foreign_message_no_arena().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int32_foreign_message_no_arena().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message_no_arena().begin();
          it != this->map_int32_foreign_message_no_arena().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<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int32_foreign_message_no_arena_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::const_iterator
          it = this->map_int32_foreign_message_no_arena().begin();
          it != this->map_int32_foreign_message_no_arena().end(); ++it) {
        entry.reset(map_int32_foreign_message_no_arena_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       18, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.TestArenaMap)
  return target;
}

size_t TestArenaMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestArenaMap)
  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, int32> map_int32_int32 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_int32_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32Int32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_int32_int32().begin();
        it != this->map_int32_int32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_int32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int64, int64> map_int64_int64 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int64_int64_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt64Int64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_int64_int64().begin();
        it != this->map_int64_int64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int64_int64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<uint32, uint32> map_uint32_uint32 = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint32_uint32_size());
  {
    ::std::unique_ptr<TestArenaMap_MapUint32Uint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_uint32_uint32().begin();
        it != this->map_uint32_uint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint32_uint32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<uint64, uint64> map_uint64_uint64 = 4;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint64_uint64_size());
  {
    ::std::unique_ptr<TestArenaMap_MapUint64Uint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_uint64_uint64().begin();
        it != this->map_uint64_uint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint64_uint64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sint32, sint32> map_sint32_sint32 = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint32_sint32_size());
  {
    ::std::unique_ptr<TestArenaMap_MapSint32Sint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sint32_sint32().begin();
        it != this->map_sint32_sint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint32_sint32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sint64, sint64> map_sint64_sint64 = 6;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint64_sint64_size());
  {
    ::std::unique_ptr<TestArenaMap_MapSint64Sint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sint64_sint64().begin();
        it != this->map_sint64_sint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint64_sint64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed32_fixed32_size());
  {
    ::std::unique_ptr<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_fixed32_fixed32().begin();
        it != this->map_fixed32_fixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed32_fixed32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed64_fixed64_size());
  {
    ::std::unique_ptr<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_fixed64_fixed64().begin();
        it != this->map_fixed64_fixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed64_fixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed32_sfixed32_size());
  {
    ::std::unique_ptr<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sfixed32_sfixed32().begin();
        it != this->map_sfixed32_sfixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed32_sfixed32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed64_sfixed64_size());
  {
    ::std::unique_ptr<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sfixed64_sfixed64().begin();
        it != this->map_sfixed64_sfixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, float> map_int32_float = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_float_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32FloatEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
        it = this->map_int32_float().begin();
        it != this->map_int32_float().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_float_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, double> map_int32_double = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_double_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32DoubleEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
        it = this->map_int32_double().begin();
        it != this->map_int32_double().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_double_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<bool, bool> map_bool_bool = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_bool_bool_size());
  {
    ::std::unique_ptr<TestArenaMap_MapBoolBoolEntry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, bool >::const_iterator
        it = this->map_bool_bool().begin();
        it != this->map_bool_bool().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_bool_bool_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<string, string> map_string_string = 14;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_string_string_size());
  {
    ::std::unique_ptr<TestArenaMap_MapStringStringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->map_string_string().begin();
        it != this->map_string_string().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_string_string_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, bytes> map_int32_bytes = 15;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_bytes_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32BytesEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
        it = this->map_int32_bytes().begin();
        it != this->map_int32_bytes().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_bytes_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_enum_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32EnumEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >::const_iterator
        it = this->map_int32_enum().begin();
        it != this->map_int32_enum().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_enum_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >::const_iterator
        it = this->map_int32_foreign_message().begin();
        it != this->map_int32_foreign_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest_no_arena.ForeignMessage> map_int32_foreign_message_no_arena = 18;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_no_arena_size());
  {
    ::std::unique_ptr<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >::const_iterator
        it = this->map_int32_foreign_message_no_arena().begin();
        it != this->map_int32_foreign_message_no_arena().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_no_arena_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.MergeFrom(from.map_int32_foreign_message_no_arena_);
}

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

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

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

void TestArenaMap::Swap(TestArenaMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestArenaMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestArenaMap::UnsafeArenaSwap(TestArenaMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestArenaMap::InternalSwap(TestArenaMap* other) {
  using std::swap;
  map_int32_int32_.Swap(&other->map_int32_int32_);
  map_int64_int64_.Swap(&other->map_int64_int64_);
  map_uint32_uint32_.Swap(&other->map_uint32_uint32_);
  map_uint64_uint64_.Swap(&other->map_uint64_uint64_);
  map_sint32_sint32_.Swap(&other->map_sint32_sint32_);
  map_sint64_sint64_.Swap(&other->map_sint64_sint64_);
  map_fixed32_fixed32_.Swap(&other->map_fixed32_fixed32_);
  map_fixed64_fixed64_.Swap(&other->map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.Swap(&other->map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.Swap(&other->map_sfixed64_sfixed64_);
  map_int32_float_.Swap(&other->map_int32_float_);
  map_int32_double_.Swap(&other->map_int32_double_);
  map_bool_bool_.Swap(&other->map_bool_bool_);
  map_string_string_.Swap(&other->map_string_string_);
  map_int32_bytes_.Swap(&other->map_int32_bytes_);
  map_int32_enum_.Swap(&other->map_int32_enum_);
  map_int32_foreign_message_.Swap(&other->map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.Swap(&other->map_int32_foreign_message_no_arena_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void MessageContainingEnumCalledType::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MessageContainingEnumCalledType::kTypeFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MessageContainingEnumCalledType::MessageContainingEnumCalledType()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingEnumCalledType.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.MessageContainingEnumCalledType)
}
MessageContainingEnumCalledType::MessageContainingEnumCalledType(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  type_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingEnumCalledType.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.MessageContainingEnumCalledType)
}
MessageContainingEnumCalledType::MessageContainingEnumCalledType(const MessageContainingEnumCalledType& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  type_.MergeFrom(from.type_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.MessageContainingEnumCalledType)
}

void MessageContainingEnumCalledType::SharedCtor() {
}

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

void MessageContainingEnumCalledType::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void MessageContainingEnumCalledType::ArenaDtor(void* object) {
  MessageContainingEnumCalledType* _this = reinterpret_cast< MessageContainingEnumCalledType* >(object);
  (void)_this;
}
void MessageContainingEnumCalledType::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void MessageContainingEnumCalledType::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* MessageContainingEnumCalledType::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const MessageContainingEnumCalledType& MessageContainingEnumCalledType::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingEnumCalledType.base);
  return *internal_default_instance();
}


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

  type_.Clear();
  _internal_metadata_.Clear();
}

bool MessageContainingEnumCalledType::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.MessageContainingEnumCalledType)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          MessageContainingEnumCalledType_TypeEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MessageContainingEnumCalledType_TypeEntry_DoNotUse,
              ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType > > parser(&type_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.MessageContainingEnumCalledType.TypeEntry.key"));
        } 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.MessageContainingEnumCalledType)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.MessageContainingEnumCalledType)
  return false;
#undef DO_
}

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

  // map<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
  if (!this->type().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.MessageContainingEnumCalledType.TypeEntry.key");
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->type().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->type().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_iterator
          it = this->type().begin();
          it != this->type().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<MessageContainingEnumCalledType_TypeEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(type_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<MessageContainingEnumCalledType_TypeEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_iterator
          it = this->type().begin();
          it != this->type().end(); ++it) {
        entry.reset(type_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

  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.MessageContainingEnumCalledType)
}

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

  // map<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
  if (!this->type().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.MessageContainingEnumCalledType.TypeEntry.key");
      }
    };

    if (deterministic &&
        this->type().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->type().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_iterator
          it = this->type().begin();
          it != this->type().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<MessageContainingEnumCalledType_TypeEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(type_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<MessageContainingEnumCalledType_TypeEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_iterator
          it = this->type().begin();
          it != this->type().end(); ++it) {
        entry.reset(type_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

  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.MessageContainingEnumCalledType)
  return target;
}

size_t MessageContainingEnumCalledType::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.MessageContainingEnumCalledType)
  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<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->type_size());
  {
    ::std::unique_ptr<MessageContainingEnumCalledType_TypeEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >::const_iterator
        it = this->type().begin();
        it != this->type().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(type_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  type_.MergeFrom(from.type_);
}

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

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

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

void MessageContainingEnumCalledType::Swap(MessageContainingEnumCalledType* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    MessageContainingEnumCalledType* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void MessageContainingEnumCalledType::UnsafeArenaSwap(MessageContainingEnumCalledType* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void MessageContainingEnumCalledType::InternalSwap(MessageContainingEnumCalledType* other) {
  using std::swap;
  type_.Swap(&other->type_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void MessageContainingMapCalledEntry::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MessageContainingMapCalledEntry::kEntryFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MessageContainingMapCalledEntry::MessageContainingMapCalledEntry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingMapCalledEntry.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.MessageContainingMapCalledEntry)
}
MessageContainingMapCalledEntry::MessageContainingMapCalledEntry(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  entry_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingMapCalledEntry.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.MessageContainingMapCalledEntry)
}
MessageContainingMapCalledEntry::MessageContainingMapCalledEntry(const MessageContainingMapCalledEntry& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  entry_.MergeFrom(from.entry_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.MessageContainingMapCalledEntry)
}

void MessageContainingMapCalledEntry::SharedCtor() {
}

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

void MessageContainingMapCalledEntry::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void MessageContainingMapCalledEntry::ArenaDtor(void* object) {
  MessageContainingMapCalledEntry* _this = reinterpret_cast< MessageContainingMapCalledEntry* >(object);
  (void)_this;
}
void MessageContainingMapCalledEntry::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void MessageContainingMapCalledEntry::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* MessageContainingMapCalledEntry::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const MessageContainingMapCalledEntry& MessageContainingMapCalledEntry::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_MessageContainingMapCalledEntry.base);
  return *internal_default_instance();
}


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

  entry_.Clear();
  _internal_metadata_.Clear();
}

bool MessageContainingMapCalledEntry::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.MessageContainingMapCalledEntry)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, int32> entry = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          MessageContainingMapCalledEntry_EntryEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MessageContainingMapCalledEntry_EntryEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&entry_);
          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.MessageContainingMapCalledEntry)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.MessageContainingMapCalledEntry)
  return false;
#undef DO_
}

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

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

    if (output->IsSerializationDeterministic() &&
        this->entry().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->entry().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->entry().begin();
          it != this->entry().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<MessageContainingMapCalledEntry_EntryEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(entry_.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);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<MessageContainingMapCalledEntry_EntryEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->entry().begin();
          it != this->entry().end(); ++it) {
        entry.reset(entry_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.MessageContainingMapCalledEntry)
}

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

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

    if (deterministic &&
        this->entry().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->entry().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->entry().begin();
          it != this->entry().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<MessageContainingMapCalledEntry_EntryEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(entry_.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);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<MessageContainingMapCalledEntry_EntryEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
          it = this->entry().begin();
          it != this->entry().end(); ++it) {
        entry.reset(entry_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  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.MessageContainingMapCalledEntry)
  return target;
}

size_t MessageContainingMapCalledEntry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.MessageContainingMapCalledEntry)
  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, int32> entry = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->entry_size());
  {
    ::std::unique_ptr<MessageContainingMapCalledEntry_EntryEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->entry().begin();
        it != this->entry().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(entry_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  entry_.MergeFrom(from.entry_);
}

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

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

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

void MessageContainingMapCalledEntry::Swap(MessageContainingMapCalledEntry* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    MessageContainingMapCalledEntry* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void MessageContainingMapCalledEntry::UnsafeArenaSwap(MessageContainingMapCalledEntry* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void MessageContainingMapCalledEntry::InternalSwap(MessageContainingMapCalledEntry* other) {
  using std::swap;
  entry_.Swap(&other->entry_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void TestRecursiveMapMessage::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestRecursiveMapMessage::kAFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestRecursiveMapMessage::TestRecursiveMapMessage()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRecursiveMapMessage.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestRecursiveMapMessage)
}
TestRecursiveMapMessage::TestRecursiveMapMessage(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  a_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRecursiveMapMessage.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestRecursiveMapMessage)
}
TestRecursiveMapMessage::TestRecursiveMapMessage(const TestRecursiveMapMessage& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  a_.MergeFrom(from.a_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestRecursiveMapMessage)
}

void TestRecursiveMapMessage::SharedCtor() {
}

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

void TestRecursiveMapMessage::SharedDtor() {
  GOOGLE_DCHECK(GetArenaNoVirtual() == NULL);
}

void TestRecursiveMapMessage::ArenaDtor(void* object) {
  TestRecursiveMapMessage* _this = reinterpret_cast< TestRecursiveMapMessage* >(object);
  (void)_this;
}
void TestRecursiveMapMessage::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestRecursiveMapMessage::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TestRecursiveMapMessage::descriptor() {
  ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TestRecursiveMapMessage& TestRecursiveMapMessage::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::scc_info_TestRecursiveMapMessage.base);
  return *internal_default_instance();
}


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

  a_.Clear();
  _internal_metadata_.Clear();
}

bool TestRecursiveMapMessage::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.TestRecursiveMapMessage)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestRecursiveMapMessage_AEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestRecursiveMapMessage_AEntry_DoNotUse,
              ::std::string, ::protobuf_unittest::TestRecursiveMapMessage,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage > > parser(&a_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "protobuf_unittest.TestRecursiveMapMessage.AEntry.key"));
        } 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.TestRecursiveMapMessage)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestRecursiveMapMessage)
  return false;
#undef DO_
}

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

  // map<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
  if (!this->a().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestRecursiveMapMessage.AEntry.key");
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->a().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->a().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_iterator
          it = this->a().begin();
          it != this->a().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<TestRecursiveMapMessage_AEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(a_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestRecursiveMapMessage_AEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_iterator
          it = this->a().begin();
          it != this->a().end(); ++it) {
        entry.reset(a_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            1, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

  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.TestRecursiveMapMessage)
}

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

  // map<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
  if (!this->a().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "protobuf_unittest.TestRecursiveMapMessage.AEntry.key");
      }
    };

    if (deterministic &&
        this->a().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->a().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_iterator
          it = this->a().begin();
          it != this->a().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<TestRecursiveMapMessage_AEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(a_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestRecursiveMapMessage_AEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_iterator
          it = this->a().begin();
          it != this->a().end(); ++it) {
        entry.reset(a_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       1, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

  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.TestRecursiveMapMessage)
  return target;
}

size_t TestRecursiveMapMessage::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestRecursiveMapMessage)
  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<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->a_size());
  {
    ::std::unique_ptr<TestRecursiveMapMessage_AEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >::const_iterator
        it = this->a().begin();
        it != this->a().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(a_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  a_.MergeFrom(from.a_);
}

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

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

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

void TestRecursiveMapMessage::Swap(TestRecursiveMapMessage* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestRecursiveMapMessage* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestRecursiveMapMessage::UnsafeArenaSwap(TestRecursiveMapMessage* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestRecursiveMapMessage::InternalSwap(TestRecursiveMapMessage* other) {
  using std::swap;
  a_.Swap(&other->a_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


// @@protoc_insertion_point(namespace_scope)
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32Int32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt64Int64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapUint32Uint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapUint64Uint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapSint32Sint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapSint64Sint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapFixed32Fixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapFixed64Fixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapSfixed32Sfixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapSfixed64Sfixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32FloatEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32DoubleEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapBoolBoolEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapStringStringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32BytesEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32EnumEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32ForeignMessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapStringForeignMessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap_MapInt32AllTypesEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapSubmessage* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapSubmessage >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapSubmessage >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMessageMap_MapInt32MessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMessageMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMessageMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMessageMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestSameTypeMap_Map1Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestSameTypeMap_Map2Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestSameTypeMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestSameTypeMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestSameTypeMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRequiredMessageMap_MapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRequiredMessageMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRequiredMessageMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRequiredMessageMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32Int32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt64Int64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapUint32Uint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapUint64Uint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapSint32Sint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapSint64Sint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapFixed32Fixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapFixed64Fixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32FloatEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32DoubleEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapBoolBoolEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapStringStringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32BytesEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32EnumEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::MessageContainingEnumCalledType_TypeEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MessageContainingEnumCalledType* Arena::CreateMaybeMessage< ::protobuf_unittest::MessageContainingEnumCalledType >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::MessageContainingEnumCalledType >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::MessageContainingMapCalledEntry_EntryEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::MessageContainingMapCalledEntry* Arena::CreateMaybeMessage< ::protobuf_unittest::MessageContainingMapCalledEntry >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::MessageContainingMapCalledEntry >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRecursiveMapMessage_AEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRecursiveMapMessage* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRecursiveMapMessage >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRecursiveMapMessage >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
