text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: google/protobuf/map_unittest.proto
  
  #ifndef PROTOBUF_google_2fprotobuf_2fmap_5funittest_2eproto__INCLUDED
  #define PROTOBUF_google_2fprotobuf_2fmap_5funittest_2eproto__INCLUDED
  
  #include <string>
  
  #include <google/protobuf/stubs/common.h>
  
  #if GOOGLE_PROTOBUF_VERSION < 3005000
  #error This file was generated by a newer version of protoc which is
  #error incompatible with your Protocol Buffer headers.  Please update
  #error your headers.
  #endif
  #if 3005001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
  #error This file was generated by an older version of protoc which is
  #error incompatible with your Protocol Buffer headers.  Please
  #error regenerate this file with a newer version of protoc.
  #endif
  
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/metadata.h>
  #include <google/protobuf/message.h>
  #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  #include <google/protobuf/extension_set.h>  // IWYU pragma: export
  #include <google/protobuf/map.h>  // IWYU pragma: export
  #include <google/protobuf/map_entry.h>
  #include <google/protobuf/map_field_inl.h>
  #include <google/protobuf/generated_enum_reflection.h>
  #include <google/protobuf/unknown_field_set.h>
  #include <google/protobuf/unittest.pb.h>
  #include <google/protobuf/unittest_no_arena.pb.h>
  // @@protoc_insertion_point(includes)
  
  namespace protobuf_google_2fprotobuf_2fmap_5funittest_2eproto {
  // Internal implementation detail -- do not use these members.
  struct TableStruct {
    static const ::google::protobuf::internal::ParseTableField entries[];
    static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
    static const ::google::protobuf::internal::ParseTable schema[53];
    static const ::google::protobuf::internal::FieldMetadata field_metadata[];
    static const ::google::protobuf::internal::SerializationTable serialization_table[];
    static const ::google::protobuf::uint32 offsets[];
  };
  void AddDescriptors();
  void InitDefaultsTestMap_MapInt32Int32Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32Int32Entry_DoNotUse();
  void InitDefaultsTestMap_MapInt64Int64Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt64Int64Entry_DoNotUse();
  void InitDefaultsTestMap_MapUint32Uint32Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapUint32Uint32Entry_DoNotUse();
  void InitDefaultsTestMap_MapUint64Uint64Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapUint64Uint64Entry_DoNotUse();
  void InitDefaultsTestMap_MapSint32Sint32Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapSint32Sint32Entry_DoNotUse();
  void InitDefaultsTestMap_MapSint64Sint64Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapSint64Sint64Entry_DoNotUse();
  void InitDefaultsTestMap_MapFixed32Fixed32Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapFixed32Fixed32Entry_DoNotUse();
  void InitDefaultsTestMap_MapFixed64Fixed64Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapFixed64Fixed64Entry_DoNotUse();
  void InitDefaultsTestMap_MapSfixed32Sfixed32Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapSfixed32Sfixed32Entry_DoNotUse();
  void InitDefaultsTestMap_MapSfixed64Sfixed64Entry_DoNotUseImpl();
  void InitDefaultsTestMap_MapSfixed64Sfixed64Entry_DoNotUse();
  void InitDefaultsTestMap_MapInt32FloatEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32FloatEntry_DoNotUse();
  void InitDefaultsTestMap_MapInt32DoubleEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32DoubleEntry_DoNotUse();
  void InitDefaultsTestMap_MapBoolBoolEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapBoolBoolEntry_DoNotUse();
  void InitDefaultsTestMap_MapStringStringEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapStringStringEntry_DoNotUse();
  void InitDefaultsTestMap_MapInt32BytesEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32BytesEntry_DoNotUse();
  void InitDefaultsTestMap_MapInt32EnumEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32EnumEntry_DoNotUse();
  void InitDefaultsTestMap_MapInt32ForeignMessageEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32ForeignMessageEntry_DoNotUse();
  void InitDefaultsTestMap_MapStringForeignMessageEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapStringForeignMessageEntry_DoNotUse();
  void InitDefaultsTestMap_MapInt32AllTypesEntry_DoNotUseImpl();
  void InitDefaultsTestMap_MapInt32AllTypesEntry_DoNotUse();
  void InitDefaultsTestMapImpl();
  void InitDefaultsTestMap();
  void InitDefaultsTestMapSubmessageImpl();
  void InitDefaultsTestMapSubmessage();
  void InitDefaultsTestMessageMap_MapInt32MessageEntry_DoNotUseImpl();
  void InitDefaultsTestMessageMap_MapInt32MessageEntry_DoNotUse();
  void InitDefaultsTestMessageMapImpl();
  void InitDefaultsTestMessageMap();
  void InitDefaultsTestSameTypeMap_Map1Entry_DoNotUseImpl();
  void InitDefaultsTestSameTypeMap_Map1Entry_DoNotUse();
  void InitDefaultsTestSameTypeMap_Map2Entry_DoNotUseImpl();
  void InitDefaultsTestSameTypeMap_Map2Entry_DoNotUse();
  void InitDefaultsTestSameTypeMapImpl();
  void InitDefaultsTestSameTypeMap();
  void InitDefaultsTestRequiredMessageMap_MapFieldEntry_DoNotUseImpl();
  void InitDefaultsTestRequiredMessageMap_MapFieldEntry_DoNotUse();
  void InitDefaultsTestRequiredMessageMapImpl();
  void InitDefaultsTestRequiredMessageMap();
  void InitDefaultsTestArenaMap_MapInt32Int32Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32Int32Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt64Int64Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt64Int64Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapUint32Uint32Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapUint32Uint32Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapUint64Uint64Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapUint64Uint64Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapSint32Sint32Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapSint32Sint32Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapSint64Sint64Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapSint64Sint64Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapFixed32Fixed32Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapFixed32Fixed32Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapFixed64Fixed64Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapFixed64Fixed64Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapSfixed32Sfixed32Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapSfixed64Sfixed64Entry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32FloatEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32FloatEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32DoubleEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32DoubleEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapBoolBoolEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapBoolBoolEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapStringStringEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapStringStringEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32BytesEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32BytesEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32EnumEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32EnumEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32ForeignMessageEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32ForeignMessageEntry_DoNotUse();
  void InitDefaultsTestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUseImpl();
  void InitDefaultsTestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse();
  void InitDefaultsTestArenaMapImpl();
  void InitDefaultsTestArenaMap();
  void InitDefaultsMessageContainingEnumCalledTypeImpl();
  void InitDefaultsMessageContainingEnumCalledType();
  void InitDefaultsMessageContainingMapCalledEntry_EntryEntry_DoNotUseImpl();
  void InitDefaultsMessageContainingMapCalledEntry_EntryEntry_DoNotUse();
  void InitDefaultsMessageContainingMapCalledEntryImpl();
  void InitDefaultsMessageContainingMapCalledEntry();
  void InitDefaultsTestRecursiveMapMessageImpl();
  void InitDefaultsTestRecursiveMapMessage();
  inline void InitDefaults() {
    InitDefaultsTestMap_MapInt32Int32Entry_DoNotUse();
    InitDefaultsTestMap_MapInt64Int64Entry_DoNotUse();
    InitDefaultsTestMap_MapUint32Uint32Entry_DoNotUse();
    InitDefaultsTestMap_MapUint64Uint64Entry_DoNotUse();
    InitDefaultsTestMap_MapSint32Sint32Entry_DoNotUse();
    InitDefaultsTestMap_MapSint64Sint64Entry_DoNotUse();
    InitDefaultsTestMap_MapFixed32Fixed32Entry_DoNotUse();
    InitDefaultsTestMap_MapFixed64Fixed64Entry_DoNotUse();
    InitDefaultsTestMap_MapSfixed32Sfixed32Entry_DoNotUse();
    InitDefaultsTestMap_MapSfixed64Sfixed64Entry_DoNotUse();
    InitDefaultsTestMap_MapInt32FloatEntry_DoNotUse();
    InitDefaultsTestMap_MapInt32DoubleEntry_DoNotUse();
    InitDefaultsTestMap_MapBoolBoolEntry_DoNotUse();
    InitDefaultsTestMap_MapStringStringEntry_DoNotUse();
    InitDefaultsTestMap_MapInt32BytesEntry_DoNotUse();
    InitDefaultsTestMap_MapInt32EnumEntry_DoNotUse();
    InitDefaultsTestMap_MapInt32ForeignMessageEntry_DoNotUse();
    InitDefaultsTestMap_MapStringForeignMessageEntry_DoNotUse();
    InitDefaultsTestMap_MapInt32AllTypesEntry_DoNotUse();
    InitDefaultsTestMap();
    InitDefaultsTestMapSubmessage();
    InitDefaultsTestMessageMap_MapInt32MessageEntry_DoNotUse();
    InitDefaultsTestMessageMap();
    InitDefaultsTestSameTypeMap_Map1Entry_DoNotUse();
    InitDefaultsTestSameTypeMap_Map2Entry_DoNotUse();
    InitDefaultsTestSameTypeMap();
    InitDefaultsTestRequiredMessageMap_MapFieldEntry_DoNotUse();
    InitDefaultsTestRequiredMessageMap();
    InitDefaultsTestArenaMap_MapInt32Int32Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt64Int64Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapUint32Uint32Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapUint64Uint64Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapSint32Sint32Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapSint64Sint64Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapFixed32Fixed32Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapFixed64Fixed64Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32FloatEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32DoubleEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapBoolBoolEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapStringStringEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32BytesEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32EnumEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32ForeignMessageEntry_DoNotUse();
    InitDefaultsTestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse();
    InitDefaultsTestArenaMap();
    InitDefaultsMessageContainingEnumCalledType();
    InitDefaultsMessageContainingMapCalledEntry_EntryEntry_DoNotUse();
    InitDefaultsMessageContainingMapCalledEntry();
    InitDefaultsTestRecursiveMapMessage();
  }
  }  // namespace protobuf_google_2fprotobuf_2fmap_5funittest_2eproto
  namespace protobuf_unittest {
  class MessageContainingEnumCalledType;
  class MessageContainingEnumCalledTypeDefaultTypeInternal;
  extern MessageContainingEnumCalledTypeDefaultTypeInternal _MessageContainingEnumCalledType_default_instance_;
  class MessageContainingEnumCalledType_TypeEntry_DoNotUse;
  class MessageContainingEnumCalledType_TypeEntry_DoNotUseDefaultTypeInternal;
  extern MessageContainingEnumCalledType_TypeEntry_DoNotUseDefaultTypeInternal _MessageContainingEnumCalledType_TypeEntry_DoNotUse_default_instance_;
  class MessageContainingMapCalledEntry;
  class MessageContainingMapCalledEntryDefaultTypeInternal;
  extern MessageContainingMapCalledEntryDefaultTypeInternal _MessageContainingMapCalledEntry_default_instance_;
  class MessageContainingMapCalledEntry_EntryEntry_DoNotUse;
  class MessageContainingMapCalledEntry_EntryEntry_DoNotUseDefaultTypeInternal;
  extern MessageContainingMapCalledEntry_EntryEntry_DoNotUseDefaultTypeInternal _MessageContainingMapCalledEntry_EntryEntry_DoNotUse_default_instance_;
  class TestArenaMap;
  class TestArenaMapDefaultTypeInternal;
  extern TestArenaMapDefaultTypeInternal _TestArenaMap_default_instance_;
  class TestArenaMap_MapBoolBoolEntry_DoNotUse;
  class TestArenaMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapBoolBoolEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapFixed32Fixed32Entry_DoNotUse;
  class TestArenaMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapFixed64Fixed64Entry_DoNotUse;
  class TestArenaMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32BytesEntry_DoNotUse;
  class TestArenaMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32BytesEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32DoubleEntry_DoNotUse;
  class TestArenaMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32EnumEntry_DoNotUse;
  class TestArenaMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32EnumEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32FloatEntry_DoNotUse;
  class TestArenaMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32FloatEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse;
  class TestArenaMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse;
  class TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt32Int32Entry_DoNotUse;
  class TestArenaMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt32Int32Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapInt64Int64Entry_DoNotUse;
  class TestArenaMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapInt64Int64Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse;
  class TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse;
  class TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapSint32Sint32Entry_DoNotUse;
  class TestArenaMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapSint64Sint64Entry_DoNotUse;
  class TestArenaMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapStringStringEntry_DoNotUse;
  class TestArenaMap_MapStringStringEntry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapStringStringEntry_DoNotUseDefaultTypeInternal _TestArenaMap_MapStringStringEntry_DoNotUse_default_instance_;
  class TestArenaMap_MapUint32Uint32Entry_DoNotUse;
  class TestArenaMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
  class TestArenaMap_MapUint64Uint64Entry_DoNotUse;
  class TestArenaMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal;
  extern TestArenaMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal _TestArenaMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
  class TestMap;
  class TestMapDefaultTypeInternal;
  extern TestMapDefaultTypeInternal _TestMap_default_instance_;
  class TestMapSubmessage;
  class TestMapSubmessageDefaultTypeInternal;
  extern TestMapSubmessageDefaultTypeInternal _TestMapSubmessage_default_instance_;
  class TestMap_MapBoolBoolEntry_DoNotUse;
  class TestMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapBoolBoolEntry_DoNotUseDefaultTypeInternal _TestMap_MapBoolBoolEntry_DoNotUse_default_instance_;
  class TestMap_MapFixed32Fixed32Entry_DoNotUse;
  class TestMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal _TestMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
  class TestMap_MapFixed64Fixed64Entry_DoNotUse;
  class TestMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal _TestMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
  class TestMap_MapInt32AllTypesEntry_DoNotUse;
  class TestMap_MapInt32AllTypesEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32AllTypesEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32AllTypesEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32BytesEntry_DoNotUse;
  class TestMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32BytesEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32BytesEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32DoubleEntry_DoNotUse;
  class TestMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32DoubleEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32EnumEntry_DoNotUse;
  class TestMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32EnumEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32EnumEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32FloatEntry_DoNotUse;
  class TestMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32FloatEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32FloatEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32ForeignMessageEntry_DoNotUse;
  class TestMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal _TestMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
  class TestMap_MapInt32Int32Entry_DoNotUse;
  class TestMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt32Int32Entry_DoNotUseDefaultTypeInternal _TestMap_MapInt32Int32Entry_DoNotUse_default_instance_;
  class TestMap_MapInt64Int64Entry_DoNotUse;
  class TestMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapInt64Int64Entry_DoNotUseDefaultTypeInternal _TestMap_MapInt64Int64Entry_DoNotUse_default_instance_;
  class TestMap_MapSfixed32Sfixed32Entry_DoNotUse;
  class TestMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal _TestMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
  class TestMap_MapSfixed64Sfixed64Entry_DoNotUse;
  class TestMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal _TestMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
  class TestMap_MapSint32Sint32Entry_DoNotUse;
  class TestMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal _TestMap_MapSint32Sint32Entry_DoNotUse_default_instance_;
  class TestMap_MapSint64Sint64Entry_DoNotUse;
  class TestMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal _TestMap_MapSint64Sint64Entry_DoNotUse_default_instance_;
  class TestMap_MapStringForeignMessageEntry_DoNotUse;
  class TestMap_MapStringForeignMessageEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapStringForeignMessageEntry_DoNotUseDefaultTypeInternal _TestMap_MapStringForeignMessageEntry_DoNotUse_default_instance_;
  class TestMap_MapStringStringEntry_DoNotUse;
  class TestMap_MapStringStringEntry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapStringStringEntry_DoNotUseDefaultTypeInternal _TestMap_MapStringStringEntry_DoNotUse_default_instance_;
  class TestMap_MapUint32Uint32Entry_DoNotUse;
  class TestMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal _TestMap_MapUint32Uint32Entry_DoNotUse_default_instance_;
  class TestMap_MapUint64Uint64Entry_DoNotUse;
  class TestMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal;
  extern TestMap_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal _TestMap_MapUint64Uint64Entry_DoNotUse_default_instance_;
  class TestMessageMap;
  class TestMessageMapDefaultTypeInternal;
  extern TestMessageMapDefaultTypeInternal _TestMessageMap_default_instance_;
  class TestMessageMap_MapInt32MessageEntry_DoNotUse;
  class TestMessageMap_MapInt32MessageEntry_DoNotUseDefaultTypeInternal;
  extern TestMessageMap_MapInt32MessageEntry_DoNotUseDefaultTypeInternal _TestMessageMap_MapInt32MessageEntry_DoNotUse_default_instance_;
  class TestRecursiveMapMessage;
  class TestRecursiveMapMessageDefaultTypeInternal;
  extern TestRecursiveMapMessageDefaultTypeInternal _TestRecursiveMapMessage_default_instance_;
  class TestRecursiveMapMessage_AEntry_DoNotUse;
  class TestRecursiveMapMessage_AEntry_DoNotUseDefaultTypeInternal;
  extern TestRecursiveMapMessage_AEntry_DoNotUseDefaultTypeInternal _TestRecursiveMapMessage_AEntry_DoNotUse_default_instance_;
  class TestRequiredMessageMap;
  class TestRequiredMessageMapDefaultTypeInternal;
  extern TestRequiredMessageMapDefaultTypeInternal _TestRequiredMessageMap_default_instance_;
  class TestRequiredMessageMap_MapFieldEntry_DoNotUse;
  class TestRequiredMessageMap_MapFieldEntry_DoNotUseDefaultTypeInternal;
  extern TestRequiredMessageMap_MapFieldEntry_DoNotUseDefaultTypeInternal _TestRequiredMessageMap_MapFieldEntry_DoNotUse_default_instance_;
  class TestSameTypeMap;
  class TestSameTypeMapDefaultTypeInternal;
  extern TestSameTypeMapDefaultTypeInternal _TestSameTypeMap_default_instance_;
  class TestSameTypeMap_Map1Entry_DoNotUse;
  class TestSameTypeMap_Map1Entry_DoNotUseDefaultTypeInternal;
  extern TestSameTypeMap_Map1Entry_DoNotUseDefaultTypeInternal _TestSameTypeMap_Map1Entry_DoNotUse_default_instance_;
  class TestSameTypeMap_Map2Entry_DoNotUse;
  class TestSameTypeMap_Map2Entry_DoNotUseDefaultTypeInternal;
  extern TestSameTypeMap_Map2Entry_DoNotUseDefaultTypeInternal _TestSameTypeMap_Map2Entry_DoNotUse_default_instance_;
  }  // namespace protobuf_unittest
  namespace protobuf_unittest {
  
  enum MessageContainingEnumCalledType_Type {
    MessageContainingEnumCalledType_Type_TYPE_FOO = 0,
    MessageContainingEnumCalledType_Type_MessageContainingEnumCalledType_Type_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
    MessageContainingEnumCalledType_Type_MessageContainingEnumCalledType_Type_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
  };
  bool MessageContainingEnumCalledType_Type_IsValid(int value);
  const MessageContainingEnumCalledType_Type MessageContainingEnumCalledType_Type_Type_MIN = MessageContainingEnumCalledType_Type_TYPE_FOO;
  const MessageContainingEnumCalledType_Type MessageContainingEnumCalledType_Type_Type_MAX = MessageContainingEnumCalledType_Type_TYPE_FOO;
  const int MessageContainingEnumCalledType_Type_Type_ARRAYSIZE = MessageContainingEnumCalledType_Type_Type_MAX + 1;
  
  const ::google::protobuf::EnumDescriptor* MessageContainingEnumCalledType_Type_descriptor();
  inline const ::std::string& MessageContainingEnumCalledType_Type_Name(MessageContainingEnumCalledType_Type value) {
    return ::google::protobuf::internal::NameOfEnum(
      MessageContainingEnumCalledType_Type_descriptor(), value);
  }
  inline bool MessageContainingEnumCalledType_Type_Parse(
      const ::std::string& name, MessageContainingEnumCalledType_Type* value) {
    return ::google::protobuf::internal::ParseNamedEnum<MessageContainingEnumCalledType_Type>(
      MessageContainingEnumCalledType_Type_descriptor(), name, value);
  }
  enum MapEnum {
    MAP_ENUM_FOO = 0,
    MAP_ENUM_BAR = 1,
    MAP_ENUM_BAZ = 2,
    MapEnum_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
    MapEnum_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
  };
  bool MapEnum_IsValid(int value);
  const MapEnum MapEnum_MIN = MAP_ENUM_FOO;
  const MapEnum MapEnum_MAX = MAP_ENUM_BAZ;
  const int MapEnum_ARRAYSIZE = MapEnum_MAX + 1;
  
  const ::google::protobuf::EnumDescriptor* MapEnum_descriptor();
  inline const ::std::string& MapEnum_Name(MapEnum value) {
    return ::google::protobuf::internal::NameOfEnum(
      MapEnum_descriptor(), value);
  }
  inline bool MapEnum_Parse(
      const ::std::string& name, MapEnum* value) {
    return ::google::protobuf::internal::ParseNamedEnum<MapEnum>(
      MapEnum_descriptor(), name, value);
  }
  // ===================================================================
  
  class TestMap_MapInt32Int32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32Int32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32Int32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > SuperType;
    TestMap_MapInt32Int32Entry_DoNotUse();
    TestMap_MapInt32Int32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32Int32Entry_DoNotUse& other);
    static const TestMap_MapInt32Int32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32Int32Entry_DoNotUse*>(&_TestMap_MapInt32Int32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt64Int64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt64Int64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt64Int64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      0 > SuperType;
    TestMap_MapInt64Int64Entry_DoNotUse();
    TestMap_MapInt64Int64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt64Int64Entry_DoNotUse& other);
    static const TestMap_MapInt64Int64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt64Int64Entry_DoNotUse*>(&_TestMap_MapInt64Int64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapUint32Uint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapUint32Uint32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapUint32Uint32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      0 > SuperType;
    TestMap_MapUint32Uint32Entry_DoNotUse();
    TestMap_MapUint32Uint32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapUint32Uint32Entry_DoNotUse& other);
    static const TestMap_MapUint32Uint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapUint32Uint32Entry_DoNotUse*>(&_TestMap_MapUint32Uint32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapUint64Uint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapUint64Uint64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapUint64Uint64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      0 > SuperType;
    TestMap_MapUint64Uint64Entry_DoNotUse();
    TestMap_MapUint64Uint64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapUint64Uint64Entry_DoNotUse& other);
    static const TestMap_MapUint64Uint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapUint64Uint64Entry_DoNotUse*>(&_TestMap_MapUint64Uint64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapSint32Sint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapSint32Sint32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapSint32Sint32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      0 > SuperType;
    TestMap_MapSint32Sint32Entry_DoNotUse();
    TestMap_MapSint32Sint32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapSint32Sint32Entry_DoNotUse& other);
    static const TestMap_MapSint32Sint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapSint32Sint32Entry_DoNotUse*>(&_TestMap_MapSint32Sint32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapSint64Sint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapSint64Sint64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapSint64Sint64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      0 > SuperType;
    TestMap_MapSint64Sint64Entry_DoNotUse();
    TestMap_MapSint64Sint64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapSint64Sint64Entry_DoNotUse& other);
    static const TestMap_MapSint64Sint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapSint64Sint64Entry_DoNotUse*>(&_TestMap_MapSint64Sint64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapFixed32Fixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapFixed32Fixed32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapFixed32Fixed32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      0 > SuperType;
    TestMap_MapFixed32Fixed32Entry_DoNotUse();
    TestMap_MapFixed32Fixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapFixed32Fixed32Entry_DoNotUse& other);
    static const TestMap_MapFixed32Fixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapFixed32Fixed32Entry_DoNotUse*>(&_TestMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapFixed64Fixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapFixed64Fixed64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapFixed64Fixed64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      0 > SuperType;
    TestMap_MapFixed64Fixed64Entry_DoNotUse();
    TestMap_MapFixed64Fixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapFixed64Fixed64Entry_DoNotUse& other);
    static const TestMap_MapFixed64Fixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapFixed64Fixed64Entry_DoNotUse*>(&_TestMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapSfixed32Sfixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapSfixed32Sfixed32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapSfixed32Sfixed32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      0 > SuperType;
    TestMap_MapSfixed32Sfixed32Entry_DoNotUse();
    TestMap_MapSfixed32Sfixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapSfixed32Sfixed32Entry_DoNotUse& other);
    static const TestMap_MapSfixed32Sfixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapSfixed32Sfixed32Entry_DoNotUse*>(&_TestMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapSfixed64Sfixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapSfixed64Sfixed64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapSfixed64Sfixed64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      0 > SuperType;
    TestMap_MapSfixed64Sfixed64Entry_DoNotUse();
    TestMap_MapSfixed64Sfixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapSfixed64Sfixed64Entry_DoNotUse& other);
    static const TestMap_MapSfixed64Sfixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapSfixed64Sfixed64Entry_DoNotUse*>(&_TestMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32FloatEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32FloatEntry_DoNotUse, 
      ::google::protobuf::int32, float,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32FloatEntry_DoNotUse, 
      ::google::protobuf::int32, float,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
      0 > SuperType;
    TestMap_MapInt32FloatEntry_DoNotUse();
    TestMap_MapInt32FloatEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32FloatEntry_DoNotUse& other);
    static const TestMap_MapInt32FloatEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32FloatEntry_DoNotUse*>(&_TestMap_MapInt32FloatEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32DoubleEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32DoubleEntry_DoNotUse, 
      ::google::protobuf::int32, double,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32DoubleEntry_DoNotUse, 
      ::google::protobuf::int32, double,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
      0 > SuperType;
    TestMap_MapInt32DoubleEntry_DoNotUse();
    TestMap_MapInt32DoubleEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32DoubleEntry_DoNotUse& other);
    static const TestMap_MapInt32DoubleEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32DoubleEntry_DoNotUse*>(&_TestMap_MapInt32DoubleEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapBoolBoolEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapBoolBoolEntry_DoNotUse, 
      bool, bool,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapBoolBoolEntry_DoNotUse, 
      bool, bool,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      0 > SuperType;
    TestMap_MapBoolBoolEntry_DoNotUse();
    TestMap_MapBoolBoolEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapBoolBoolEntry_DoNotUse& other);
    static const TestMap_MapBoolBoolEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapBoolBoolEntry_DoNotUse*>(&_TestMap_MapBoolBoolEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapStringStringEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapStringStringEntry_DoNotUse, 
      ::std::string, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapStringStringEntry_DoNotUse, 
      ::std::string, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > SuperType;
    TestMap_MapStringStringEntry_DoNotUse();
    TestMap_MapStringStringEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapStringStringEntry_DoNotUse& other);
    static const TestMap_MapStringStringEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapStringStringEntry_DoNotUse*>(&_TestMap_MapStringStringEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32BytesEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32BytesEntry_DoNotUse, 
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32BytesEntry_DoNotUse, 
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
      0 > SuperType;
    TestMap_MapInt32BytesEntry_DoNotUse();
    TestMap_MapInt32BytesEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32BytesEntry_DoNotUse& other);
    static const TestMap_MapInt32BytesEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32BytesEntry_DoNotUse*>(&_TestMap_MapInt32BytesEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32EnumEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32EnumEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32EnumEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > SuperType;
    TestMap_MapInt32EnumEntry_DoNotUse();
    TestMap_MapInt32EnumEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32EnumEntry_DoNotUse& other);
    static const TestMap_MapInt32EnumEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32EnumEntry_DoNotUse*>(&_TestMap_MapInt32EnumEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32ForeignMessageEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32ForeignMessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32ForeignMessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestMap_MapInt32ForeignMessageEntry_DoNotUse();
    TestMap_MapInt32ForeignMessageEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32ForeignMessageEntry_DoNotUse& other);
    static const TestMap_MapInt32ForeignMessageEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32ForeignMessageEntry_DoNotUse*>(&_TestMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapStringForeignMessageEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapStringForeignMessageEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapStringForeignMessageEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestMap_MapStringForeignMessageEntry_DoNotUse();
    TestMap_MapStringForeignMessageEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapStringForeignMessageEntry_DoNotUse& other);
    static const TestMap_MapStringForeignMessageEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapStringForeignMessageEntry_DoNotUse*>(&_TestMap_MapStringForeignMessageEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap_MapInt32AllTypesEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMap_MapInt32AllTypesEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMap_MapInt32AllTypesEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestMap_MapInt32AllTypesEntry_DoNotUse();
    TestMap_MapInt32AllTypesEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMap_MapInt32AllTypesEntry_DoNotUse& other);
    static const TestMap_MapInt32AllTypesEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMap_MapInt32AllTypesEntry_DoNotUse*>(&_TestMap_MapInt32AllTypesEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestMap) */ {
   public:
    TestMap();
    virtual ~TestMap();
  
    TestMap(const TestMap& from);
  
    inline TestMap& operator=(const TestMap& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestMap(TestMap&& from) noexcept
      : TestMap() {
      *this = ::std::move(from);
    }
  
    inline TestMap& operator=(TestMap&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestMap& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestMap* internal_default_instance() {
      return reinterpret_cast<const TestMap*>(
                 &_TestMap_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      19;
  
    void UnsafeArenaSwap(TestMap* other);
    void Swap(TestMap* other);
    friend void swap(TestMap& a, TestMap& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestMap* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestMap* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestMap& from);
    void MergeFrom(const TestMap& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestMap* other);
    protected:
    explicit TestMap(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, int32> map_int32_int32 = 1;
    int map_int32_int32_size() const;
    void clear_map_int32_int32();
    static const int kMapInt32Int32FieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_int32_int32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_int32_int32();
  
    // map<int64, int64> map_int64_int64 = 2;
    int map_int64_int64_size() const;
    void clear_map_int64_int64();
    static const int kMapInt64Int64FieldNumber = 2;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_int64_int64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_int64_int64();
  
    // map<uint32, uint32> map_uint32_uint32 = 3;
    int map_uint32_uint32_size() const;
    void clear_map_uint32_uint32();
    static const int kMapUint32Uint32FieldNumber = 3;
    const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
        map_uint32_uint32() const;
    ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
        mutable_map_uint32_uint32();
  
    // map<uint64, uint64> map_uint64_uint64 = 4;
    int map_uint64_uint64_size() const;
    void clear_map_uint64_uint64();
    static const int kMapUint64Uint64FieldNumber = 4;
    const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
        map_uint64_uint64() const;
    ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
        mutable_map_uint64_uint64();
  
    // map<sint32, sint32> map_sint32_sint32 = 5;
    int map_sint32_sint32_size() const;
    void clear_map_sint32_sint32();
    static const int kMapSint32Sint32FieldNumber = 5;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_sint32_sint32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_sint32_sint32();
  
    // map<sint64, sint64> map_sint64_sint64 = 6;
    int map_sint64_sint64_size() const;
    void clear_map_sint64_sint64();
    static const int kMapSint64Sint64FieldNumber = 6;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_sint64_sint64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_sint64_sint64();
  
    // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
    int map_fixed32_fixed32_size() const;
    void clear_map_fixed32_fixed32();
    static const int kMapFixed32Fixed32FieldNumber = 7;
    const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
        map_fixed32_fixed32() const;
    ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
        mutable_map_fixed32_fixed32();
  
    // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
    int map_fixed64_fixed64_size() const;
    void clear_map_fixed64_fixed64();
    static const int kMapFixed64Fixed64FieldNumber = 8;
    const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
        map_fixed64_fixed64() const;
    ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
        mutable_map_fixed64_fixed64();
  
    // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
    int map_sfixed32_sfixed32_size() const;
    void clear_map_sfixed32_sfixed32();
    static const int kMapSfixed32Sfixed32FieldNumber = 9;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_sfixed32_sfixed32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_sfixed32_sfixed32();
  
    // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
    int map_sfixed64_sfixed64_size() const;
    void clear_map_sfixed64_sfixed64();
    static const int kMapSfixed64Sfixed64FieldNumber = 10;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_sfixed64_sfixed64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_sfixed64_sfixed64();
  
    // map<int32, float> map_int32_float = 11;
    int map_int32_float_size() const;
    void clear_map_int32_float();
    static const int kMapInt32FloatFieldNumber = 11;
    const ::google::protobuf::Map< ::google::protobuf::int32, float >&
        map_int32_float() const;
    ::google::protobuf::Map< ::google::protobuf::int32, float >*
        mutable_map_int32_float();
  
    // map<int32, double> map_int32_double = 12;
    int map_int32_double_size() const;
    void clear_map_int32_double();
    static const int kMapInt32DoubleFieldNumber = 12;
    const ::google::protobuf::Map< ::google::protobuf::int32, double >&
        map_int32_double() const;
    ::google::protobuf::Map< ::google::protobuf::int32, double >*
        mutable_map_int32_double();
  
    // map<bool, bool> map_bool_bool = 13;
    int map_bool_bool_size() const;
    void clear_map_bool_bool();
    static const int kMapBoolBoolFieldNumber = 13;
    const ::google::protobuf::Map< bool, bool >&
        map_bool_bool() const;
    ::google::protobuf::Map< bool, bool >*
        mutable_map_bool_bool();
  
    // map<string, string> map_string_string = 14;
    int map_string_string_size() const;
    void clear_map_string_string();
    static const int kMapStringStringFieldNumber = 14;
    const ::google::protobuf::Map< ::std::string, ::std::string >&
        map_string_string() const;
    ::google::protobuf::Map< ::std::string, ::std::string >*
        mutable_map_string_string();
  
    // map<int32, bytes> map_int32_bytes = 15;
    int map_int32_bytes_size() const;
    void clear_map_int32_bytes();
    static const int kMapInt32BytesFieldNumber = 15;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
        map_int32_bytes() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
        mutable_map_int32_bytes();
  
    // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
    int map_int32_enum_size() const;
    void clear_map_int32_enum();
    static const int kMapInt32EnumFieldNumber = 16;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >&
        map_int32_enum() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >*
        mutable_map_int32_enum();
  
    // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
    int map_int32_foreign_message_size() const;
    void clear_map_int32_foreign_message();
    static const int kMapInt32ForeignMessageFieldNumber = 17;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >&
        map_int32_foreign_message() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >*
        mutable_map_int32_foreign_message();
  
    // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
    int map_string_foreign_message_size() const;
    void clear_map_string_foreign_message();
    static const int kMapStringForeignMessageFieldNumber = 18;
    const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >&
        map_string_foreign_message() const;
    ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >*
        mutable_map_string_foreign_message();
  
    // map<int32, .protobuf_unittest.TestAllTypes> map_int32_all_types = 19;
    int map_int32_all_types_size() const;
    void clear_map_int32_all_types();
    static const int kMapInt32AllTypesFieldNumber = 19;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >&
        map_int32_all_types() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >*
        mutable_map_int32_all_types();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestMap)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > map_int32_int32_;
    ::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 > map_int64_int64_;
    ::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 > map_uint32_uint32_;
    ::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 > map_uint64_uint64_;
    ::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 > map_sint32_sint32_;
    ::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 > map_sint64_sint64_;
    ::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 > map_fixed32_fixed32_;
    ::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 > map_fixed64_fixed64_;
    ::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 > map_sfixed32_sfixed32_;
    ::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 > map_sfixed64_sfixed64_;
    ::google::protobuf::internal::MapField<
        TestMap_MapInt32FloatEntry_DoNotUse,
        ::google::protobuf::int32, float,
        ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
        ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
        0 > map_int32_float_;
    ::google::protobuf::internal::MapField<
        TestMap_MapInt32DoubleEntry_DoNotUse,
        ::google::protobuf::int32, double,
        ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
        ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
        0 > map_int32_double_;
    ::google::protobuf::internal::MapField<
        TestMap_MapBoolBoolEntry_DoNotUse,
        bool, bool,
        ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
        ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
        0 > map_bool_bool_;
    ::google::protobuf::internal::MapField<
        TestMap_MapStringStringEntry_DoNotUse,
        ::std::string, ::std::string,
        ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
        ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
        0 > map_string_string_;
    ::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 > map_int32_bytes_;
    ::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 > map_int32_enum_;
    ::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 > map_int32_foreign_message_;
    ::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 > map_string_foreign_message_;
    ::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 > map_int32_all_types_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestMapImpl();
  };
  // -------------------------------------------------------------------
  
  class TestMapSubmessage : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestMapSubmessage) */ {
   public:
    TestMapSubmessage();
    virtual ~TestMapSubmessage();
  
    TestMapSubmessage(const TestMapSubmessage& from);
  
    inline TestMapSubmessage& operator=(const TestMapSubmessage& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestMapSubmessage(TestMapSubmessage&& from) noexcept
      : TestMapSubmessage() {
      *this = ::std::move(from);
    }
  
    inline TestMapSubmessage& operator=(TestMapSubmessage&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestMapSubmessage& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestMapSubmessage* internal_default_instance() {
      return reinterpret_cast<const TestMapSubmessage*>(
                 &_TestMapSubmessage_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      20;
  
    void UnsafeArenaSwap(TestMapSubmessage* other);
    void Swap(TestMapSubmessage* other);
    friend void swap(TestMapSubmessage& a, TestMapSubmessage& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestMapSubmessage* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestMapSubmessage* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestMapSubmessage& from);
    void MergeFrom(const TestMapSubmessage& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestMapSubmessage* other);
    protected:
    explicit TestMapSubmessage(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    // .protobuf_unittest.TestMap test_map = 1;
    bool has_test_map() const;
    void clear_test_map();
    static const int kTestMapFieldNumber = 1;
    private:
    void _slow_mutable_test_map();
    public:
    const ::protobuf_unittest::TestMap& test_map() const;
    ::protobuf_unittest::TestMap* release_test_map();
    ::protobuf_unittest::TestMap* mutable_test_map();
    void set_allocated_test_map(::protobuf_unittest::TestMap* test_map);
    void unsafe_arena_set_allocated_test_map(
        ::protobuf_unittest::TestMap* test_map);
    ::protobuf_unittest::TestMap* unsafe_arena_release_test_map();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestMapSubmessage)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::protobuf_unittest::TestMap* test_map_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestMapSubmessageImpl();
  };
  // -------------------------------------------------------------------
  
  class TestMessageMap_MapInt32MessageEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMessageMap_MapInt32MessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestMessageMap_MapInt32MessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestMessageMap_MapInt32MessageEntry_DoNotUse();
    TestMessageMap_MapInt32MessageEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestMessageMap_MapInt32MessageEntry_DoNotUse& other);
    static const TestMessageMap_MapInt32MessageEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMessageMap_MapInt32MessageEntry_DoNotUse*>(&_TestMessageMap_MapInt32MessageEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestMessageMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestMessageMap) */ {
   public:
    TestMessageMap();
    virtual ~TestMessageMap();
  
    TestMessageMap(const TestMessageMap& from);
  
    inline TestMessageMap& operator=(const TestMessageMap& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestMessageMap(TestMessageMap&& from) noexcept
      : TestMessageMap() {
      *this = ::std::move(from);
    }
  
    inline TestMessageMap& operator=(TestMessageMap&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestMessageMap& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestMessageMap* internal_default_instance() {
      return reinterpret_cast<const TestMessageMap*>(
                 &_TestMessageMap_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      22;
  
    void UnsafeArenaSwap(TestMessageMap* other);
    void Swap(TestMessageMap* other);
    friend void swap(TestMessageMap& a, TestMessageMap& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestMessageMap* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestMessageMap* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestMessageMap& from);
    void MergeFrom(const TestMessageMap& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestMessageMap* other);
    protected:
    explicit TestMessageMap(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, .protobuf_unittest.TestAllTypes> map_int32_message = 1;
    int map_int32_message_size() const;
    void clear_map_int32_message();
    static const int kMapInt32MessageFieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >&
        map_int32_message() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >*
        mutable_map_int32_message();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestMessageMap)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > map_int32_message_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestMessageMapImpl();
  };
  // -------------------------------------------------------------------
  
  class TestSameTypeMap_Map1Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestSameTypeMap_Map1Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestSameTypeMap_Map1Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > SuperType;
    TestSameTypeMap_Map1Entry_DoNotUse();
    TestSameTypeMap_Map1Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestSameTypeMap_Map1Entry_DoNotUse& other);
    static const TestSameTypeMap_Map1Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestSameTypeMap_Map1Entry_DoNotUse*>(&_TestSameTypeMap_Map1Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestSameTypeMap_Map2Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestSameTypeMap_Map2Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestSameTypeMap_Map2Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > SuperType;
    TestSameTypeMap_Map2Entry_DoNotUse();
    TestSameTypeMap_Map2Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestSameTypeMap_Map2Entry_DoNotUse& other);
    static const TestSameTypeMap_Map2Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestSameTypeMap_Map2Entry_DoNotUse*>(&_TestSameTypeMap_Map2Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestSameTypeMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestSameTypeMap) */ {
   public:
    TestSameTypeMap();
    virtual ~TestSameTypeMap();
  
    TestSameTypeMap(const TestSameTypeMap& from);
  
    inline TestSameTypeMap& operator=(const TestSameTypeMap& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestSameTypeMap(TestSameTypeMap&& from) noexcept
      : TestSameTypeMap() {
      *this = ::std::move(from);
    }
  
    inline TestSameTypeMap& operator=(TestSameTypeMap&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestSameTypeMap& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestSameTypeMap* internal_default_instance() {
      return reinterpret_cast<const TestSameTypeMap*>(
                 &_TestSameTypeMap_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      25;
  
    void UnsafeArenaSwap(TestSameTypeMap* other);
    void Swap(TestSameTypeMap* other);
    friend void swap(TestSameTypeMap& a, TestSameTypeMap& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestSameTypeMap* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestSameTypeMap* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestSameTypeMap& from);
    void MergeFrom(const TestSameTypeMap& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestSameTypeMap* other);
    protected:
    explicit TestSameTypeMap(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, int32> map1 = 1;
    int map1_size() const;
    void clear_map1();
    static const int kMap1FieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map1() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map1();
  
    // map<int32, int32> map2 = 2;
    int map2_size() const;
    void clear_map2();
    static const int kMap2FieldNumber = 2;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map2() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map2();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestSameTypeMap)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > map1_;
    ::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 > map2_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestSameTypeMapImpl();
  };
  // -------------------------------------------------------------------
  
  class TestRequiredMessageMap_MapFieldEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestRequiredMessageMap_MapFieldEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestRequired,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestRequiredMessageMap_MapFieldEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::TestRequired,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestRequiredMessageMap_MapFieldEntry_DoNotUse();
    TestRequiredMessageMap_MapFieldEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestRequiredMessageMap_MapFieldEntry_DoNotUse& other);
    static const TestRequiredMessageMap_MapFieldEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestRequiredMessageMap_MapFieldEntry_DoNotUse*>(&_TestRequiredMessageMap_MapFieldEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestRequiredMessageMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestRequiredMessageMap) */ {
   public:
    TestRequiredMessageMap();
    virtual ~TestRequiredMessageMap();
  
    TestRequiredMessageMap(const TestRequiredMessageMap& from);
  
    inline TestRequiredMessageMap& operator=(const TestRequiredMessageMap& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestRequiredMessageMap(TestRequiredMessageMap&& from) noexcept
      : TestRequiredMessageMap() {
      *this = ::std::move(from);
    }
  
    inline TestRequiredMessageMap& operator=(TestRequiredMessageMap&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestRequiredMessageMap& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestRequiredMessageMap* internal_default_instance() {
      return reinterpret_cast<const TestRequiredMessageMap*>(
                 &_TestRequiredMessageMap_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      27;
  
    void UnsafeArenaSwap(TestRequiredMessageMap* other);
    void Swap(TestRequiredMessageMap* other);
    friend void swap(TestRequiredMessageMap& a, TestRequiredMessageMap& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestRequiredMessageMap* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestRequiredMessageMap* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestRequiredMessageMap& from);
    void MergeFrom(const TestRequiredMessageMap& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestRequiredMessageMap* other);
    protected:
    explicit TestRequiredMessageMap(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, .protobuf_unittest.TestRequired> map_field = 1;
    int map_field_size() const;
    void clear_map_field();
    static const int kMapFieldFieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >&
        map_field() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >*
        mutable_map_field();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestRequiredMessageMap)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > map_field_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestRequiredMessageMapImpl();
  };
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32Int32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32Int32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32Int32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > SuperType;
    TestArenaMap_MapInt32Int32Entry_DoNotUse();
    TestArenaMap_MapInt32Int32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32Int32Entry_DoNotUse& other);
    static const TestArenaMap_MapInt32Int32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32Int32Entry_DoNotUse*>(&_TestArenaMap_MapInt32Int32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt64Int64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt64Int64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt64Int64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      0 > SuperType;
    TestArenaMap_MapInt64Int64Entry_DoNotUse();
    TestArenaMap_MapInt64Int64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt64Int64Entry_DoNotUse& other);
    static const TestArenaMap_MapInt64Int64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt64Int64Entry_DoNotUse*>(&_TestArenaMap_MapInt64Int64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapUint32Uint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapUint32Uint32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapUint32Uint32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      0 > SuperType;
    TestArenaMap_MapUint32Uint32Entry_DoNotUse();
    TestArenaMap_MapUint32Uint32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapUint32Uint32Entry_DoNotUse& other);
    static const TestArenaMap_MapUint32Uint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapUint32Uint32Entry_DoNotUse*>(&_TestArenaMap_MapUint32Uint32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapUint64Uint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapUint64Uint64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapUint64Uint64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      0 > SuperType;
    TestArenaMap_MapUint64Uint64Entry_DoNotUse();
    TestArenaMap_MapUint64Uint64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapUint64Uint64Entry_DoNotUse& other);
    static const TestArenaMap_MapUint64Uint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapUint64Uint64Entry_DoNotUse*>(&_TestArenaMap_MapUint64Uint64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapSint32Sint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapSint32Sint32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapSint32Sint32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      0 > SuperType;
    TestArenaMap_MapSint32Sint32Entry_DoNotUse();
    TestArenaMap_MapSint32Sint32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapSint32Sint32Entry_DoNotUse& other);
    static const TestArenaMap_MapSint32Sint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapSint32Sint32Entry_DoNotUse*>(&_TestArenaMap_MapSint32Sint32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapSint64Sint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapSint64Sint64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapSint64Sint64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      0 > SuperType;
    TestArenaMap_MapSint64Sint64Entry_DoNotUse();
    TestArenaMap_MapSint64Sint64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapSint64Sint64Entry_DoNotUse& other);
    static const TestArenaMap_MapSint64Sint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapSint64Sint64Entry_DoNotUse*>(&_TestArenaMap_MapSint64Sint64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapFixed32Fixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapFixed32Fixed32Entry_DoNotUse, 
      ::google::protobuf::uint32, ::google::protobuf::uint32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      0 > SuperType;
    TestArenaMap_MapFixed32Fixed32Entry_DoNotUse();
    TestArenaMap_MapFixed32Fixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapFixed32Fixed32Entry_DoNotUse& other);
    static const TestArenaMap_MapFixed32Fixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapFixed32Fixed32Entry_DoNotUse*>(&_TestArenaMap_MapFixed32Fixed32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapFixed64Fixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapFixed64Fixed64Entry_DoNotUse, 
      ::google::protobuf::uint64, ::google::protobuf::uint64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      0 > SuperType;
    TestArenaMap_MapFixed64Fixed64Entry_DoNotUse();
    TestArenaMap_MapFixed64Fixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapFixed64Fixed64Entry_DoNotUse& other);
    static const TestArenaMap_MapFixed64Fixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapFixed64Fixed64Entry_DoNotUse*>(&_TestArenaMap_MapFixed64Fixed64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      0 > SuperType;
    TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse();
    TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse& other);
    static const TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse*>(&_TestArenaMap_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse, 
      ::google::protobuf::int64, ::google::protobuf::int64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      0 > SuperType;
    TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse();
    TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse& other);
    static const TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse*>(&_TestArenaMap_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32FloatEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32FloatEntry_DoNotUse, 
      ::google::protobuf::int32, float,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32FloatEntry_DoNotUse, 
      ::google::protobuf::int32, float,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
      0 > SuperType;
    TestArenaMap_MapInt32FloatEntry_DoNotUse();
    TestArenaMap_MapInt32FloatEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32FloatEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32FloatEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32FloatEntry_DoNotUse*>(&_TestArenaMap_MapInt32FloatEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32DoubleEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32DoubleEntry_DoNotUse, 
      ::google::protobuf::int32, double,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32DoubleEntry_DoNotUse, 
      ::google::protobuf::int32, double,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
      0 > SuperType;
    TestArenaMap_MapInt32DoubleEntry_DoNotUse();
    TestArenaMap_MapInt32DoubleEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32DoubleEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32DoubleEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32DoubleEntry_DoNotUse*>(&_TestArenaMap_MapInt32DoubleEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapBoolBoolEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapBoolBoolEntry_DoNotUse, 
      bool, bool,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapBoolBoolEntry_DoNotUse, 
      bool, bool,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      0 > SuperType;
    TestArenaMap_MapBoolBoolEntry_DoNotUse();
    TestArenaMap_MapBoolBoolEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapBoolBoolEntry_DoNotUse& other);
    static const TestArenaMap_MapBoolBoolEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapBoolBoolEntry_DoNotUse*>(&_TestArenaMap_MapBoolBoolEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapStringStringEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapStringStringEntry_DoNotUse, 
      ::std::string, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapStringStringEntry_DoNotUse, 
      ::std::string, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > SuperType;
    TestArenaMap_MapStringStringEntry_DoNotUse();
    TestArenaMap_MapStringStringEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapStringStringEntry_DoNotUse& other);
    static const TestArenaMap_MapStringStringEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapStringStringEntry_DoNotUse*>(&_TestArenaMap_MapStringStringEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32BytesEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32BytesEntry_DoNotUse, 
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32BytesEntry_DoNotUse, 
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
      0 > SuperType;
    TestArenaMap_MapInt32BytesEntry_DoNotUse();
    TestArenaMap_MapInt32BytesEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32BytesEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32BytesEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32BytesEntry_DoNotUse*>(&_TestArenaMap_MapInt32BytesEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32EnumEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32EnumEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32EnumEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > SuperType;
    TestArenaMap_MapInt32EnumEntry_DoNotUse();
    TestArenaMap_MapInt32EnumEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32EnumEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32EnumEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32EnumEntry_DoNotUse*>(&_TestArenaMap_MapInt32EnumEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse();
    TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse*>(&_TestArenaMap_MapInt32ForeignMessageEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse, 
      ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse();
    TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse& other);
    static const TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse*>(&_TestArenaMap_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestArenaMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestArenaMap) */ {
   public:
    TestArenaMap();
    virtual ~TestArenaMap();
  
    TestArenaMap(const TestArenaMap& from);
  
    inline TestArenaMap& operator=(const TestArenaMap& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestArenaMap(TestArenaMap&& from) noexcept
      : TestArenaMap() {
      *this = ::std::move(from);
    }
  
    inline TestArenaMap& operator=(TestArenaMap&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestArenaMap& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestArenaMap* internal_default_instance() {
      return reinterpret_cast<const TestArenaMap*>(
                 &_TestArenaMap_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      46;
  
    void UnsafeArenaSwap(TestArenaMap* other);
    void Swap(TestArenaMap* other);
    friend void swap(TestArenaMap& a, TestArenaMap& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestArenaMap* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestArenaMap* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestArenaMap& from);
    void MergeFrom(const TestArenaMap& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestArenaMap* other);
    protected:
    explicit TestArenaMap(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, int32> map_int32_int32 = 1;
    int map_int32_int32_size() const;
    void clear_map_int32_int32();
    static const int kMapInt32Int32FieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_int32_int32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_int32_int32();
  
    // map<int64, int64> map_int64_int64 = 2;
    int map_int64_int64_size() const;
    void clear_map_int64_int64();
    static const int kMapInt64Int64FieldNumber = 2;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_int64_int64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_int64_int64();
  
    // map<uint32, uint32> map_uint32_uint32 = 3;
    int map_uint32_uint32_size() const;
    void clear_map_uint32_uint32();
    static const int kMapUint32Uint32FieldNumber = 3;
    const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
        map_uint32_uint32() const;
    ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
        mutable_map_uint32_uint32();
  
    // map<uint64, uint64> map_uint64_uint64 = 4;
    int map_uint64_uint64_size() const;
    void clear_map_uint64_uint64();
    static const int kMapUint64Uint64FieldNumber = 4;
    const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
        map_uint64_uint64() const;
    ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
        mutable_map_uint64_uint64();
  
    // map<sint32, sint32> map_sint32_sint32 = 5;
    int map_sint32_sint32_size() const;
    void clear_map_sint32_sint32();
    static const int kMapSint32Sint32FieldNumber = 5;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_sint32_sint32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_sint32_sint32();
  
    // map<sint64, sint64> map_sint64_sint64 = 6;
    int map_sint64_sint64_size() const;
    void clear_map_sint64_sint64();
    static const int kMapSint64Sint64FieldNumber = 6;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_sint64_sint64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_sint64_sint64();
  
    // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
    int map_fixed32_fixed32_size() const;
    void clear_map_fixed32_fixed32();
    static const int kMapFixed32Fixed32FieldNumber = 7;
    const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
        map_fixed32_fixed32() const;
    ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
        mutable_map_fixed32_fixed32();
  
    // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
    int map_fixed64_fixed64_size() const;
    void clear_map_fixed64_fixed64();
    static const int kMapFixed64Fixed64FieldNumber = 8;
    const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
        map_fixed64_fixed64() const;
    ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
        mutable_map_fixed64_fixed64();
  
    // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
    int map_sfixed32_sfixed32_size() const;
    void clear_map_sfixed32_sfixed32();
    static const int kMapSfixed32Sfixed32FieldNumber = 9;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        map_sfixed32_sfixed32() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_map_sfixed32_sfixed32();
  
    // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
    int map_sfixed64_sfixed64_size() const;
    void clear_map_sfixed64_sfixed64();
    static const int kMapSfixed64Sfixed64FieldNumber = 10;
    const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
        map_sfixed64_sfixed64() const;
    ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
        mutable_map_sfixed64_sfixed64();
  
    // map<int32, float> map_int32_float = 11;
    int map_int32_float_size() const;
    void clear_map_int32_float();
    static const int kMapInt32FloatFieldNumber = 11;
    const ::google::protobuf::Map< ::google::protobuf::int32, float >&
        map_int32_float() const;
    ::google::protobuf::Map< ::google::protobuf::int32, float >*
        mutable_map_int32_float();
  
    // map<int32, double> map_int32_double = 12;
    int map_int32_double_size() const;
    void clear_map_int32_double();
    static const int kMapInt32DoubleFieldNumber = 12;
    const ::google::protobuf::Map< ::google::protobuf::int32, double >&
        map_int32_double() const;
    ::google::protobuf::Map< ::google::protobuf::int32, double >*
        mutable_map_int32_double();
  
    // map<bool, bool> map_bool_bool = 13;
    int map_bool_bool_size() const;
    void clear_map_bool_bool();
    static const int kMapBoolBoolFieldNumber = 13;
    const ::google::protobuf::Map< bool, bool >&
        map_bool_bool() const;
    ::google::protobuf::Map< bool, bool >*
        mutable_map_bool_bool();
  
    // map<string, string> map_string_string = 14;
    int map_string_string_size() const;
    void clear_map_string_string();
    static const int kMapStringStringFieldNumber = 14;
    const ::google::protobuf::Map< ::std::string, ::std::string >&
        map_string_string() const;
    ::google::protobuf::Map< ::std::string, ::std::string >*
        mutable_map_string_string();
  
    // map<int32, bytes> map_int32_bytes = 15;
    int map_int32_bytes_size() const;
    void clear_map_int32_bytes();
    static const int kMapInt32BytesFieldNumber = 15;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
        map_int32_bytes() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
        mutable_map_int32_bytes();
  
    // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
    int map_int32_enum_size() const;
    void clear_map_int32_enum();
    static const int kMapInt32EnumFieldNumber = 16;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >&
        map_int32_enum() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >*
        mutable_map_int32_enum();
  
    // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
    int map_int32_foreign_message_size() const;
    void clear_map_int32_foreign_message();
    static const int kMapInt32ForeignMessageFieldNumber = 17;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >&
        map_int32_foreign_message() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >*
        mutable_map_int32_foreign_message();
  
    // map<int32, .protobuf_unittest_no_arena.ForeignMessage> map_int32_foreign_message_no_arena = 18;
    int map_int32_foreign_message_no_arena_size() const;
    void clear_map_int32_foreign_message_no_arena();
    static const int kMapInt32ForeignMessageNoArenaFieldNumber = 18;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >&
        map_int32_foreign_message_no_arena() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >*
        mutable_map_int32_foreign_message_no_arena();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestArenaMap)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > map_int32_int32_;
    ::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 > map_int64_int64_;
    ::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 > map_uint32_uint32_;
    ::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 > map_uint64_uint64_;
    ::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 > map_sint32_sint32_;
    ::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 > map_sint64_sint64_;
    ::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 > map_fixed32_fixed32_;
    ::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 > map_fixed64_fixed64_;
    ::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 > map_sfixed32_sfixed32_;
    ::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 > map_sfixed64_sfixed64_;
    ::google::protobuf::internal::MapField<
        TestArenaMap_MapInt32FloatEntry_DoNotUse,
        ::google::protobuf::int32, float,
        ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
        ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
        0 > map_int32_float_;
    ::google::protobuf::internal::MapField<
        TestArenaMap_MapInt32DoubleEntry_DoNotUse,
        ::google::protobuf::int32, double,
        ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
        ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
        0 > map_int32_double_;
    ::google::protobuf::internal::MapField<
        TestArenaMap_MapBoolBoolEntry_DoNotUse,
        bool, bool,
        ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
        ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
        0 > map_bool_bool_;
    ::google::protobuf::internal::MapField<
        TestArenaMap_MapStringStringEntry_DoNotUse,
        ::std::string, ::std::string,
        ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
        ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
        0 > map_string_string_;
    ::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 > map_int32_bytes_;
    ::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 > map_int32_enum_;
    ::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 > map_int32_foreign_message_;
    ::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 > map_int32_foreign_message_no_arena_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestArenaMapImpl();
  };
  // -------------------------------------------------------------------
  
  class MessageContainingEnumCalledType_TypeEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<MessageContainingEnumCalledType_TypeEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<MessageContainingEnumCalledType_TypeEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    MessageContainingEnumCalledType_TypeEntry_DoNotUse();
    MessageContainingEnumCalledType_TypeEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const MessageContainingEnumCalledType_TypeEntry_DoNotUse& other);
    static const MessageContainingEnumCalledType_TypeEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const MessageContainingEnumCalledType_TypeEntry_DoNotUse*>(&_MessageContainingEnumCalledType_TypeEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class MessageContainingEnumCalledType : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.MessageContainingEnumCalledType) */ {
   public:
    MessageContainingEnumCalledType();
    virtual ~MessageContainingEnumCalledType();
  
    MessageContainingEnumCalledType(const MessageContainingEnumCalledType& from);
  
    inline MessageContainingEnumCalledType& operator=(const MessageContainingEnumCalledType& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    MessageContainingEnumCalledType(MessageContainingEnumCalledType&& from) noexcept
      : MessageContainingEnumCalledType() {
      *this = ::std::move(from);
    }
  
    inline MessageContainingEnumCalledType& operator=(MessageContainingEnumCalledType&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const MessageContainingEnumCalledType& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const MessageContainingEnumCalledType* internal_default_instance() {
      return reinterpret_cast<const MessageContainingEnumCalledType*>(
                 &_MessageContainingEnumCalledType_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      48;
  
    void UnsafeArenaSwap(MessageContainingEnumCalledType* other);
    void Swap(MessageContainingEnumCalledType* other);
    friend void swap(MessageContainingEnumCalledType& a, MessageContainingEnumCalledType& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline MessageContainingEnumCalledType* New() const PROTOBUF_FINAL { return New(NULL); }
  
    MessageContainingEnumCalledType* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const MessageContainingEnumCalledType& from);
    void MergeFrom(const MessageContainingEnumCalledType& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(MessageContainingEnumCalledType* other);
    protected:
    explicit MessageContainingEnumCalledType(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    typedef MessageContainingEnumCalledType_Type Type;
    static const Type TYPE_FOO =
      MessageContainingEnumCalledType_Type_TYPE_FOO;
    static inline bool Type_IsValid(int value) {
      return MessageContainingEnumCalledType_Type_IsValid(value);
    }
    static const Type Type_MIN =
      MessageContainingEnumCalledType_Type_Type_MIN;
    static const Type Type_MAX =
      MessageContainingEnumCalledType_Type_Type_MAX;
    static const int Type_ARRAYSIZE =
      MessageContainingEnumCalledType_Type_Type_ARRAYSIZE;
    static inline const ::google::protobuf::EnumDescriptor*
    Type_descriptor() {
      return MessageContainingEnumCalledType_Type_descriptor();
    }
    static inline const ::std::string& Type_Name(Type value) {
      return MessageContainingEnumCalledType_Type_Name(value);
    }
    static inline bool Type_Parse(const ::std::string& name,
        Type* value) {
      return MessageContainingEnumCalledType_Type_Parse(name, value);
    }
  
    // accessors -------------------------------------------------------
  
    // map<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
    int type_size() const;
    void clear_type();
    static const int kTypeFieldNumber = 1;
    const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >&
        type() const;
    ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >*
        mutable_type();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.MessageContainingEnumCalledType)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > type_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsMessageContainingEnumCalledTypeImpl();
  };
  // -------------------------------------------------------------------
  
  class MessageContainingMapCalledEntry_EntryEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<MessageContainingMapCalledEntry_EntryEntry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<MessageContainingMapCalledEntry_EntryEntry_DoNotUse, 
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > SuperType;
    MessageContainingMapCalledEntry_EntryEntry_DoNotUse();
    MessageContainingMapCalledEntry_EntryEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const MessageContainingMapCalledEntry_EntryEntry_DoNotUse& other);
    static const MessageContainingMapCalledEntry_EntryEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const MessageContainingMapCalledEntry_EntryEntry_DoNotUse*>(&_MessageContainingMapCalledEntry_EntryEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class MessageContainingMapCalledEntry : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.MessageContainingMapCalledEntry) */ {
   public:
    MessageContainingMapCalledEntry();
    virtual ~MessageContainingMapCalledEntry();
  
    MessageContainingMapCalledEntry(const MessageContainingMapCalledEntry& from);
  
    inline MessageContainingMapCalledEntry& operator=(const MessageContainingMapCalledEntry& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    MessageContainingMapCalledEntry(MessageContainingMapCalledEntry&& from) noexcept
      : MessageContainingMapCalledEntry() {
      *this = ::std::move(from);
    }
  
    inline MessageContainingMapCalledEntry& operator=(MessageContainingMapCalledEntry&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const MessageContainingMapCalledEntry& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const MessageContainingMapCalledEntry* internal_default_instance() {
      return reinterpret_cast<const MessageContainingMapCalledEntry*>(
                 &_MessageContainingMapCalledEntry_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      50;
  
    void UnsafeArenaSwap(MessageContainingMapCalledEntry* other);
    void Swap(MessageContainingMapCalledEntry* other);
    friend void swap(MessageContainingMapCalledEntry& a, MessageContainingMapCalledEntry& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline MessageContainingMapCalledEntry* New() const PROTOBUF_FINAL { return New(NULL); }
  
    MessageContainingMapCalledEntry* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const MessageContainingMapCalledEntry& from);
    void MergeFrom(const MessageContainingMapCalledEntry& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(MessageContainingMapCalledEntry* other);
    protected:
    explicit MessageContainingMapCalledEntry(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<int32, int32> entry = 1;
    int entry_size() const;
    void clear_entry();
    static const int kEntryFieldNumber = 1;
    const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
        entry() const;
    ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
        mutable_entry();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.MessageContainingMapCalledEntry)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > entry_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsMessageContainingMapCalledEntryImpl();
  };
  // -------------------------------------------------------------------
  
  class TestRecursiveMapMessage_AEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestRecursiveMapMessage_AEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::TestRecursiveMapMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > {
  public:
    typedef ::google::protobuf::internal::MapEntry<TestRecursiveMapMessage_AEntry_DoNotUse, 
      ::std::string, ::protobuf_unittest::TestRecursiveMapMessage,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > SuperType;
    TestRecursiveMapMessage_AEntry_DoNotUse();
    TestRecursiveMapMessage_AEntry_DoNotUse(::google::protobuf::Arena* arena);
    void MergeFrom(const TestRecursiveMapMessage_AEntry_DoNotUse& other);
    static const TestRecursiveMapMessage_AEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestRecursiveMapMessage_AEntry_DoNotUse*>(&_TestRecursiveMapMessage_AEntry_DoNotUse_default_instance_); }
    void MergeFrom(const ::google::protobuf::Message& other) PROTOBUF_FINAL;
    ::google::protobuf::Metadata GetMetadata() const;
  };
  
  // -------------------------------------------------------------------
  
  class TestRecursiveMapMessage : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestRecursiveMapMessage) */ {
   public:
    TestRecursiveMapMessage();
    virtual ~TestRecursiveMapMessage();
  
    TestRecursiveMapMessage(const TestRecursiveMapMessage& from);
  
    inline TestRecursiveMapMessage& operator=(const TestRecursiveMapMessage& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    TestRecursiveMapMessage(TestRecursiveMapMessage&& from) noexcept
      : TestRecursiveMapMessage() {
      *this = ::std::move(from);
    }
  
    inline TestRecursiveMapMessage& operator=(TestRecursiveMapMessage&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    inline ::google::protobuf::Arena* GetArena() const PROTOBUF_FINAL {
      return GetArenaNoVirtual();
    }
    inline void* GetMaybeArenaPointer() const PROTOBUF_FINAL {
      return MaybeArenaPtr();
    }
    static const ::google::protobuf::Descriptor* descriptor();
    static const TestRecursiveMapMessage& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TestRecursiveMapMessage* internal_default_instance() {
      return reinterpret_cast<const TestRecursiveMapMessage*>(
                 &_TestRecursiveMapMessage_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      52;
  
    void UnsafeArenaSwap(TestRecursiveMapMessage* other);
    void Swap(TestRecursiveMapMessage* other);
    friend void swap(TestRecursiveMapMessage& a, TestRecursiveMapMessage& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline TestRecursiveMapMessage* New() const PROTOBUF_FINAL { return New(NULL); }
  
    TestRecursiveMapMessage* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const TestRecursiveMapMessage& from);
    void MergeFrom(const TestRecursiveMapMessage& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(TestRecursiveMapMessage* other);
    protected:
    explicit TestRecursiveMapMessage(::google::protobuf::Arena* arena);
    private:
    static void ArenaDtor(void* object);
    inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return _internal_metadata_.arena();
    }
    inline void* MaybeArenaPtr() const {
      return _internal_metadata_.raw_arena_ptr();
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
  
    // accessors -------------------------------------------------------
  
    // map<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
    int a_size() const;
    void clear_a();
    static const int kAFieldNumber = 1;
    const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >&
        a() const;
    ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >*
        mutable_a();
  
    // @@protoc_insertion_point(class_scope:protobuf_unittest.TestRecursiveMapMessage)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 > a_;
    mutable int _cached_size_;
    friend struct ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::TableStruct;
    friend void ::protobuf_google_2fprotobuf_2fmap_5funittest_2eproto::InitDefaultsTestRecursiveMapMessageImpl();
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestMap
  
  // map<int32, int32> map_int32_int32 = 1;
  inline int TestMap::map_int32_int32_size() const {
    return map_int32_int32_.size();
  }
  inline void TestMap::clear_map_int32_int32() {
    map_int32_int32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestMap::map_int32_int32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_int32)
    return map_int32_int32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestMap::mutable_map_int32_int32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_int32)
    return map_int32_int32_.MutableMap();
  }
  
  // map<int64, int64> map_int64_int64 = 2;
  inline int TestMap::map_int64_int64_size() const {
    return map_int64_int64_.size();
  }
  inline void TestMap::clear_map_int64_int64() {
    map_int64_int64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestMap::map_int64_int64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int64_int64)
    return map_int64_int64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestMap::mutable_map_int64_int64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int64_int64)
    return map_int64_int64_.MutableMap();
  }
  
  // map<uint32, uint32> map_uint32_uint32 = 3;
  inline int TestMap::map_uint32_uint32_size() const {
    return map_uint32_uint32_.size();
  }
  inline void TestMap::clear_map_uint32_uint32() {
    map_uint32_uint32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
  TestMap::map_uint32_uint32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_uint32_uint32)
    return map_uint32_uint32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
  TestMap::mutable_map_uint32_uint32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_uint32_uint32)
    return map_uint32_uint32_.MutableMap();
  }
  
  // map<uint64, uint64> map_uint64_uint64 = 4;
  inline int TestMap::map_uint64_uint64_size() const {
    return map_uint64_uint64_.size();
  }
  inline void TestMap::clear_map_uint64_uint64() {
    map_uint64_uint64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
  TestMap::map_uint64_uint64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_uint64_uint64)
    return map_uint64_uint64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
  TestMap::mutable_map_uint64_uint64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_uint64_uint64)
    return map_uint64_uint64_.MutableMap();
  }
  
  // map<sint32, sint32> map_sint32_sint32 = 5;
  inline int TestMap::map_sint32_sint32_size() const {
    return map_sint32_sint32_.size();
  }
  inline void TestMap::clear_map_sint32_sint32() {
    map_sint32_sint32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestMap::map_sint32_sint32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_sint32_sint32)
    return map_sint32_sint32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestMap::mutable_map_sint32_sint32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_sint32_sint32)
    return map_sint32_sint32_.MutableMap();
  }
  
  // map<sint64, sint64> map_sint64_sint64 = 6;
  inline int TestMap::map_sint64_sint64_size() const {
    return map_sint64_sint64_.size();
  }
  inline void TestMap::clear_map_sint64_sint64() {
    map_sint64_sint64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestMap::map_sint64_sint64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_sint64_sint64)
    return map_sint64_sint64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestMap::mutable_map_sint64_sint64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_sint64_sint64)
    return map_sint64_sint64_.MutableMap();
  }
  
  // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
  inline int TestMap::map_fixed32_fixed32_size() const {
    return map_fixed32_fixed32_.size();
  }
  inline void TestMap::clear_map_fixed32_fixed32() {
    map_fixed32_fixed32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
  TestMap::map_fixed32_fixed32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_fixed32_fixed32)
    return map_fixed32_fixed32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
  TestMap::mutable_map_fixed32_fixed32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_fixed32_fixed32)
    return map_fixed32_fixed32_.MutableMap();
  }
  
  // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
  inline int TestMap::map_fixed64_fixed64_size() const {
    return map_fixed64_fixed64_.size();
  }
  inline void TestMap::clear_map_fixed64_fixed64() {
    map_fixed64_fixed64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
  TestMap::map_fixed64_fixed64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_fixed64_fixed64)
    return map_fixed64_fixed64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
  TestMap::mutable_map_fixed64_fixed64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_fixed64_fixed64)
    return map_fixed64_fixed64_.MutableMap();
  }
  
  // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
  inline int TestMap::map_sfixed32_sfixed32_size() const {
    return map_sfixed32_sfixed32_.size();
  }
  inline void TestMap::clear_map_sfixed32_sfixed32() {
    map_sfixed32_sfixed32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestMap::map_sfixed32_sfixed32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_sfixed32_sfixed32)
    return map_sfixed32_sfixed32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestMap::mutable_map_sfixed32_sfixed32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_sfixed32_sfixed32)
    return map_sfixed32_sfixed32_.MutableMap();
  }
  
  // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
  inline int TestMap::map_sfixed64_sfixed64_size() const {
    return map_sfixed64_sfixed64_.size();
  }
  inline void TestMap::clear_map_sfixed64_sfixed64() {
    map_sfixed64_sfixed64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestMap::map_sfixed64_sfixed64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_sfixed64_sfixed64)
    return map_sfixed64_sfixed64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestMap::mutable_map_sfixed64_sfixed64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_sfixed64_sfixed64)
    return map_sfixed64_sfixed64_.MutableMap();
  }
  
  // map<int32, float> map_int32_float = 11;
  inline int TestMap::map_int32_float_size() const {
    return map_int32_float_.size();
  }
  inline void TestMap::clear_map_int32_float() {
    map_int32_float_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, float >&
  TestMap::map_int32_float() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_float)
    return map_int32_float_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, float >*
  TestMap::mutable_map_int32_float() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_float)
    return map_int32_float_.MutableMap();
  }
  
  // map<int32, double> map_int32_double = 12;
  inline int TestMap::map_int32_double_size() const {
    return map_int32_double_.size();
  }
  inline void TestMap::clear_map_int32_double() {
    map_int32_double_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, double >&
  TestMap::map_int32_double() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_double)
    return map_int32_double_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, double >*
  TestMap::mutable_map_int32_double() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_double)
    return map_int32_double_.MutableMap();
  }
  
  // map<bool, bool> map_bool_bool = 13;
  inline int TestMap::map_bool_bool_size() const {
    return map_bool_bool_.size();
  }
  inline void TestMap::clear_map_bool_bool() {
    map_bool_bool_.Clear();
  }
  inline const ::google::protobuf::Map< bool, bool >&
  TestMap::map_bool_bool() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_bool_bool)
    return map_bool_bool_.GetMap();
  }
  inline ::google::protobuf::Map< bool, bool >*
  TestMap::mutable_map_bool_bool() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_bool_bool)
    return map_bool_bool_.MutableMap();
  }
  
  // map<string, string> map_string_string = 14;
  inline int TestMap::map_string_string_size() const {
    return map_string_string_.size();
  }
  inline void TestMap::clear_map_string_string() {
    map_string_string_.Clear();
  }
  inline const ::google::protobuf::Map< ::std::string, ::std::string >&
  TestMap::map_string_string() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_string_string)
    return map_string_string_.GetMap();
  }
  inline ::google::protobuf::Map< ::std::string, ::std::string >*
  TestMap::mutable_map_string_string() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_string_string)
    return map_string_string_.MutableMap();
  }
  
  // map<int32, bytes> map_int32_bytes = 15;
  inline int TestMap::map_int32_bytes_size() const {
    return map_int32_bytes_.size();
  }
  inline void TestMap::clear_map_int32_bytes() {
    map_int32_bytes_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
  TestMap::map_int32_bytes() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_bytes)
    return map_int32_bytes_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
  TestMap::mutable_map_int32_bytes() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_bytes)
    return map_int32_bytes_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
  inline int TestMap::map_int32_enum_size() const {
    return map_int32_enum_.size();
  }
  inline void TestMap::clear_map_int32_enum() {
    map_int32_enum_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >&
  TestMap::map_int32_enum() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_enum)
    return map_int32_enum_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >*
  TestMap::mutable_map_int32_enum() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_enum)
    return map_int32_enum_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
  inline int TestMap::map_int32_foreign_message_size() const {
    return map_int32_foreign_message_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >&
  TestMap::map_int32_foreign_message() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_foreign_message)
    return map_int32_foreign_message_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >*
  TestMap::mutable_map_int32_foreign_message() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_foreign_message)
    return map_int32_foreign_message_.MutableMap();
  }
  
  // map<string, .protobuf_unittest.ForeignMessage> map_string_foreign_message = 18;
  inline int TestMap::map_string_foreign_message_size() const {
    return map_string_foreign_message_.size();
  }
  inline const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >&
  TestMap::map_string_foreign_message() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_string_foreign_message)
    return map_string_foreign_message_.GetMap();
  }
  inline ::google::protobuf::Map< ::std::string, ::protobuf_unittest::ForeignMessage >*
  TestMap::mutable_map_string_foreign_message() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_string_foreign_message)
    return map_string_foreign_message_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest.TestAllTypes> map_int32_all_types = 19;
  inline int TestMap::map_int32_all_types_size() const {
    return map_int32_all_types_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >&
  TestMap::map_int32_all_types() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMap.map_int32_all_types)
    return map_int32_all_types_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >*
  TestMap::mutable_map_int32_all_types() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMap.map_int32_all_types)
    return map_int32_all_types_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // TestMapSubmessage
  
  // .protobuf_unittest.TestMap test_map = 1;
  inline bool TestMapSubmessage::has_test_map() const {
    return this != internal_default_instance() && test_map_ != NULL;
  }
  inline void TestMapSubmessage::clear_test_map() {
    if (GetArenaNoVirtual() == NULL && test_map_ != NULL) {
      delete test_map_;
    }
    test_map_ = NULL;
  }
  inline const ::protobuf_unittest::TestMap& TestMapSubmessage::test_map() const {
    const ::protobuf_unittest::TestMap* p = test_map_;
    // @@protoc_insertion_point(field_get:protobuf_unittest.TestMapSubmessage.test_map)
    return p != NULL ? *p : *reinterpret_cast<const ::protobuf_unittest::TestMap*>(
        &::protobuf_unittest::_TestMap_default_instance_);
  }
  inline ::protobuf_unittest::TestMap* TestMapSubmessage::release_test_map() {
    // @@protoc_insertion_point(field_release:protobuf_unittest.TestMapSubmessage.test_map)
    
    ::protobuf_unittest::TestMap* temp = test_map_;
    if (GetArenaNoVirtual() != NULL) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp, NULL);
    }
    test_map_ = NULL;
    return temp;
  }
  inline ::protobuf_unittest::TestMap* TestMapSubmessage::unsafe_arena_release_test_map() {
    // @@protoc_insertion_point(field_unsafe_arena_release:protobuf_unittest.TestMapSubmessage.test_map)
    
    ::protobuf_unittest::TestMap* temp = test_map_;
    test_map_ = NULL;
    return temp;
  }
  inline ::protobuf_unittest::TestMap* TestMapSubmessage::mutable_test_map() {
    
    if (test_map_ == NULL) {
      _slow_mutable_test_map();
    }
    // @@protoc_insertion_point(field_mutable:protobuf_unittest.TestMapSubmessage.test_map)
    return test_map_;
  }
  inline void TestMapSubmessage::set_allocated_test_map(::protobuf_unittest::TestMap* test_map) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete test_map_;
    }
    if (test_map) {
      ::google::protobuf::Arena* submessage_arena =
        ::google::protobuf::Arena::GetArena(test_map);
      if (message_arena != submessage_arena) {
        test_map = ::google::protobuf::internal::GetOwnedMessage(
            message_arena, test_map, submessage_arena);
      }
      
    } else {
      
    }
    test_map_ = test_map;
    // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestMapSubmessage.test_map)
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestMessageMap
  
  // map<int32, .protobuf_unittest.TestAllTypes> map_int32_message = 1;
  inline int TestMessageMap::map_int32_message_size() const {
    return map_int32_message_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >&
  TestMessageMap::map_int32_message() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestMessageMap.map_int32_message)
    return map_int32_message_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypes >*
  TestMessageMap::mutable_map_int32_message() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMessageMap.map_int32_message)
    return map_int32_message_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestSameTypeMap
  
  // map<int32, int32> map1 = 1;
  inline int TestSameTypeMap::map1_size() const {
    return map1_.size();
  }
  inline void TestSameTypeMap::clear_map1() {
    map1_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestSameTypeMap::map1() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestSameTypeMap.map1)
    return map1_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestSameTypeMap::mutable_map1() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestSameTypeMap.map1)
    return map1_.MutableMap();
  }
  
  // map<int32, int32> map2 = 2;
  inline int TestSameTypeMap::map2_size() const {
    return map2_.size();
  }
  inline void TestSameTypeMap::clear_map2() {
    map2_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestSameTypeMap::map2() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestSameTypeMap.map2)
    return map2_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestSameTypeMap::mutable_map2() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestSameTypeMap.map2)
    return map2_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestRequiredMessageMap
  
  // map<int32, .protobuf_unittest.TestRequired> map_field = 1;
  inline int TestRequiredMessageMap::map_field_size() const {
    return map_field_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >&
  TestRequiredMessageMap::map_field() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestRequiredMessageMap.map_field)
    return map_field_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequired >*
  TestRequiredMessageMap::mutable_map_field() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestRequiredMessageMap.map_field)
    return map_field_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestArenaMap
  
  // map<int32, int32> map_int32_int32 = 1;
  inline int TestArenaMap::map_int32_int32_size() const {
    return map_int32_int32_.size();
  }
  inline void TestArenaMap::clear_map_int32_int32() {
    map_int32_int32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestArenaMap::map_int32_int32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_int32)
    return map_int32_int32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestArenaMap::mutable_map_int32_int32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_int32)
    return map_int32_int32_.MutableMap();
  }
  
  // map<int64, int64> map_int64_int64 = 2;
  inline int TestArenaMap::map_int64_int64_size() const {
    return map_int64_int64_.size();
  }
  inline void TestArenaMap::clear_map_int64_int64() {
    map_int64_int64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestArenaMap::map_int64_int64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int64_int64)
    return map_int64_int64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestArenaMap::mutable_map_int64_int64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int64_int64)
    return map_int64_int64_.MutableMap();
  }
  
  // map<uint32, uint32> map_uint32_uint32 = 3;
  inline int TestArenaMap::map_uint32_uint32_size() const {
    return map_uint32_uint32_.size();
  }
  inline void TestArenaMap::clear_map_uint32_uint32() {
    map_uint32_uint32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
  TestArenaMap::map_uint32_uint32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_uint32_uint32)
    return map_uint32_uint32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
  TestArenaMap::mutable_map_uint32_uint32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_uint32_uint32)
    return map_uint32_uint32_.MutableMap();
  }
  
  // map<uint64, uint64> map_uint64_uint64 = 4;
  inline int TestArenaMap::map_uint64_uint64_size() const {
    return map_uint64_uint64_.size();
  }
  inline void TestArenaMap::clear_map_uint64_uint64() {
    map_uint64_uint64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
  TestArenaMap::map_uint64_uint64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_uint64_uint64)
    return map_uint64_uint64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
  TestArenaMap::mutable_map_uint64_uint64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_uint64_uint64)
    return map_uint64_uint64_.MutableMap();
  }
  
  // map<sint32, sint32> map_sint32_sint32 = 5;
  inline int TestArenaMap::map_sint32_sint32_size() const {
    return map_sint32_sint32_.size();
  }
  inline void TestArenaMap::clear_map_sint32_sint32() {
    map_sint32_sint32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestArenaMap::map_sint32_sint32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_sint32_sint32)
    return map_sint32_sint32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestArenaMap::mutable_map_sint32_sint32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_sint32_sint32)
    return map_sint32_sint32_.MutableMap();
  }
  
  // map<sint64, sint64> map_sint64_sint64 = 6;
  inline int TestArenaMap::map_sint64_sint64_size() const {
    return map_sint64_sint64_.size();
  }
  inline void TestArenaMap::clear_map_sint64_sint64() {
    map_sint64_sint64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestArenaMap::map_sint64_sint64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_sint64_sint64)
    return map_sint64_sint64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestArenaMap::mutable_map_sint64_sint64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_sint64_sint64)
    return map_sint64_sint64_.MutableMap();
  }
  
  // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
  inline int TestArenaMap::map_fixed32_fixed32_size() const {
    return map_fixed32_fixed32_.size();
  }
  inline void TestArenaMap::clear_map_fixed32_fixed32() {
    map_fixed32_fixed32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >&
  TestArenaMap::map_fixed32_fixed32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_fixed32_fixed32)
    return map_fixed32_fixed32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >*
  TestArenaMap::mutable_map_fixed32_fixed32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_fixed32_fixed32)
    return map_fixed32_fixed32_.MutableMap();
  }
  
  // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
  inline int TestArenaMap::map_fixed64_fixed64_size() const {
    return map_fixed64_fixed64_.size();
  }
  inline void TestArenaMap::clear_map_fixed64_fixed64() {
    map_fixed64_fixed64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >&
  TestArenaMap::map_fixed64_fixed64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_fixed64_fixed64)
    return map_fixed64_fixed64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >*
  TestArenaMap::mutable_map_fixed64_fixed64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_fixed64_fixed64)
    return map_fixed64_fixed64_.MutableMap();
  }
  
  // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
  inline int TestArenaMap::map_sfixed32_sfixed32_size() const {
    return map_sfixed32_sfixed32_.size();
  }
  inline void TestArenaMap::clear_map_sfixed32_sfixed32() {
    map_sfixed32_sfixed32_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  TestArenaMap::map_sfixed32_sfixed32() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_sfixed32_sfixed32)
    return map_sfixed32_sfixed32_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  TestArenaMap::mutable_map_sfixed32_sfixed32() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_sfixed32_sfixed32)
    return map_sfixed32_sfixed32_.MutableMap();
  }
  
  // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
  inline int TestArenaMap::map_sfixed64_sfixed64_size() const {
    return map_sfixed64_sfixed64_.size();
  }
  inline void TestArenaMap::clear_map_sfixed64_sfixed64() {
    map_sfixed64_sfixed64_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >&
  TestArenaMap::map_sfixed64_sfixed64() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_sfixed64_sfixed64)
    return map_sfixed64_sfixed64_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >*
  TestArenaMap::mutable_map_sfixed64_sfixed64() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_sfixed64_sfixed64)
    return map_sfixed64_sfixed64_.MutableMap();
  }
  
  // map<int32, float> map_int32_float = 11;
  inline int TestArenaMap::map_int32_float_size() const {
    return map_int32_float_.size();
  }
  inline void TestArenaMap::clear_map_int32_float() {
    map_int32_float_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, float >&
  TestArenaMap::map_int32_float() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_float)
    return map_int32_float_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, float >*
  TestArenaMap::mutable_map_int32_float() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_float)
    return map_int32_float_.MutableMap();
  }
  
  // map<int32, double> map_int32_double = 12;
  inline int TestArenaMap::map_int32_double_size() const {
    return map_int32_double_.size();
  }
  inline void TestArenaMap::clear_map_int32_double() {
    map_int32_double_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, double >&
  TestArenaMap::map_int32_double() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_double)
    return map_int32_double_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, double >*
  TestArenaMap::mutable_map_int32_double() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_double)
    return map_int32_double_.MutableMap();
  }
  
  // map<bool, bool> map_bool_bool = 13;
  inline int TestArenaMap::map_bool_bool_size() const {
    return map_bool_bool_.size();
  }
  inline void TestArenaMap::clear_map_bool_bool() {
    map_bool_bool_.Clear();
  }
  inline const ::google::protobuf::Map< bool, bool >&
  TestArenaMap::map_bool_bool() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_bool_bool)
    return map_bool_bool_.GetMap();
  }
  inline ::google::protobuf::Map< bool, bool >*
  TestArenaMap::mutable_map_bool_bool() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_bool_bool)
    return map_bool_bool_.MutableMap();
  }
  
  // map<string, string> map_string_string = 14;
  inline int TestArenaMap::map_string_string_size() const {
    return map_string_string_.size();
  }
  inline void TestArenaMap::clear_map_string_string() {
    map_string_string_.Clear();
  }
  inline const ::google::protobuf::Map< ::std::string, ::std::string >&
  TestArenaMap::map_string_string() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_string_string)
    return map_string_string_.GetMap();
  }
  inline ::google::protobuf::Map< ::std::string, ::std::string >*
  TestArenaMap::mutable_map_string_string() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_string_string)
    return map_string_string_.MutableMap();
  }
  
  // map<int32, bytes> map_int32_bytes = 15;
  inline int TestArenaMap::map_int32_bytes_size() const {
    return map_int32_bytes_.size();
  }
  inline void TestArenaMap::clear_map_int32_bytes() {
    map_int32_bytes_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
  TestArenaMap::map_int32_bytes() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_bytes)
    return map_int32_bytes_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
  TestArenaMap::mutable_map_int32_bytes() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_bytes)
    return map_int32_bytes_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest.MapEnum> map_int32_enum = 16;
  inline int TestArenaMap::map_int32_enum_size() const {
    return map_int32_enum_.size();
  }
  inline void TestArenaMap::clear_map_int32_enum() {
    map_int32_enum_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >&
  TestArenaMap::map_int32_enum() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_enum)
    return map_int32_enum_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnum >*
  TestArenaMap::mutable_map_int32_enum() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_enum)
    return map_int32_enum_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest.ForeignMessage> map_int32_foreign_message = 17;
  inline int TestArenaMap::map_int32_foreign_message_size() const {
    return map_int32_foreign_message_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >&
  TestArenaMap::map_int32_foreign_message() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_foreign_message)
    return map_int32_foreign_message_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessage >*
  TestArenaMap::mutable_map_int32_foreign_message() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_foreign_message)
    return map_int32_foreign_message_.MutableMap();
  }
  
  // map<int32, .protobuf_unittest_no_arena.ForeignMessage> map_int32_foreign_message_no_arena = 18;
  inline int TestArenaMap::map_int32_foreign_message_no_arena_size() const {
    return map_int32_foreign_message_no_arena_.size();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >&
  TestArenaMap::map_int32_foreign_message_no_arena() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestArenaMap.map_int32_foreign_message_no_arena)
    return map_int32_foreign_message_no_arena_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessage >*
  TestArenaMap::mutable_map_int32_foreign_message_no_arena() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestArenaMap.map_int32_foreign_message_no_arena)
    return map_int32_foreign_message_no_arena_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // MessageContainingEnumCalledType
  
  // map<string, .protobuf_unittest.MessageContainingEnumCalledType> type = 1;
  inline int MessageContainingEnumCalledType::type_size() const {
    return type_.size();
  }
  inline void MessageContainingEnumCalledType::clear_type() {
    type_.Clear();
  }
  inline const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >&
  MessageContainingEnumCalledType::type() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.MessageContainingEnumCalledType.type)
    return type_.GetMap();
  }
  inline ::google::protobuf::Map< ::std::string, ::protobuf_unittest::MessageContainingEnumCalledType >*
  MessageContainingEnumCalledType::mutable_type() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.MessageContainingEnumCalledType.type)
    return type_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // MessageContainingMapCalledEntry
  
  // map<int32, int32> entry = 1;
  inline int MessageContainingMapCalledEntry::entry_size() const {
    return entry_.size();
  }
  inline void MessageContainingMapCalledEntry::clear_entry() {
    entry_.Clear();
  }
  inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
  MessageContainingMapCalledEntry::entry() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.MessageContainingMapCalledEntry.entry)
    return entry_.GetMap();
  }
  inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
  MessageContainingMapCalledEntry::mutable_entry() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.MessageContainingMapCalledEntry.entry)
    return entry_.MutableMap();
  }
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // TestRecursiveMapMessage
  
  // map<string, .protobuf_unittest.TestRecursiveMapMessage> a = 1;
  inline int TestRecursiveMapMessage::a_size() const {
    return a_.size();
  }
  inline void TestRecursiveMapMessage::clear_a() {
    a_.Clear();
  }
  inline const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >&
  TestRecursiveMapMessage::a() const {
    // @@protoc_insertion_point(field_map:protobuf_unittest.TestRecursiveMapMessage.a)
    return a_.GetMap();
  }
  inline ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestRecursiveMapMessage >*
  TestRecursiveMapMessage::mutable_a() {
    // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestRecursiveMapMessage.a)
    return a_.MutableMap();
  }
  
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace protobuf_unittest
  
  namespace google {
  namespace protobuf {
  
  template <> struct is_proto_enum< ::protobuf_unittest::MessageContainingEnumCalledType_Type> : ::google::protobuf::internal::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::protobuf_unittest::MessageContainingEnumCalledType_Type>() {
    return ::protobuf_unittest::MessageContainingEnumCalledType_Type_descriptor();
  }
  template <> struct is_proto_enum< ::protobuf_unittest::MapEnum> : ::google::protobuf::internal::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::protobuf_unittest::MapEnum>() {
    return ::protobuf_unittest::MapEnum_descriptor();
  }
  
  }  // namespace protobuf
  }  // namespace google
  
  // @@protoc_insertion_point(global_scope)
  
  #endif  // PROTOBUF_google_2fprotobuf_2fmap_5funittest_2eproto__INCLUDED
  