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

#ifndef PROTOBUF_INCLUDED_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto
#define PROTOBUF_INCLUDED_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 3006001
#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 3006001 < 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/inlined_string_field.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_import.pb.h>
// @@protoc_insertion_point(includes)
#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto 

namespace protobuf_google_2fprotobuf_2fmap_5fproto2_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[24];
  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
  static const ::google::protobuf::internal::SerializationTable serialization_table[];
  static const ::google::protobuf::uint32 offsets[];
};
void AddDescriptors();
}  // namespace protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto
namespace protobuf_unittest {
class TestEnumMap;
class TestEnumMapDefaultTypeInternal;
extern TestEnumMapDefaultTypeInternal _TestEnumMap_default_instance_;
class TestEnumMapPlusExtra;
class TestEnumMapPlusExtraDefaultTypeInternal;
extern TestEnumMapPlusExtraDefaultTypeInternal _TestEnumMapPlusExtra_default_instance_;
class TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse;
class TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUseDefaultTypeInternal;
extern TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUseDefaultTypeInternal _TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse;
class TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal;
extern TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal _TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMap_KnownMapFieldEntry_DoNotUse;
class TestEnumMap_KnownMapFieldEntry_DoNotUseDefaultTypeInternal;
extern TestEnumMap_KnownMapFieldEntry_DoNotUseDefaultTypeInternal _TestEnumMap_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMap_UnknownMapFieldEntry_DoNotUse;
class TestEnumMap_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal;
extern TestEnumMap_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal _TestEnumMap_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestImportEnumMap;
class TestImportEnumMapDefaultTypeInternal;
extern TestImportEnumMapDefaultTypeInternal _TestImportEnumMap_default_instance_;
class TestImportEnumMap_ImportEnumAmpEntry_DoNotUse;
class TestImportEnumMap_ImportEnumAmpEntry_DoNotUseDefaultTypeInternal;
extern TestImportEnumMap_ImportEnumAmpEntry_DoNotUseDefaultTypeInternal _TestImportEnumMap_ImportEnumAmpEntry_DoNotUse_default_instance_;
class TestIntIntMap;
class TestIntIntMapDefaultTypeInternal;
extern TestIntIntMapDefaultTypeInternal _TestIntIntMap_default_instance_;
class TestIntIntMap_MEntry_DoNotUse;
class TestIntIntMap_MEntry_DoNotUseDefaultTypeInternal;
extern TestIntIntMap_MEntry_DoNotUseDefaultTypeInternal _TestIntIntMap_MEntry_DoNotUse_default_instance_;
class TestMaps;
class TestMapsDefaultTypeInternal;
extern TestMapsDefaultTypeInternal _TestMaps_default_instance_;
class TestMaps_MBoolEntry_DoNotUse;
class TestMaps_MBoolEntry_DoNotUseDefaultTypeInternal;
extern TestMaps_MBoolEntry_DoNotUseDefaultTypeInternal _TestMaps_MBoolEntry_DoNotUse_default_instance_;
class TestMaps_MFixed32Entry_DoNotUse;
class TestMaps_MFixed32Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MFixed32Entry_DoNotUseDefaultTypeInternal _TestMaps_MFixed32Entry_DoNotUse_default_instance_;
class TestMaps_MFixed64Entry_DoNotUse;
class TestMaps_MFixed64Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MFixed64Entry_DoNotUseDefaultTypeInternal _TestMaps_MFixed64Entry_DoNotUse_default_instance_;
class TestMaps_MInt32Entry_DoNotUse;
class TestMaps_MInt32Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MInt32Entry_DoNotUseDefaultTypeInternal _TestMaps_MInt32Entry_DoNotUse_default_instance_;
class TestMaps_MInt64Entry_DoNotUse;
class TestMaps_MInt64Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MInt64Entry_DoNotUseDefaultTypeInternal _TestMaps_MInt64Entry_DoNotUse_default_instance_;
class TestMaps_MSfixed32Entry_DoNotUse;
class TestMaps_MSfixed32Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MSfixed32Entry_DoNotUseDefaultTypeInternal _TestMaps_MSfixed32Entry_DoNotUse_default_instance_;
class TestMaps_MSfixed64Entry_DoNotUse;
class TestMaps_MSfixed64Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MSfixed64Entry_DoNotUseDefaultTypeInternal _TestMaps_MSfixed64Entry_DoNotUse_default_instance_;
class TestMaps_MSint32Entry_DoNotUse;
class TestMaps_MSint32Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MSint32Entry_DoNotUseDefaultTypeInternal _TestMaps_MSint32Entry_DoNotUse_default_instance_;
class TestMaps_MSint64Entry_DoNotUse;
class TestMaps_MSint64Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MSint64Entry_DoNotUseDefaultTypeInternal _TestMaps_MSint64Entry_DoNotUse_default_instance_;
class TestMaps_MStringEntry_DoNotUse;
class TestMaps_MStringEntry_DoNotUseDefaultTypeInternal;
extern TestMaps_MStringEntry_DoNotUseDefaultTypeInternal _TestMaps_MStringEntry_DoNotUse_default_instance_;
class TestMaps_MUint32Entry_DoNotUse;
class TestMaps_MUint32Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MUint32Entry_DoNotUseDefaultTypeInternal _TestMaps_MUint32Entry_DoNotUse_default_instance_;
class TestMaps_MUint64Entry_DoNotUse;
class TestMaps_MUint64Entry_DoNotUseDefaultTypeInternal;
extern TestMaps_MUint64Entry_DoNotUseDefaultTypeInternal _TestMaps_MUint64Entry_DoNotUse_default_instance_;
class TestSubmessageMaps;
class TestSubmessageMapsDefaultTypeInternal;
extern TestSubmessageMapsDefaultTypeInternal _TestSubmessageMaps_default_instance_;
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> ::protobuf_unittest::TestEnumMap* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMap>(Arena*);
template<> ::protobuf_unittest::TestEnumMapPlusExtra* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMapPlusExtra>(Arena*);
template<> ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestImportEnumMap* Arena::CreateMaybeMessage<::protobuf_unittest::TestImportEnumMap>(Arena*);
template<> ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestIntIntMap* Arena::CreateMaybeMessage<::protobuf_unittest::TestIntIntMap>(Arena*);
template<> ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps>(Arena*);
template<> ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MStringEntry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse* Arena::CreateMaybeMessage<::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse>(Arena*);
template<> ::protobuf_unittest::TestSubmessageMaps* Arena::CreateMaybeMessage<::protobuf_unittest::TestSubmessageMaps>(Arena*);
}  // namespace protobuf
}  // namespace google
namespace protobuf_unittest {

enum Proto2MapEnum {
  PROTO2_MAP_ENUM_FOO = 0,
  PROTO2_MAP_ENUM_BAR = 1,
  PROTO2_MAP_ENUM_BAZ = 2
};
bool Proto2MapEnum_IsValid(int value);
const Proto2MapEnum Proto2MapEnum_MIN = PROTO2_MAP_ENUM_FOO;
const Proto2MapEnum Proto2MapEnum_MAX = PROTO2_MAP_ENUM_BAZ;
const int Proto2MapEnum_ARRAYSIZE = Proto2MapEnum_MAX + 1;

const ::google::protobuf::EnumDescriptor* Proto2MapEnum_descriptor();
inline const ::std::string& Proto2MapEnum_Name(Proto2MapEnum value) {
  return ::google::protobuf::internal::NameOfEnum(
    Proto2MapEnum_descriptor(), value);
}
inline bool Proto2MapEnum_Parse(
    const ::std::string& name, Proto2MapEnum* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Proto2MapEnum>(
    Proto2MapEnum_descriptor(), name, value);
}
enum Proto2MapEnumPlusExtra {
  E_PROTO2_MAP_ENUM_FOO = 0,
  E_PROTO2_MAP_ENUM_BAR = 1,
  E_PROTO2_MAP_ENUM_BAZ = 2,
  E_PROTO2_MAP_ENUM_EXTRA = 3
};
bool Proto2MapEnumPlusExtra_IsValid(int value);
const Proto2MapEnumPlusExtra Proto2MapEnumPlusExtra_MIN = E_PROTO2_MAP_ENUM_FOO;
const Proto2MapEnumPlusExtra Proto2MapEnumPlusExtra_MAX = E_PROTO2_MAP_ENUM_EXTRA;
const int Proto2MapEnumPlusExtra_ARRAYSIZE = Proto2MapEnumPlusExtra_MAX + 1;

const ::google::protobuf::EnumDescriptor* Proto2MapEnumPlusExtra_descriptor();
inline const ::std::string& Proto2MapEnumPlusExtra_Name(Proto2MapEnumPlusExtra value) {
  return ::google::protobuf::internal::NameOfEnum(
    Proto2MapEnumPlusExtra_descriptor(), value);
}
inline bool Proto2MapEnumPlusExtra_Parse(
    const ::std::string& name, Proto2MapEnumPlusExtra* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Proto2MapEnumPlusExtra>(
    Proto2MapEnumPlusExtra_descriptor(), name, value);
}
// ===================================================================

class TestEnumMap_KnownMapFieldEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestEnumMap_KnownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestEnumMap_KnownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > SuperType;
  TestEnumMap_KnownMapFieldEntry_DoNotUse();
  TestEnumMap_KnownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestEnumMap_KnownMapFieldEntry_DoNotUse& other);
  static const TestEnumMap_KnownMapFieldEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestEnumMap_KnownMapFieldEntry_DoNotUse*>(&_TestEnumMap_KnownMapFieldEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestEnumMap_UnknownMapFieldEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestEnumMap_UnknownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestEnumMap_UnknownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > SuperType;
  TestEnumMap_UnknownMapFieldEntry_DoNotUse();
  TestEnumMap_UnknownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestEnumMap_UnknownMapFieldEntry_DoNotUse& other);
  static const TestEnumMap_UnknownMapFieldEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestEnumMap_UnknownMapFieldEntry_DoNotUse*>(&_TestEnumMap_UnknownMapFieldEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestEnumMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestEnumMap) */ {
 public:
  TestEnumMap();
  virtual ~TestEnumMap();

  TestEnumMap(const TestEnumMap& from);

  inline TestEnumMap& operator=(const TestEnumMap& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestEnumMap(TestEnumMap&& from) noexcept
    : TestEnumMap() {
    *this = ::std::move(from);
  }

  inline TestEnumMap& operator=(TestEnumMap&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestEnumMap& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestEnumMap* internal_default_instance() {
    return reinterpret_cast<const TestEnumMap*>(
               &_TestEnumMap_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  void UnsafeArenaSwap(TestEnumMap* other);
  void Swap(TestEnumMap* other);
  friend void swap(TestEnumMap& a, TestEnumMap& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestEnumMap* New() const final {
    return CreateMaybeMessage<TestEnumMap>(NULL);
  }

  TestEnumMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestEnumMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestEnumMap& from);
  void MergeFrom(const TestEnumMap& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestEnumMap* other);
  protected:
  explicit TestEnumMap(::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 final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  // map<int32, .protobuf_unittest.Proto2MapEnum> known_map_field = 101;
  int known_map_field_size() const;
  void clear_known_map_field();
  static const int kKnownMapFieldFieldNumber = 101;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >&
      known_map_field() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >*
      mutable_known_map_field();

  // map<int32, .protobuf_unittest.Proto2MapEnum> unknown_map_field = 102;
  int unknown_map_field_size() const;
  void clear_unknown_map_field();
  static const int kUnknownMapFieldFieldNumber = 102;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >&
      unknown_map_field() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >*
      mutable_unknown_map_field();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestEnumMap)
 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::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::internal::MapField<
      TestEnumMap_KnownMapFieldEntry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > known_map_field_;
  ::google::protobuf::internal::MapField<
      TestEnumMap_UnknownMapFieldEntry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > unknown_map_field_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > SuperType;
  TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse();
  TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse& other);
  static const TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse*>(&_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > SuperType;
  TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse();
  TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse& other);
  static const TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse*>(&_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestEnumMapPlusExtra : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestEnumMapPlusExtra) */ {
 public:
  TestEnumMapPlusExtra();
  virtual ~TestEnumMapPlusExtra();

  TestEnumMapPlusExtra(const TestEnumMapPlusExtra& from);

  inline TestEnumMapPlusExtra& operator=(const TestEnumMapPlusExtra& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestEnumMapPlusExtra(TestEnumMapPlusExtra&& from) noexcept
    : TestEnumMapPlusExtra() {
    *this = ::std::move(from);
  }

  inline TestEnumMapPlusExtra& operator=(TestEnumMapPlusExtra&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestEnumMapPlusExtra& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestEnumMapPlusExtra* internal_default_instance() {
    return reinterpret_cast<const TestEnumMapPlusExtra*>(
               &_TestEnumMapPlusExtra_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  void UnsafeArenaSwap(TestEnumMapPlusExtra* other);
  void Swap(TestEnumMapPlusExtra* other);
  friend void swap(TestEnumMapPlusExtra& a, TestEnumMapPlusExtra& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestEnumMapPlusExtra* New() const final {
    return CreateMaybeMessage<TestEnumMapPlusExtra>(NULL);
  }

  TestEnumMapPlusExtra* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestEnumMapPlusExtra>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestEnumMapPlusExtra& from);
  void MergeFrom(const TestEnumMapPlusExtra& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestEnumMapPlusExtra* other);
  protected:
  explicit TestEnumMapPlusExtra(::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 final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> known_map_field = 101;
  int known_map_field_size() const;
  void clear_known_map_field();
  static const int kKnownMapFieldFieldNumber = 101;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >&
      known_map_field() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >*
      mutable_known_map_field();

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> unknown_map_field = 102;
  int unknown_map_field_size() const;
  void clear_unknown_map_field();
  static const int kUnknownMapFieldFieldNumber = 102;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >&
      unknown_map_field() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >*
      mutable_unknown_map_field();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestEnumMapPlusExtra)
 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::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::internal::MapField<
      TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > known_map_field_;
  ::google::protobuf::internal::MapField<
      TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > unknown_map_field_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class TestImportEnumMap_ImportEnumAmpEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
    0 > SuperType;
  TestImportEnumMap_ImportEnumAmpEntry_DoNotUse();
  TestImportEnumMap_ImportEnumAmpEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestImportEnumMap_ImportEnumAmpEntry_DoNotUse& other);
  static const TestImportEnumMap_ImportEnumAmpEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestImportEnumMap_ImportEnumAmpEntry_DoNotUse*>(&_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestImportEnumMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestImportEnumMap) */ {
 public:
  TestImportEnumMap();
  virtual ~TestImportEnumMap();

  TestImportEnumMap(const TestImportEnumMap& from);

  inline TestImportEnumMap& operator=(const TestImportEnumMap& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestImportEnumMap(TestImportEnumMap&& from) noexcept
    : TestImportEnumMap() {
    *this = ::std::move(from);
  }

  inline TestImportEnumMap& operator=(TestImportEnumMap&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestImportEnumMap& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestImportEnumMap* internal_default_instance() {
    return reinterpret_cast<const TestImportEnumMap*>(
               &_TestImportEnumMap_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  void UnsafeArenaSwap(TestImportEnumMap* other);
  void Swap(TestImportEnumMap* other);
  friend void swap(TestImportEnumMap& a, TestImportEnumMap& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestImportEnumMap* New() const final {
    return CreateMaybeMessage<TestImportEnumMap>(NULL);
  }

  TestImportEnumMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestImportEnumMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestImportEnumMap& from);
  void MergeFrom(const TestImportEnumMap& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestImportEnumMap* other);
  protected:
  explicit TestImportEnumMap(::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 final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  // map<int32, .protobuf_unittest_import.ImportEnumForMap> import_enum_amp = 1;
  int import_enum_amp_size() const;
  void clear_import_enum_amp();
  static const int kImportEnumAmpFieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap >&
      import_enum_amp() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap >*
      mutable_import_enum_amp();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestImportEnumMap)
 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::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::internal::MapField<
      TestImportEnumMap_ImportEnumAmpEntry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_ENUM,
      0 > import_enum_amp_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class TestIntIntMap_MEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestIntIntMap_MEntry_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<TestIntIntMap_MEntry_DoNotUse, 
    ::google::protobuf::int32, ::google::protobuf::int32,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    0 > SuperType;
  TestIntIntMap_MEntry_DoNotUse();
  TestIntIntMap_MEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestIntIntMap_MEntry_DoNotUse& other);
  static const TestIntIntMap_MEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestIntIntMap_MEntry_DoNotUse*>(&_TestIntIntMap_MEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestIntIntMap : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestIntIntMap) */ {
 public:
  TestIntIntMap();
  virtual ~TestIntIntMap();

  TestIntIntMap(const TestIntIntMap& from);

  inline TestIntIntMap& operator=(const TestIntIntMap& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestIntIntMap(TestIntIntMap&& from) noexcept
    : TestIntIntMap() {
    *this = ::std::move(from);
  }

  inline TestIntIntMap& operator=(TestIntIntMap&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestIntIntMap& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestIntIntMap* internal_default_instance() {
    return reinterpret_cast<const TestIntIntMap*>(
               &_TestIntIntMap_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  void UnsafeArenaSwap(TestIntIntMap* other);
  void Swap(TestIntIntMap* other);
  friend void swap(TestIntIntMap& a, TestIntIntMap& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestIntIntMap* New() const final {
    return CreateMaybeMessage<TestIntIntMap>(NULL);
  }

  TestIntIntMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestIntIntMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestIntIntMap& from);
  void MergeFrom(const TestIntIntMap& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestIntIntMap* other);
  protected:
  explicit TestIntIntMap(::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 final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  // map<int32, int32> m = 1;
  int m_size() const;
  void clear_m();
  static const int kMFieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
      m() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
      mutable_m();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestIntIntMap)
 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::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::internal::MapField<
      TestIntIntMap_MEntry_DoNotUse,
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > m_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class TestMaps_MInt32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MInt32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MInt32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MInt32Entry_DoNotUse();
  TestMaps_MInt32Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MInt32Entry_DoNotUse& other);
  static const TestMaps_MInt32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MInt32Entry_DoNotUse*>(&_TestMaps_MInt32Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MInt64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MInt64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MInt64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MInt64Entry_DoNotUse();
  TestMaps_MInt64Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MInt64Entry_DoNotUse& other);
  static const TestMaps_MInt64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MInt64Entry_DoNotUse*>(&_TestMaps_MInt64Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MUint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MUint32Entry_DoNotUse, 
    ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MUint32Entry_DoNotUse, 
    ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MUint32Entry_DoNotUse();
  TestMaps_MUint32Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MUint32Entry_DoNotUse& other);
  static const TestMaps_MUint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MUint32Entry_DoNotUse*>(&_TestMaps_MUint32Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MUint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MUint64Entry_DoNotUse, 
    ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MUint64Entry_DoNotUse, 
    ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MUint64Entry_DoNotUse();
  TestMaps_MUint64Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MUint64Entry_DoNotUse& other);
  static const TestMaps_MUint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MUint64Entry_DoNotUse*>(&_TestMaps_MUint64Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MSint32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MSint32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MSint32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MSint32Entry_DoNotUse();
  TestMaps_MSint32Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MSint32Entry_DoNotUse& other);
  static const TestMaps_MSint32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MSint32Entry_DoNotUse*>(&_TestMaps_MSint32Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MSint64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MSint64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MSint64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MSint64Entry_DoNotUse();
  TestMaps_MSint64Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MSint64Entry_DoNotUse& other);
  static const TestMaps_MSint64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MSint64Entry_DoNotUse*>(&_TestMaps_MSint64Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MFixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MFixed32Entry_DoNotUse, 
    ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MFixed32Entry_DoNotUse, 
    ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MFixed32Entry_DoNotUse();
  TestMaps_MFixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MFixed32Entry_DoNotUse& other);
  static const TestMaps_MFixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MFixed32Entry_DoNotUse*>(&_TestMaps_MFixed32Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MFixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MFixed64Entry_DoNotUse, 
    ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MFixed64Entry_DoNotUse, 
    ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MFixed64Entry_DoNotUse();
  TestMaps_MFixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MFixed64Entry_DoNotUse& other);
  static const TestMaps_MFixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MFixed64Entry_DoNotUse*>(&_TestMaps_MFixed64Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MSfixed32Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MSfixed32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MSfixed32Entry_DoNotUse, 
    ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MSfixed32Entry_DoNotUse();
  TestMaps_MSfixed32Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MSfixed32Entry_DoNotUse& other);
  static const TestMaps_MSfixed32Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MSfixed32Entry_DoNotUse*>(&_TestMaps_MSfixed32Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MSfixed64Entry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MSfixed64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MSfixed64Entry_DoNotUse, 
    ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MSfixed64Entry_DoNotUse();
  TestMaps_MSfixed64Entry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MSfixed64Entry_DoNotUse& other);
  static const TestMaps_MSfixed64Entry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MSfixed64Entry_DoNotUse*>(&_TestMaps_MSfixed64Entry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MBoolEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MBoolEntry_DoNotUse, 
    bool, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MBoolEntry_DoNotUse, 
    bool, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MBoolEntry_DoNotUse();
  TestMaps_MBoolEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MBoolEntry_DoNotUse& other);
  static const TestMaps_MBoolEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MBoolEntry_DoNotUse*>(&_TestMaps_MBoolEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps_MStringEntry_DoNotUse : public ::google::protobuf::internal::MapEntry<TestMaps_MStringEntry_DoNotUse, 
    ::std::string, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > {
public:
  typedef ::google::protobuf::internal::MapEntry<TestMaps_MStringEntry_DoNotUse, 
    ::std::string, ::protobuf_unittest::TestIntIntMap,
    ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
    ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
    0 > SuperType;
  TestMaps_MStringEntry_DoNotUse();
  TestMaps_MStringEntry_DoNotUse(::google::protobuf::Arena* arena);
  void MergeFrom(const TestMaps_MStringEntry_DoNotUse& other);
  static const TestMaps_MStringEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TestMaps_MStringEntry_DoNotUse*>(&_TestMaps_MStringEntry_DoNotUse_default_instance_); }
  void MergeFrom(const ::google::protobuf::Message& other) final;
  ::google::protobuf::Metadata GetMetadata() const;
};

// -------------------------------------------------------------------

class TestMaps : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestMaps) */ {
 public:
  TestMaps();
  virtual ~TestMaps();

  TestMaps(const TestMaps& from);

  inline TestMaps& operator=(const TestMaps& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestMaps(TestMaps&& from) noexcept
    : TestMaps() {
    *this = ::std::move(from);
  }

  inline TestMaps& operator=(TestMaps&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestMaps& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestMaps* internal_default_instance() {
    return reinterpret_cast<const TestMaps*>(
               &_TestMaps_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    22;

  void UnsafeArenaSwap(TestMaps* other);
  void Swap(TestMaps* other);
  friend void swap(TestMaps& a, TestMaps& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestMaps* New() const final {
    return CreateMaybeMessage<TestMaps>(NULL);
  }

  TestMaps* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestMaps>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestMaps& from);
  void MergeFrom(const TestMaps& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestMaps* other);
  protected:
  explicit TestMaps(::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 final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  // map<int32, .protobuf_unittest.TestIntIntMap> m_int32 = 1;
  int m_int32_size() const;
  void clear_m_int32();
  static const int kMInt32FieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
      m_int32() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_int32();

  // map<int64, .protobuf_unittest.TestIntIntMap> m_int64 = 2;
  int m_int64_size() const;
  void clear_m_int64();
  static const int kMInt64FieldNumber = 2;
  const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
      m_int64() const;
  ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_int64();

  // map<uint32, .protobuf_unittest.TestIntIntMap> m_uint32 = 3;
  int m_uint32_size() const;
  void clear_m_uint32();
  static const int kMUint32FieldNumber = 3;
  const ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >&
      m_uint32() const;
  ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_uint32();

  // map<uint64, .protobuf_unittest.TestIntIntMap> m_uint64 = 4;
  int m_uint64_size() const;
  void clear_m_uint64();
  static const int kMUint64FieldNumber = 4;
  const ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >&
      m_uint64() const;
  ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_uint64();

  // map<sint32, .protobuf_unittest.TestIntIntMap> m_sint32 = 5;
  int m_sint32_size() const;
  void clear_m_sint32();
  static const int kMSint32FieldNumber = 5;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
      m_sint32() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_sint32();

  // map<sint64, .protobuf_unittest.TestIntIntMap> m_sint64 = 6;
  int m_sint64_size() const;
  void clear_m_sint64();
  static const int kMSint64FieldNumber = 6;
  const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
      m_sint64() const;
  ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_sint64();

  // map<fixed32, .protobuf_unittest.TestIntIntMap> m_fixed32 = 7;
  int m_fixed32_size() const;
  void clear_m_fixed32();
  static const int kMFixed32FieldNumber = 7;
  const ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >&
      m_fixed32() const;
  ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_fixed32();

  // map<fixed64, .protobuf_unittest.TestIntIntMap> m_fixed64 = 8;
  int m_fixed64_size() const;
  void clear_m_fixed64();
  static const int kMFixed64FieldNumber = 8;
  const ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >&
      m_fixed64() const;
  ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_fixed64();

  // map<sfixed32, .protobuf_unittest.TestIntIntMap> m_sfixed32 = 9;
  int m_sfixed32_size() const;
  void clear_m_sfixed32();
  static const int kMSfixed32FieldNumber = 9;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
      m_sfixed32() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_sfixed32();

  // map<sfixed64, .protobuf_unittest.TestIntIntMap> m_sfixed64 = 10;
  int m_sfixed64_size() const;
  void clear_m_sfixed64();
  static const int kMSfixed64FieldNumber = 10;
  const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
      m_sfixed64() const;
  ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_sfixed64();

  // map<bool, .protobuf_unittest.TestIntIntMap> m_bool = 11;
  int m_bool_size() const;
  void clear_m_bool();
  static const int kMBoolFieldNumber = 11;
  const ::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap >&
      m_bool() const;
  ::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_bool();

  // map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
  int m_string_size() const;
  void clear_m_string();
  static const int kMStringFieldNumber = 12;
  const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >&
      m_string() const;
  ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >*
      mutable_m_string();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestMaps)
 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::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::internal::MapField<
      TestMaps_MInt32Entry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_int32_;
  ::google::protobuf::internal::MapField<
      TestMaps_MInt64Entry_DoNotUse,
      ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_int64_;
  ::google::protobuf::internal::MapField<
      TestMaps_MUint32Entry_DoNotUse,
      ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_uint32_;
  ::google::protobuf::internal::MapField<
      TestMaps_MUint64Entry_DoNotUse,
      ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_uint64_;
  ::google::protobuf::internal::MapField<
      TestMaps_MSint32Entry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_sint32_;
  ::google::protobuf::internal::MapField<
      TestMaps_MSint64Entry_DoNotUse,
      ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_sint64_;
  ::google::protobuf::internal::MapField<
      TestMaps_MFixed32Entry_DoNotUse,
      ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_fixed32_;
  ::google::protobuf::internal::MapField<
      TestMaps_MFixed64Entry_DoNotUse,
      ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_fixed64_;
  ::google::protobuf::internal::MapField<
      TestMaps_MSfixed32Entry_DoNotUse,
      ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_sfixed32_;
  ::google::protobuf::internal::MapField<
      TestMaps_MSfixed64Entry_DoNotUse,
      ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_sfixed64_;
  ::google::protobuf::internal::MapField<
      TestMaps_MBoolEntry_DoNotUse,
      bool, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_bool_;
  ::google::protobuf::internal::MapField<
      TestMaps_MStringEntry_DoNotUse,
      ::std::string, ::protobuf_unittest::TestIntIntMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > m_string_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class TestSubmessageMaps : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:protobuf_unittest.TestSubmessageMaps) */ {
 public:
  TestSubmessageMaps();
  virtual ~TestSubmessageMaps();

  TestSubmessageMaps(const TestSubmessageMaps& from);

  inline TestSubmessageMaps& operator=(const TestSubmessageMaps& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  TestSubmessageMaps(TestSubmessageMaps&& from) noexcept
    : TestSubmessageMaps() {
    *this = ::std::move(from);
  }

  inline TestSubmessageMaps& operator=(TestSubmessageMaps&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const TestSubmessageMaps& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const TestSubmessageMaps* internal_default_instance() {
    return reinterpret_cast<const TestSubmessageMaps*>(
               &_TestSubmessageMaps_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    23;

  void UnsafeArenaSwap(TestSubmessageMaps* other);
  void Swap(TestSubmessageMaps* other);
  friend void swap(TestSubmessageMaps& a, TestSubmessageMaps& b) {
    a.Swap(&b);
  }

  // implements Message ----------------------------------------------

  inline TestSubmessageMaps* New() const final {
    return CreateMaybeMessage<TestSubmessageMaps>(NULL);
  }

  TestSubmessageMaps* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestSubmessageMaps>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestSubmessageMaps& from);
  void MergeFrom(const TestSubmessageMaps& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestSubmessageMaps* other);
  protected:
  explicit TestSubmessageMaps(::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 final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .protobuf_unittest.TestMaps m = 1;
  bool has_m() const;
  void clear_m();
  static const int kMFieldNumber = 1;
  private:
  const ::protobuf_unittest::TestMaps& _internal_m() const;
  public:
  const ::protobuf_unittest::TestMaps& m() const;
  ::protobuf_unittest::TestMaps* release_m();
  ::protobuf_unittest::TestMaps* mutable_m();
  void set_allocated_m(::protobuf_unittest::TestMaps* m);
  void unsafe_arena_set_allocated_m(
      ::protobuf_unittest::TestMaps* m);
  ::protobuf_unittest::TestMaps* unsafe_arena_release_m();

  // @@protoc_insertion_point(class_scope:protobuf_unittest.TestSubmessageMaps)
 private:
  void set_has_m();
  void clear_has_m();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::HasBits<1> _has_bits_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::protobuf_unittest::TestMaps* m_;
  friend struct ::protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::TableStruct;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// TestEnumMap

// map<int32, .protobuf_unittest.Proto2MapEnum> known_map_field = 101;
inline int TestEnumMap::known_map_field_size() const {
  return known_map_field_.size();
}
inline void TestEnumMap::clear_known_map_field() {
  known_map_field_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >&
TestEnumMap::known_map_field() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestEnumMap.known_map_field)
  return known_map_field_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >*
TestEnumMap::mutable_known_map_field() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestEnumMap.known_map_field)
  return known_map_field_.MutableMap();
}

// map<int32, .protobuf_unittest.Proto2MapEnum> unknown_map_field = 102;
inline int TestEnumMap::unknown_map_field_size() const {
  return unknown_map_field_.size();
}
inline void TestEnumMap::clear_unknown_map_field() {
  unknown_map_field_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >&
TestEnumMap::unknown_map_field() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestEnumMap.unknown_map_field)
  return unknown_map_field_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >*
TestEnumMap::mutable_unknown_map_field() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestEnumMap.unknown_map_field)
  return unknown_map_field_.MutableMap();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// TestEnumMapPlusExtra

// map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> known_map_field = 101;
inline int TestEnumMapPlusExtra::known_map_field_size() const {
  return known_map_field_.size();
}
inline void TestEnumMapPlusExtra::clear_known_map_field() {
  known_map_field_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >&
TestEnumMapPlusExtra::known_map_field() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestEnumMapPlusExtra.known_map_field)
  return known_map_field_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >*
TestEnumMapPlusExtra::mutable_known_map_field() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestEnumMapPlusExtra.known_map_field)
  return known_map_field_.MutableMap();
}

// map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> unknown_map_field = 102;
inline int TestEnumMapPlusExtra::unknown_map_field_size() const {
  return unknown_map_field_.size();
}
inline void TestEnumMapPlusExtra::clear_unknown_map_field() {
  unknown_map_field_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >&
TestEnumMapPlusExtra::unknown_map_field() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestEnumMapPlusExtra.unknown_map_field)
  return unknown_map_field_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >*
TestEnumMapPlusExtra::mutable_unknown_map_field() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestEnumMapPlusExtra.unknown_map_field)
  return unknown_map_field_.MutableMap();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// TestImportEnumMap

// map<int32, .protobuf_unittest_import.ImportEnumForMap> import_enum_amp = 1;
inline int TestImportEnumMap::import_enum_amp_size() const {
  return import_enum_amp_.size();
}
inline void TestImportEnumMap::clear_import_enum_amp() {
  import_enum_amp_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap >&
TestImportEnumMap::import_enum_amp() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestImportEnumMap.import_enum_amp)
  return import_enum_amp_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap >*
TestImportEnumMap::mutable_import_enum_amp() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestImportEnumMap.import_enum_amp)
  return import_enum_amp_.MutableMap();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// TestIntIntMap

// map<int32, int32> m = 1;
inline int TestIntIntMap::m_size() const {
  return m_.size();
}
inline void TestIntIntMap::clear_m() {
  m_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
TestIntIntMap::m() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestIntIntMap.m)
  return m_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
TestIntIntMap::mutable_m() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestIntIntMap.m)
  return m_.MutableMap();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// TestMaps

// map<int32, .protobuf_unittest.TestIntIntMap> m_int32 = 1;
inline int TestMaps::m_int32_size() const {
  return m_int32_.size();
}
inline void TestMaps::clear_m_int32() {
  m_int32_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_int32() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_int32)
  return m_int32_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_int32() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_int32)
  return m_int32_.MutableMap();
}

// map<int64, .protobuf_unittest.TestIntIntMap> m_int64 = 2;
inline int TestMaps::m_int64_size() const {
  return m_int64_.size();
}
inline void TestMaps::clear_m_int64() {
  m_int64_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_int64() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_int64)
  return m_int64_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_int64() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_int64)
  return m_int64_.MutableMap();
}

// map<uint32, .protobuf_unittest.TestIntIntMap> m_uint32 = 3;
inline int TestMaps::m_uint32_size() const {
  return m_uint32_.size();
}
inline void TestMaps::clear_m_uint32() {
  m_uint32_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_uint32() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_uint32)
  return m_uint32_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_uint32() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_uint32)
  return m_uint32_.MutableMap();
}

// map<uint64, .protobuf_unittest.TestIntIntMap> m_uint64 = 4;
inline int TestMaps::m_uint64_size() const {
  return m_uint64_.size();
}
inline void TestMaps::clear_m_uint64() {
  m_uint64_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_uint64() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_uint64)
  return m_uint64_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_uint64() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_uint64)
  return m_uint64_.MutableMap();
}

// map<sint32, .protobuf_unittest.TestIntIntMap> m_sint32 = 5;
inline int TestMaps::m_sint32_size() const {
  return m_sint32_.size();
}
inline void TestMaps::clear_m_sint32() {
  m_sint32_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_sint32() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_sint32)
  return m_sint32_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_sint32() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_sint32)
  return m_sint32_.MutableMap();
}

// map<sint64, .protobuf_unittest.TestIntIntMap> m_sint64 = 6;
inline int TestMaps::m_sint64_size() const {
  return m_sint64_.size();
}
inline void TestMaps::clear_m_sint64() {
  m_sint64_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_sint64() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_sint64)
  return m_sint64_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_sint64() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_sint64)
  return m_sint64_.MutableMap();
}

// map<fixed32, .protobuf_unittest.TestIntIntMap> m_fixed32 = 7;
inline int TestMaps::m_fixed32_size() const {
  return m_fixed32_.size();
}
inline void TestMaps::clear_m_fixed32() {
  m_fixed32_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_fixed32() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_fixed32)
  return m_fixed32_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_fixed32() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_fixed32)
  return m_fixed32_.MutableMap();
}

// map<fixed64, .protobuf_unittest.TestIntIntMap> m_fixed64 = 8;
inline int TestMaps::m_fixed64_size() const {
  return m_fixed64_.size();
}
inline void TestMaps::clear_m_fixed64() {
  m_fixed64_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_fixed64() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_fixed64)
  return m_fixed64_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_fixed64() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_fixed64)
  return m_fixed64_.MutableMap();
}

// map<sfixed32, .protobuf_unittest.TestIntIntMap> m_sfixed32 = 9;
inline int TestMaps::m_sfixed32_size() const {
  return m_sfixed32_.size();
}
inline void TestMaps::clear_m_sfixed32() {
  m_sfixed32_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_sfixed32() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_sfixed32)
  return m_sfixed32_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_sfixed32() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_sfixed32)
  return m_sfixed32_.MutableMap();
}

// map<sfixed64, .protobuf_unittest.TestIntIntMap> m_sfixed64 = 10;
inline int TestMaps::m_sfixed64_size() const {
  return m_sfixed64_.size();
}
inline void TestMaps::clear_m_sfixed64() {
  m_sfixed64_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_sfixed64() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_sfixed64)
  return m_sfixed64_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_sfixed64() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_sfixed64)
  return m_sfixed64_.MutableMap();
}

// map<bool, .protobuf_unittest.TestIntIntMap> m_bool = 11;
inline int TestMaps::m_bool_size() const {
  return m_bool_.size();
}
inline void TestMaps::clear_m_bool() {
  m_bool_.Clear();
}
inline const ::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_bool() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_bool)
  return m_bool_.GetMap();
}
inline ::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_bool() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_bool)
  return m_bool_.MutableMap();
}

// map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
inline int TestMaps::m_string_size() const {
  return m_string_.size();
}
inline void TestMaps::clear_m_string() {
  m_string_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >&
TestMaps::m_string() const {
  // @@protoc_insertion_point(field_map:protobuf_unittest.TestMaps.m_string)
  return m_string_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >*
TestMaps::mutable_m_string() {
  // @@protoc_insertion_point(field_mutable_map:protobuf_unittest.TestMaps.m_string)
  return m_string_.MutableMap();
}

// -------------------------------------------------------------------

// TestSubmessageMaps

// optional .protobuf_unittest.TestMaps m = 1;
inline bool TestSubmessageMaps::has_m() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void TestSubmessageMaps::set_has_m() {
  _has_bits_[0] |= 0x00000001u;
}
inline void TestSubmessageMaps::clear_has_m() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void TestSubmessageMaps::clear_m() {
  if (m_ != NULL) m_->Clear();
  clear_has_m();
}
inline const ::protobuf_unittest::TestMaps& TestSubmessageMaps::_internal_m() const {
  return *m_;
}
inline const ::protobuf_unittest::TestMaps& TestSubmessageMaps::m() const {
  const ::protobuf_unittest::TestMaps* p = m_;
  // @@protoc_insertion_point(field_get:protobuf_unittest.TestSubmessageMaps.m)
  return p != NULL ? *p : *reinterpret_cast<const ::protobuf_unittest::TestMaps*>(
      &::protobuf_unittest::_TestMaps_default_instance_);
}
inline ::protobuf_unittest::TestMaps* TestSubmessageMaps::release_m() {
  // @@protoc_insertion_point(field_release:protobuf_unittest.TestSubmessageMaps.m)
  clear_has_m();
  ::protobuf_unittest::TestMaps* temp = m_;
  if (GetArenaNoVirtual() != NULL) {
    temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
  }
  m_ = NULL;
  return temp;
}
inline ::protobuf_unittest::TestMaps* TestSubmessageMaps::unsafe_arena_release_m() {
  // @@protoc_insertion_point(field_unsafe_arena_release:protobuf_unittest.TestSubmessageMaps.m)
  clear_has_m();
  ::protobuf_unittest::TestMaps* temp = m_;
  m_ = NULL;
  return temp;
}
inline ::protobuf_unittest::TestMaps* TestSubmessageMaps::mutable_m() {
  set_has_m();
  if (m_ == NULL) {
    auto* p = CreateMaybeMessage<::protobuf_unittest::TestMaps>(GetArenaNoVirtual());
    m_ = p;
  }
  // @@protoc_insertion_point(field_mutable:protobuf_unittest.TestSubmessageMaps.m)
  return m_;
}
inline void TestSubmessageMaps::set_allocated_m(::protobuf_unittest::TestMaps* m) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete m_;
  }
  if (m) {
    ::google::protobuf::Arena* submessage_arena =
      ::google::protobuf::Arena::GetArena(m);
    if (message_arena != submessage_arena) {
      m = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, m, submessage_arena);
    }
    set_has_m();
  } else {
    clear_has_m();
  }
  m_ = m;
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestSubmessageMaps.m)
}

#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::Proto2MapEnum> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::protobuf_unittest::Proto2MapEnum>() {
  return ::protobuf_unittest::Proto2MapEnum_descriptor();
}
template <> struct is_proto_enum< ::protobuf_unittest::Proto2MapEnumPlusExtra> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::protobuf_unittest::Proto2MapEnumPlusExtra>() {
  return ::protobuf_unittest::Proto2MapEnumPlusExtra_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_INCLUDED_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto
