// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/util/internal/testdata/maps.proto

#ifndef PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto
#define PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_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>
// @@protoc_insertion_point(includes)
#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto 

namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_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[30];
  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_2futil_2finternal_2ftestdata_2fmaps_2eproto
namespace google {
namespace protobuf {
namespace testing {
class BoolToString;
class BoolToStringDefaultTypeInternal;
extern BoolToStringDefaultTypeInternal _BoolToString_default_instance_;
class BoolToString_MapEntry_DoNotUse;
class BoolToString_MapEntry_DoNotUseDefaultTypeInternal;
extern BoolToString_MapEntry_DoNotUseDefaultTypeInternal _BoolToString_MapEntry_DoNotUse_default_instance_;
class DummyRequest;
class DummyRequestDefaultTypeInternal;
extern DummyRequestDefaultTypeInternal _DummyRequest_default_instance_;
class EmptyMap;
class EmptyMapDefaultTypeInternal;
extern EmptyMapDefaultTypeInternal _EmptyMap_default_instance_;
class EmptyMap_MapEntry_DoNotUse;
class EmptyMap_MapEntry_DoNotUseDefaultTypeInternal;
extern EmptyMap_MapEntry_DoNotUseDefaultTypeInternal _EmptyMap_MapEntry_DoNotUse_default_instance_;
class IntToString;
class IntToStringDefaultTypeInternal;
extern IntToStringDefaultTypeInternal _IntToString_default_instance_;
class IntToString_MapEntry_DoNotUse;
class IntToString_MapEntry_DoNotUseDefaultTypeInternal;
extern IntToString_MapEntry_DoNotUseDefaultTypeInternal _IntToString_MapEntry_DoNotUse_default_instance_;
class MapIn;
class MapInDefaultTypeInternal;
extern MapInDefaultTypeInternal _MapIn_default_instance_;
class MapIn_MapInputEntry_DoNotUse;
class MapIn_MapInputEntry_DoNotUseDefaultTypeInternal;
extern MapIn_MapInputEntry_DoNotUseDefaultTypeInternal _MapIn_MapInputEntry_DoNotUse_default_instance_;
class MapM;
class MapMDefaultTypeInternal;
extern MapMDefaultTypeInternal _MapM_default_instance_;
class MapOfObjects;
class MapOfObjectsDefaultTypeInternal;
extern MapOfObjectsDefaultTypeInternal _MapOfObjects_default_instance_;
class MapOfObjects_M;
class MapOfObjects_MDefaultTypeInternal;
extern MapOfObjects_MDefaultTypeInternal _MapOfObjects_M_default_instance_;
class MapOfObjects_MapEntry_DoNotUse;
class MapOfObjects_MapEntry_DoNotUseDefaultTypeInternal;
extern MapOfObjects_MapEntry_DoNotUseDefaultTypeInternal _MapOfObjects_MapEntry_DoNotUse_default_instance_;
class MapOut;
class MapOutDefaultTypeInternal;
extern MapOutDefaultTypeInternal _MapOut_default_instance_;
class MapOutWireFormat;
class MapOutWireFormatDefaultTypeInternal;
extern MapOutWireFormatDefaultTypeInternal _MapOutWireFormat_default_instance_;
class MapOutWireFormat_Map1Entry;
class MapOutWireFormat_Map1EntryDefaultTypeInternal;
extern MapOutWireFormat_Map1EntryDefaultTypeInternal _MapOutWireFormat_Map1Entry_default_instance_;
class MapOutWireFormat_Map2Entry;
class MapOutWireFormat_Map2EntryDefaultTypeInternal;
extern MapOutWireFormat_Map2EntryDefaultTypeInternal _MapOutWireFormat_Map2Entry_default_instance_;
class MapOutWireFormat_Map3Entry;
class MapOutWireFormat_Map3EntryDefaultTypeInternal;
extern MapOutWireFormat_Map3EntryDefaultTypeInternal _MapOutWireFormat_Map3Entry_default_instance_;
class MapOutWireFormat_Map4Entry;
class MapOutWireFormat_Map4EntryDefaultTypeInternal;
extern MapOutWireFormat_Map4EntryDefaultTypeInternal _MapOutWireFormat_Map4Entry_default_instance_;
class MapOut_Map1Entry_DoNotUse;
class MapOut_Map1Entry_DoNotUseDefaultTypeInternal;
extern MapOut_Map1Entry_DoNotUseDefaultTypeInternal _MapOut_Map1Entry_DoNotUse_default_instance_;
class MapOut_Map2Entry_DoNotUse;
class MapOut_Map2Entry_DoNotUseDefaultTypeInternal;
extern MapOut_Map2Entry_DoNotUseDefaultTypeInternal _MapOut_Map2Entry_DoNotUse_default_instance_;
class MapOut_Map3Entry_DoNotUse;
class MapOut_Map3Entry_DoNotUseDefaultTypeInternal;
extern MapOut_Map3Entry_DoNotUseDefaultTypeInternal _MapOut_Map3Entry_DoNotUse_default_instance_;
class MapOut_Map4Entry_DoNotUse;
class MapOut_Map4Entry_DoNotUseDefaultTypeInternal;
extern MapOut_Map4Entry_DoNotUseDefaultTypeInternal _MapOut_Map4Entry_DoNotUse_default_instance_;
class MapsTestCases;
class MapsTestCasesDefaultTypeInternal;
extern MapsTestCasesDefaultTypeInternal _MapsTestCases_default_instance_;
class Mixed1;
class Mixed1DefaultTypeInternal;
extern Mixed1DefaultTypeInternal _Mixed1_default_instance_;
class Mixed1_MapEntry_DoNotUse;
class Mixed1_MapEntry_DoNotUseDefaultTypeInternal;
extern Mixed1_MapEntry_DoNotUseDefaultTypeInternal _Mixed1_MapEntry_DoNotUse_default_instance_;
class Mixed2;
class Mixed2DefaultTypeInternal;
extern Mixed2DefaultTypeInternal _Mixed2_default_instance_;
class Mixed2_MapEntry_DoNotUse;
class Mixed2_MapEntry_DoNotUseDefaultTypeInternal;
extern Mixed2_MapEntry_DoNotUseDefaultTypeInternal _Mixed2_MapEntry_DoNotUse_default_instance_;
class StringtoInt;
class StringtoIntDefaultTypeInternal;
extern StringtoIntDefaultTypeInternal _StringtoInt_default_instance_;
class StringtoInt_MapEntry_DoNotUse;
class StringtoInt_MapEntry_DoNotUseDefaultTypeInternal;
extern StringtoInt_MapEntry_DoNotUseDefaultTypeInternal _StringtoInt_MapEntry_DoNotUse_default_instance_;
}  // namespace testing
}  // namespace protobuf
}  // namespace google
namespace google {
namespace protobuf {
template<> ::google::protobuf::testing::BoolToString* Arena::CreateMaybeMessage<::google::protobuf::testing::BoolToString>(Arena*);
template<> ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::BoolToString_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::DummyRequest* Arena::CreateMaybeMessage<::google::protobuf::testing::DummyRequest>(Arena*);
template<> ::google::protobuf::testing::EmptyMap* Arena::CreateMaybeMessage<::google::protobuf::testing::EmptyMap>(Arena*);
template<> ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::IntToString* Arena::CreateMaybeMessage<::google::protobuf::testing::IntToString>(Arena*);
template<> ::google::protobuf::testing::IntToString_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::IntToString_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapIn* Arena::CreateMaybeMessage<::google::protobuf::testing::MapIn>(Arena*);
template<> ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapM* Arena::CreateMaybeMessage<::google::protobuf::testing::MapM>(Arena*);
template<> ::google::protobuf::testing::MapOfObjects* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOfObjects>(Arena*);
template<> ::google::protobuf::testing::MapOfObjects_M* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOfObjects_M>(Arena*);
template<> ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapOut* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOut>(Arena*);
template<> ::google::protobuf::testing::MapOutWireFormat* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOutWireFormat>(Arena*);
template<> ::google::protobuf::testing::MapOutWireFormat_Map1Entry* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOutWireFormat_Map1Entry>(Arena*);
template<> ::google::protobuf::testing::MapOutWireFormat_Map2Entry* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOutWireFormat_Map2Entry>(Arena*);
template<> ::google::protobuf::testing::MapOutWireFormat_Map3Entry* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOutWireFormat_Map3Entry>(Arena*);
template<> ::google::protobuf::testing::MapOutWireFormat_Map4Entry* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOutWireFormat_Map4Entry>(Arena*);
template<> ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOut_Map1Entry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOut_Map2Entry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOut_Map3Entry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::MapOut_Map4Entry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::MapsTestCases* Arena::CreateMaybeMessage<::google::protobuf::testing::MapsTestCases>(Arena*);
template<> ::google::protobuf::testing::Mixed1* Arena::CreateMaybeMessage<::google::protobuf::testing::Mixed1>(Arena*);
template<> ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::Mixed1_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::Mixed2* Arena::CreateMaybeMessage<::google::protobuf::testing::Mixed2>(Arena*);
template<> ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::Mixed2_MapEntry_DoNotUse>(Arena*);
template<> ::google::protobuf::testing::StringtoInt* Arena::CreateMaybeMessage<::google::protobuf::testing::StringtoInt>(Arena*);
template<> ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse* Arena::CreateMaybeMessage<::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse>(Arena*);
}  // namespace protobuf
}  // namespace google
namespace google {
namespace protobuf {
namespace testing {

enum Mixed2_E {
  Mixed2_E_E0 = 0,
  Mixed2_E_E1 = 1,
  Mixed2_E_E2 = 2,
  Mixed2_E_E3 = 3,
  Mixed2_E_Mixed2_E_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
  Mixed2_E_Mixed2_E_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
};
bool Mixed2_E_IsValid(int value);
const Mixed2_E Mixed2_E_E_MIN = Mixed2_E_E0;
const Mixed2_E Mixed2_E_E_MAX = Mixed2_E_E3;
const int Mixed2_E_E_ARRAYSIZE = Mixed2_E_E_MAX + 1;

const ::google::protobuf::EnumDescriptor* Mixed2_E_descriptor();
inline const ::std::string& Mixed2_E_Name(Mixed2_E value) {
  return ::google::protobuf::internal::NameOfEnum(
    Mixed2_E_descriptor(), value);
}
inline bool Mixed2_E_Parse(
    const ::std::string& name, Mixed2_E* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Mixed2_E>(
    Mixed2_E_descriptor(), name, value);
}
// ===================================================================

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

  MapsTestCases(const MapsTestCases& from);

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

  inline MapsTestCases& operator=(MapsTestCases&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapsTestCases& default_instance();

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

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

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

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

  MapsTestCases* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapsTestCases>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapsTestCases& from);
  void MergeFrom(const MapsTestCases& 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(MapsTestCases* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // .google.protobuf.testing.EmptyMap empty_map = 1;
  bool has_empty_map() const;
  void clear_empty_map();
  static const int kEmptyMapFieldNumber = 1;
  private:
  const ::google::protobuf::testing::EmptyMap& _internal_empty_map() const;
  public:
  const ::google::protobuf::testing::EmptyMap& empty_map() const;
  ::google::protobuf::testing::EmptyMap* release_empty_map();
  ::google::protobuf::testing::EmptyMap* mutable_empty_map();
  void set_allocated_empty_map(::google::protobuf::testing::EmptyMap* empty_map);

  // .google.protobuf.testing.StringtoInt string_to_int = 2;
  bool has_string_to_int() const;
  void clear_string_to_int();
  static const int kStringToIntFieldNumber = 2;
  private:
  const ::google::protobuf::testing::StringtoInt& _internal_string_to_int() const;
  public:
  const ::google::protobuf::testing::StringtoInt& string_to_int() const;
  ::google::protobuf::testing::StringtoInt* release_string_to_int();
  ::google::protobuf::testing::StringtoInt* mutable_string_to_int();
  void set_allocated_string_to_int(::google::protobuf::testing::StringtoInt* string_to_int);

  // .google.protobuf.testing.IntToString int_to_string = 3;
  bool has_int_to_string() const;
  void clear_int_to_string();
  static const int kIntToStringFieldNumber = 3;
  private:
  const ::google::protobuf::testing::IntToString& _internal_int_to_string() const;
  public:
  const ::google::protobuf::testing::IntToString& int_to_string() const;
  ::google::protobuf::testing::IntToString* release_int_to_string();
  ::google::protobuf::testing::IntToString* mutable_int_to_string();
  void set_allocated_int_to_string(::google::protobuf::testing::IntToString* int_to_string);

  // .google.protobuf.testing.Mixed1 mixed1 = 4;
  bool has_mixed1() const;
  void clear_mixed1();
  static const int kMixed1FieldNumber = 4;
  private:
  const ::google::protobuf::testing::Mixed1& _internal_mixed1() const;
  public:
  const ::google::protobuf::testing::Mixed1& mixed1() const;
  ::google::protobuf::testing::Mixed1* release_mixed1();
  ::google::protobuf::testing::Mixed1* mutable_mixed1();
  void set_allocated_mixed1(::google::protobuf::testing::Mixed1* mixed1);

  // .google.protobuf.testing.Mixed2 mixed2 = 5;
  bool has_mixed2() const;
  void clear_mixed2();
  static const int kMixed2FieldNumber = 5;
  private:
  const ::google::protobuf::testing::Mixed2& _internal_mixed2() const;
  public:
  const ::google::protobuf::testing::Mixed2& mixed2() const;
  ::google::protobuf::testing::Mixed2* release_mixed2();
  ::google::protobuf::testing::Mixed2* mutable_mixed2();
  void set_allocated_mixed2(::google::protobuf::testing::Mixed2* mixed2);

  // .google.protobuf.testing.MapOfObjects map_of_objects = 6;
  bool has_map_of_objects() const;
  void clear_map_of_objects();
  static const int kMapOfObjectsFieldNumber = 6;
  private:
  const ::google::protobuf::testing::MapOfObjects& _internal_map_of_objects() const;
  public:
  const ::google::protobuf::testing::MapOfObjects& map_of_objects() const;
  ::google::protobuf::testing::MapOfObjects* release_map_of_objects();
  ::google::protobuf::testing::MapOfObjects* mutable_map_of_objects();
  void set_allocated_map_of_objects(::google::protobuf::testing::MapOfObjects* map_of_objects);

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int1 = 7;
  bool has_empty_key_string_to_int1() const;
  void clear_empty_key_string_to_int1();
  static const int kEmptyKeyStringToInt1FieldNumber = 7;
  private:
  const ::google::protobuf::testing::StringtoInt& _internal_empty_key_string_to_int1() const;
  public:
  const ::google::protobuf::testing::StringtoInt& empty_key_string_to_int1() const;
  ::google::protobuf::testing::StringtoInt* release_empty_key_string_to_int1();
  ::google::protobuf::testing::StringtoInt* mutable_empty_key_string_to_int1();
  void set_allocated_empty_key_string_to_int1(::google::protobuf::testing::StringtoInt* empty_key_string_to_int1);

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int2 = 8;
  bool has_empty_key_string_to_int2() const;
  void clear_empty_key_string_to_int2();
  static const int kEmptyKeyStringToInt2FieldNumber = 8;
  private:
  const ::google::protobuf::testing::StringtoInt& _internal_empty_key_string_to_int2() const;
  public:
  const ::google::protobuf::testing::StringtoInt& empty_key_string_to_int2() const;
  ::google::protobuf::testing::StringtoInt* release_empty_key_string_to_int2();
  ::google::protobuf::testing::StringtoInt* mutable_empty_key_string_to_int2();
  void set_allocated_empty_key_string_to_int2(::google::protobuf::testing::StringtoInt* empty_key_string_to_int2);

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int3 = 9;
  bool has_empty_key_string_to_int3() const;
  void clear_empty_key_string_to_int3();
  static const int kEmptyKeyStringToInt3FieldNumber = 9;
  private:
  const ::google::protobuf::testing::StringtoInt& _internal_empty_key_string_to_int3() const;
  public:
  const ::google::protobuf::testing::StringtoInt& empty_key_string_to_int3() const;
  ::google::protobuf::testing::StringtoInt* release_empty_key_string_to_int3();
  ::google::protobuf::testing::StringtoInt* mutable_empty_key_string_to_int3();
  void set_allocated_empty_key_string_to_int3(::google::protobuf::testing::StringtoInt* empty_key_string_to_int3);

  // .google.protobuf.testing.BoolToString empty_key_bool_to_string = 10;
  bool has_empty_key_bool_to_string() const;
  void clear_empty_key_bool_to_string();
  static const int kEmptyKeyBoolToStringFieldNumber = 10;
  private:
  const ::google::protobuf::testing::BoolToString& _internal_empty_key_bool_to_string() const;
  public:
  const ::google::protobuf::testing::BoolToString& empty_key_bool_to_string() const;
  ::google::protobuf::testing::BoolToString* release_empty_key_bool_to_string();
  ::google::protobuf::testing::BoolToString* mutable_empty_key_bool_to_string();
  void set_allocated_empty_key_bool_to_string(::google::protobuf::testing::BoolToString* empty_key_bool_to_string);

  // .google.protobuf.testing.IntToString empty_key_int_to_string = 11;
  bool has_empty_key_int_to_string() const;
  void clear_empty_key_int_to_string();
  static const int kEmptyKeyIntToStringFieldNumber = 11;
  private:
  const ::google::protobuf::testing::IntToString& _internal_empty_key_int_to_string() const;
  public:
  const ::google::protobuf::testing::IntToString& empty_key_int_to_string() const;
  ::google::protobuf::testing::IntToString* release_empty_key_int_to_string();
  ::google::protobuf::testing::IntToString* mutable_empty_key_int_to_string();
  void set_allocated_empty_key_int_to_string(::google::protobuf::testing::IntToString* empty_key_int_to_string);

  // .google.protobuf.testing.Mixed1 empty_key_mixed = 12;
  bool has_empty_key_mixed() const;
  void clear_empty_key_mixed();
  static const int kEmptyKeyMixedFieldNumber = 12;
  private:
  const ::google::protobuf::testing::Mixed1& _internal_empty_key_mixed() const;
  public:
  const ::google::protobuf::testing::Mixed1& empty_key_mixed() const;
  ::google::protobuf::testing::Mixed1* release_empty_key_mixed();
  ::google::protobuf::testing::Mixed1* mutable_empty_key_mixed();
  void set_allocated_empty_key_mixed(::google::protobuf::testing::Mixed1* empty_key_mixed);

  // .google.protobuf.testing.MapOfObjects empty_key_map_objects = 13;
  bool has_empty_key_map_objects() const;
  void clear_empty_key_map_objects();
  static const int kEmptyKeyMapObjectsFieldNumber = 13;
  private:
  const ::google::protobuf::testing::MapOfObjects& _internal_empty_key_map_objects() const;
  public:
  const ::google::protobuf::testing::MapOfObjects& empty_key_map_objects() const;
  ::google::protobuf::testing::MapOfObjects* release_empty_key_map_objects();
  ::google::protobuf::testing::MapOfObjects* mutable_empty_key_map_objects();
  void set_allocated_empty_key_map_objects(::google::protobuf::testing::MapOfObjects* empty_key_map_objects);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapsTestCases)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::testing::EmptyMap* empty_map_;
  ::google::protobuf::testing::StringtoInt* string_to_int_;
  ::google::protobuf::testing::IntToString* int_to_string_;
  ::google::protobuf::testing::Mixed1* mixed1_;
  ::google::protobuf::testing::Mixed2* mixed2_;
  ::google::protobuf::testing::MapOfObjects* map_of_objects_;
  ::google::protobuf::testing::StringtoInt* empty_key_string_to_int1_;
  ::google::protobuf::testing::StringtoInt* empty_key_string_to_int2_;
  ::google::protobuf::testing::StringtoInt* empty_key_string_to_int3_;
  ::google::protobuf::testing::BoolToString* empty_key_bool_to_string_;
  ::google::protobuf::testing::IntToString* empty_key_int_to_string_;
  ::google::protobuf::testing::Mixed1* empty_key_mixed_;
  ::google::protobuf::testing::MapOfObjects* empty_key_map_objects_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  EmptyMap(const EmptyMap& from);

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

  inline EmptyMap& operator=(EmptyMap&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const EmptyMap& default_instance();

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

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

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

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

  EmptyMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<EmptyMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const EmptyMap& from);
  void MergeFrom(const EmptyMap& 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(EmptyMap* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<int32, int32> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
      map() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
      mutable_map();

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.EmptyMap)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      EmptyMap_MapEntry_DoNotUse,
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  StringtoInt(const StringtoInt& from);

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

  inline StringtoInt& operator=(StringtoInt&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const StringtoInt& default_instance();

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

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

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

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

  StringtoInt* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<StringtoInt>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const StringtoInt& from);
  void MergeFrom(const StringtoInt& 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(StringtoInt* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<string, int32> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
      map() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
      mutable_map();

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.StringtoInt)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      StringtoInt_MapEntry_DoNotUse,
      ::std::string, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  IntToString(const IntToString& from);

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

  inline IntToString& operator=(IntToString&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const IntToString& default_instance();

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

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

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

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

  IntToString* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<IntToString>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const IntToString& from);
  void MergeFrom(const IntToString& 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(IntToString* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<int32, string> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
      map() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
      mutable_map();

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.IntToString)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      IntToString_MapEntry_DoNotUse,
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  BoolToString(const BoolToString& from);

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

  inline BoolToString& operator=(BoolToString&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const BoolToString& default_instance();

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

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

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

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

  BoolToString* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<BoolToString>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const BoolToString& from);
  void MergeFrom(const BoolToString& 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(BoolToString* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<bool, string> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< bool, ::std::string >&
      map() const;
  ::google::protobuf::Map< bool, ::std::string >*
      mutable_map();

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.BoolToString)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      BoolToString_MapEntry_DoNotUse,
      bool, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  Mixed1(const Mixed1& from);

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

  inline Mixed1& operator=(Mixed1&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const Mixed1& default_instance();

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

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

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

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

  Mixed1* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<Mixed1>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const Mixed1& from);
  void MergeFrom(const Mixed1& 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(Mixed1* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<string, float> map = 2;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 2;
  const ::google::protobuf::Map< ::std::string, float >&
      map() const;
  ::google::protobuf::Map< ::std::string, float >*
      mutable_map();

  // string msg = 1;
  void clear_msg();
  static const int kMsgFieldNumber = 1;
  const ::std::string& msg() const;
  void set_msg(const ::std::string& value);
  #if LANG_CXX11
  void set_msg(::std::string&& value);
  #endif
  void set_msg(const char* value);
  void set_msg(const char* value, size_t size);
  ::std::string* mutable_msg();
  ::std::string* release_msg();
  void set_allocated_msg(::std::string* msg);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.Mixed1)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      Mixed1_MapEntry_DoNotUse,
      ::std::string, float,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
      0 > map_;
  ::google::protobuf::internal::ArenaStringPtr msg_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  Mixed2(const Mixed2& from);

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

  inline Mixed2& operator=(Mixed2&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const Mixed2& default_instance();

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

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

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

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

  Mixed2* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<Mixed2>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const Mixed2& from);
  void MergeFrom(const Mixed2& 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(Mixed2* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


  typedef Mixed2_E E;
  static const E E0 =
    Mixed2_E_E0;
  static const E E1 =
    Mixed2_E_E1;
  static const E E2 =
    Mixed2_E_E2;
  static const E E3 =
    Mixed2_E_E3;
  static inline bool E_IsValid(int value) {
    return Mixed2_E_IsValid(value);
  }
  static const E E_MIN =
    Mixed2_E_E_MIN;
  static const E E_MAX =
    Mixed2_E_E_MAX;
  static const int E_ARRAYSIZE =
    Mixed2_E_E_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  E_descriptor() {
    return Mixed2_E_descriptor();
  }
  static inline const ::std::string& E_Name(E value) {
    return Mixed2_E_Name(value);
  }
  static inline bool E_Parse(const ::std::string& name,
      E* value) {
    return Mixed2_E_Parse(name, value);
  }

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

  // map<int32, bool> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< ::google::protobuf::int32, bool >&
      map() const;
  ::google::protobuf::Map< ::google::protobuf::int32, bool >*
      mutable_map();

  // .google.protobuf.testing.Mixed2.E ee = 2;
  void clear_ee();
  static const int kEeFieldNumber = 2;
  ::google::protobuf::testing::Mixed2_E ee() const;
  void set_ee(::google::protobuf::testing::Mixed2_E value);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.Mixed2)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      Mixed2_MapEntry_DoNotUse,
      ::google::protobuf::int32, bool,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      0 > map_;
  int ee_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MapOfObjects_M : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.protobuf.testing.MapOfObjects.M) */ {
 public:
  MapOfObjects_M();
  virtual ~MapOfObjects_M();

  MapOfObjects_M(const MapOfObjects_M& from);

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

  inline MapOfObjects_M& operator=(MapOfObjects_M&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOfObjects_M& default_instance();

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

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

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

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

  MapOfObjects_M* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOfObjects_M>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOfObjects_M& from);
  void MergeFrom(const MapOfObjects_M& 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(MapOfObjects_M* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string inner_text = 1;
  void clear_inner_text();
  static const int kInnerTextFieldNumber = 1;
  const ::std::string& inner_text() const;
  void set_inner_text(const ::std::string& value);
  #if LANG_CXX11
  void set_inner_text(::std::string&& value);
  #endif
  void set_inner_text(const char* value);
  void set_inner_text(const char* value, size_t size);
  ::std::string* mutable_inner_text();
  ::std::string* release_inner_text();
  void set_allocated_inner_text(::std::string* inner_text);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOfObjects.M)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr inner_text_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  MapOfObjects(const MapOfObjects& from);

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

  inline MapOfObjects& operator=(MapOfObjects&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOfObjects& default_instance();

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

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

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

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

  MapOfObjects* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOfObjects>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOfObjects& from);
  void MergeFrom(const MapOfObjects& 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(MapOfObjects* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

  typedef MapOfObjects_M M;

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

  // map<string, .google.protobuf.testing.MapOfObjects.M> map = 1;
  int map_size() const;
  void clear_map();
  static const int kMapFieldNumber = 1;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M >&
      map() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M >*
      mutable_map();

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOfObjects)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      MapOfObjects_MapEntry_DoNotUse,
      ::std::string, ::google::protobuf::testing::MapOfObjects_M,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  DummyRequest(const DummyRequest& from);

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

  inline DummyRequest& operator=(DummyRequest&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const DummyRequest& default_instance();

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

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

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

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

  DummyRequest* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<DummyRequest>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const DummyRequest& from);
  void MergeFrom(const DummyRequest& 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(DummyRequest* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.DummyRequest)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  MapIn(const MapIn& from);

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

  inline MapIn& operator=(MapIn&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapIn& default_instance();

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

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

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

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

  MapIn* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapIn>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapIn& from);
  void MergeFrom(const MapIn& 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(MapIn* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // repeated string things = 2;
  int things_size() const;
  void clear_things();
  static const int kThingsFieldNumber = 2;
  const ::std::string& things(int index) const;
  ::std::string* mutable_things(int index);
  void set_things(int index, const ::std::string& value);
  #if LANG_CXX11
  void set_things(int index, ::std::string&& value);
  #endif
  void set_things(int index, const char* value);
  void set_things(int index, const char* value, size_t size);
  ::std::string* add_things();
  void add_things(const ::std::string& value);
  #if LANG_CXX11
  void add_things(::std::string&& value);
  #endif
  void add_things(const char* value);
  void add_things(const char* value, size_t size);
  const ::google::protobuf::RepeatedPtrField< ::std::string>& things() const;
  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_things();

  // map<string, string> map_input = 3;
  int map_input_size() const;
  void clear_map_input();
  static const int kMapInputFieldNumber = 3;
  const ::google::protobuf::Map< ::std::string, ::std::string >&
      map_input() const;
  ::google::protobuf::Map< ::std::string, ::std::string >*
      mutable_map_input();

  // string other = 1;
  void clear_other();
  static const int kOtherFieldNumber = 1;
  const ::std::string& other() const;
  void set_other(const ::std::string& value);
  #if LANG_CXX11
  void set_other(::std::string&& value);
  #endif
  void set_other(const char* value);
  void set_other(const char* value, size_t size);
  ::std::string* mutable_other();
  ::std::string* release_other();
  void set_allocated_other(::std::string* other);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapIn)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::std::string> things_;
  ::google::protobuf::internal::MapField<
      MapIn_MapInputEntry_DoNotUse,
      ::std::string, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > map_input_;
  ::google::protobuf::internal::ArenaStringPtr other_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

  MapOut(const MapOut& from);

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

  inline MapOut& operator=(MapOut&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOut& default_instance();

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

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

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

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

  MapOut* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOut>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOut& from);
  void MergeFrom(const MapOut& 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(MapOut* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  // map<string, .google.protobuf.testing.MapM> map1 = 1;
  int map1_size() const;
  void clear_map1();
  static const int kMap1FieldNumber = 1;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM >&
      map1() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM >*
      mutable_map1();

  // map<string, .google.protobuf.testing.MapOut> map2 = 2;
  int map2_size() const;
  void clear_map2();
  static const int kMap2FieldNumber = 2;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut >&
      map2() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut >*
      mutable_map2();

  // map<int32, string> map3 = 3;
  int map3_size() const;
  void clear_map3();
  static const int kMap3FieldNumber = 3;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
      map3() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
      mutable_map3();

  // map<bool, string> map4 = 5;
  int map4_size() const;
  void clear_map4();
  static const int kMap4FieldNumber = 5;
  const ::google::protobuf::Map< bool, ::std::string >&
      map4() const;
  ::google::protobuf::Map< bool, ::std::string >*
      mutable_map4();

  // string bar = 4;
  void clear_bar();
  static const int kBarFieldNumber = 4;
  const ::std::string& bar() const;
  void set_bar(const ::std::string& value);
  #if LANG_CXX11
  void set_bar(::std::string&& value);
  #endif
  void set_bar(const char* value);
  void set_bar(const char* value, size_t size);
  ::std::string* mutable_bar();
  ::std::string* release_bar();
  void set_allocated_bar(::std::string* bar);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOut)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      MapOut_Map1Entry_DoNotUse,
      ::std::string, ::google::protobuf::testing::MapM,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > map1_;
  ::google::protobuf::internal::MapField<
      MapOut_Map2Entry_DoNotUse,
      ::std::string, ::google::protobuf::testing::MapOut,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > map2_;
  ::google::protobuf::internal::MapField<
      MapOut_Map3Entry_DoNotUse,
      ::google::protobuf::int32, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > map3_;
  ::google::protobuf::internal::MapField<
      MapOut_Map4Entry_DoNotUse,
      bool, ::std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      0 > map4_;
  ::google::protobuf::internal::ArenaStringPtr bar_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MapOutWireFormat_Map1Entry : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.protobuf.testing.MapOutWireFormat.Map1Entry) */ {
 public:
  MapOutWireFormat_Map1Entry();
  virtual ~MapOutWireFormat_Map1Entry();

  MapOutWireFormat_Map1Entry(const MapOutWireFormat_Map1Entry& from);

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

  inline MapOutWireFormat_Map1Entry& operator=(MapOutWireFormat_Map1Entry&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOutWireFormat_Map1Entry& default_instance();

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

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

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

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

  MapOutWireFormat_Map1Entry* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOutWireFormat_Map1Entry>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOutWireFormat_Map1Entry& from);
  void MergeFrom(const MapOutWireFormat_Map1Entry& 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(MapOutWireFormat_Map1Entry* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string key = 1;
  void clear_key();
  static const int kKeyFieldNumber = 1;
  const ::std::string& key() const;
  void set_key(const ::std::string& value);
  #if LANG_CXX11
  void set_key(::std::string&& value);
  #endif
  void set_key(const char* value);
  void set_key(const char* value, size_t size);
  ::std::string* mutable_key();
  ::std::string* release_key();
  void set_allocated_key(::std::string* key);

  // .google.protobuf.testing.MapM value = 2;
  bool has_value() const;
  void clear_value();
  static const int kValueFieldNumber = 2;
  private:
  const ::google::protobuf::testing::MapM& _internal_value() const;
  public:
  const ::google::protobuf::testing::MapM& value() const;
  ::google::protobuf::testing::MapM* release_value();
  ::google::protobuf::testing::MapM* mutable_value();
  void set_allocated_value(::google::protobuf::testing::MapM* value);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOutWireFormat.Map1Entry)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr key_;
  ::google::protobuf::testing::MapM* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MapOutWireFormat_Map2Entry : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.protobuf.testing.MapOutWireFormat.Map2Entry) */ {
 public:
  MapOutWireFormat_Map2Entry();
  virtual ~MapOutWireFormat_Map2Entry();

  MapOutWireFormat_Map2Entry(const MapOutWireFormat_Map2Entry& from);

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

  inline MapOutWireFormat_Map2Entry& operator=(MapOutWireFormat_Map2Entry&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOutWireFormat_Map2Entry& default_instance();

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

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

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

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

  MapOutWireFormat_Map2Entry* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOutWireFormat_Map2Entry>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOutWireFormat_Map2Entry& from);
  void MergeFrom(const MapOutWireFormat_Map2Entry& 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(MapOutWireFormat_Map2Entry* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string key = 1;
  void clear_key();
  static const int kKeyFieldNumber = 1;
  const ::std::string& key() const;
  void set_key(const ::std::string& value);
  #if LANG_CXX11
  void set_key(::std::string&& value);
  #endif
  void set_key(const char* value);
  void set_key(const char* value, size_t size);
  ::std::string* mutable_key();
  ::std::string* release_key();
  void set_allocated_key(::std::string* key);

  // .google.protobuf.testing.MapOut value = 2;
  bool has_value() const;
  void clear_value();
  static const int kValueFieldNumber = 2;
  private:
  const ::google::protobuf::testing::MapOut& _internal_value() const;
  public:
  const ::google::protobuf::testing::MapOut& value() const;
  ::google::protobuf::testing::MapOut* release_value();
  ::google::protobuf::testing::MapOut* mutable_value();
  void set_allocated_value(::google::protobuf::testing::MapOut* value);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOutWireFormat.Map2Entry)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr key_;
  ::google::protobuf::testing::MapOut* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MapOutWireFormat_Map3Entry : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.protobuf.testing.MapOutWireFormat.Map3Entry) */ {
 public:
  MapOutWireFormat_Map3Entry();
  virtual ~MapOutWireFormat_Map3Entry();

  MapOutWireFormat_Map3Entry(const MapOutWireFormat_Map3Entry& from);

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

  inline MapOutWireFormat_Map3Entry& operator=(MapOutWireFormat_Map3Entry&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOutWireFormat_Map3Entry& default_instance();

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

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

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

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

  MapOutWireFormat_Map3Entry* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOutWireFormat_Map3Entry>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOutWireFormat_Map3Entry& from);
  void MergeFrom(const MapOutWireFormat_Map3Entry& 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(MapOutWireFormat_Map3Entry* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string value = 2;
  void clear_value();
  static const int kValueFieldNumber = 2;
  const ::std::string& value() const;
  void set_value(const ::std::string& value);
  #if LANG_CXX11
  void set_value(::std::string&& value);
  #endif
  void set_value(const char* value);
  void set_value(const char* value, size_t size);
  ::std::string* mutable_value();
  ::std::string* release_value();
  void set_allocated_value(::std::string* value);

  // int32 key = 1;
  void clear_key();
  static const int kKeyFieldNumber = 1;
  ::google::protobuf::int32 key() const;
  void set_key(::google::protobuf::int32 value);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOutWireFormat.Map3Entry)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr value_;
  ::google::protobuf::int32 key_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MapOutWireFormat_Map4Entry : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.protobuf.testing.MapOutWireFormat.Map4Entry) */ {
 public:
  MapOutWireFormat_Map4Entry();
  virtual ~MapOutWireFormat_Map4Entry();

  MapOutWireFormat_Map4Entry(const MapOutWireFormat_Map4Entry& from);

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

  inline MapOutWireFormat_Map4Entry& operator=(MapOutWireFormat_Map4Entry&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOutWireFormat_Map4Entry& default_instance();

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

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

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

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

  MapOutWireFormat_Map4Entry* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOutWireFormat_Map4Entry>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOutWireFormat_Map4Entry& from);
  void MergeFrom(const MapOutWireFormat_Map4Entry& 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(MapOutWireFormat_Map4Entry* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string value = 2;
  void clear_value();
  static const int kValueFieldNumber = 2;
  const ::std::string& value() const;
  void set_value(const ::std::string& value);
  #if LANG_CXX11
  void set_value(::std::string&& value);
  #endif
  void set_value(const char* value);
  void set_value(const char* value, size_t size);
  ::std::string* mutable_value();
  ::std::string* release_value();
  void set_allocated_value(::std::string* value);

  // bool key = 1;
  void clear_key();
  static const int kKeyFieldNumber = 1;
  bool key() const;
  void set_key(bool value);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOutWireFormat.Map4Entry)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr value_;
  bool key_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  MapOutWireFormat(const MapOutWireFormat& from);

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

  inline MapOutWireFormat& operator=(MapOutWireFormat&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapOutWireFormat& default_instance();

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

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

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

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

  MapOutWireFormat* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapOutWireFormat>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapOutWireFormat& from);
  void MergeFrom(const MapOutWireFormat& 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(MapOutWireFormat* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

  typedef MapOutWireFormat_Map1Entry Map1Entry;
  typedef MapOutWireFormat_Map2Entry Map2Entry;
  typedef MapOutWireFormat_Map3Entry Map3Entry;
  typedef MapOutWireFormat_Map4Entry Map4Entry;

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

  // repeated .google.protobuf.testing.MapOutWireFormat.Map1Entry map1 = 1;
  int map1_size() const;
  void clear_map1();
  static const int kMap1FieldNumber = 1;
  ::google::protobuf::testing::MapOutWireFormat_Map1Entry* mutable_map1(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >*
      mutable_map1();
  const ::google::protobuf::testing::MapOutWireFormat_Map1Entry& map1(int index) const;
  ::google::protobuf::testing::MapOutWireFormat_Map1Entry* add_map1();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >&
      map1() const;

  // repeated .google.protobuf.testing.MapOutWireFormat.Map2Entry map2 = 2;
  int map2_size() const;
  void clear_map2();
  static const int kMap2FieldNumber = 2;
  ::google::protobuf::testing::MapOutWireFormat_Map2Entry* mutable_map2(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >*
      mutable_map2();
  const ::google::protobuf::testing::MapOutWireFormat_Map2Entry& map2(int index) const;
  ::google::protobuf::testing::MapOutWireFormat_Map2Entry* add_map2();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >&
      map2() const;

  // repeated .google.protobuf.testing.MapOutWireFormat.Map3Entry map3 = 3;
  int map3_size() const;
  void clear_map3();
  static const int kMap3FieldNumber = 3;
  ::google::protobuf::testing::MapOutWireFormat_Map3Entry* mutable_map3(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >*
      mutable_map3();
  const ::google::protobuf::testing::MapOutWireFormat_Map3Entry& map3(int index) const;
  ::google::protobuf::testing::MapOutWireFormat_Map3Entry* add_map3();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >&
      map3() const;

  // repeated .google.protobuf.testing.MapOutWireFormat.Map4Entry map4 = 5;
  int map4_size() const;
  void clear_map4();
  static const int kMap4FieldNumber = 5;
  ::google::protobuf::testing::MapOutWireFormat_Map4Entry* mutable_map4(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >*
      mutable_map4();
  const ::google::protobuf::testing::MapOutWireFormat_Map4Entry& map4(int index) const;
  ::google::protobuf::testing::MapOutWireFormat_Map4Entry* add_map4();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >&
      map4() const;

  // string bar = 4;
  void clear_bar();
  static const int kBarFieldNumber = 4;
  const ::std::string& bar() const;
  void set_bar(const ::std::string& value);
  #if LANG_CXX11
  void set_bar(::std::string&& value);
  #endif
  void set_bar(const char* value);
  void set_bar(const char* value, size_t size);
  ::std::string* mutable_bar();
  ::std::string* release_bar();
  void set_allocated_bar(::std::string* bar);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapOutWireFormat)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map1Entry > map1_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map2Entry > map2_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map3Entry > map3_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map4Entry > map4_;
  ::google::protobuf::internal::ArenaStringPtr bar_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  MapM(const MapM& from);

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

  inline MapM& operator=(MapM&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  static const ::google::protobuf::Descriptor* descriptor();
  static const MapM& default_instance();

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

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

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

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

  MapM* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MapM>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MapM& from);
  void MergeFrom(const MapM& 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(MapM* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  // string foo = 1;
  void clear_foo();
  static const int kFooFieldNumber = 1;
  const ::std::string& foo() const;
  void set_foo(const ::std::string& value);
  #if LANG_CXX11
  void set_foo(::std::string&& value);
  #endif
  void set_foo(const char* value);
  void set_foo(const char* value, size_t size);
  ::std::string* mutable_foo();
  ::std::string* release_foo();
  void set_allocated_foo(::std::string* foo);

  // @@protoc_insertion_point(class_scope:google.protobuf.testing.MapM)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::ArenaStringPtr foo_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::TableStruct;
};
// ===================================================================


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

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

// .google.protobuf.testing.EmptyMap empty_map = 1;
inline bool MapsTestCases::has_empty_map() const {
  return this != internal_default_instance() && empty_map_ != NULL;
}
inline void MapsTestCases::clear_empty_map() {
  if (GetArenaNoVirtual() == NULL && empty_map_ != NULL) {
    delete empty_map_;
  }
  empty_map_ = NULL;
}
inline const ::google::protobuf::testing::EmptyMap& MapsTestCases::_internal_empty_map() const {
  return *empty_map_;
}
inline const ::google::protobuf::testing::EmptyMap& MapsTestCases::empty_map() const {
  const ::google::protobuf::testing::EmptyMap* p = empty_map_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_map)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::EmptyMap*>(
      &::google::protobuf::testing::_EmptyMap_default_instance_);
}
inline ::google::protobuf::testing::EmptyMap* MapsTestCases::release_empty_map() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_map)
  
  ::google::protobuf::testing::EmptyMap* temp = empty_map_;
  empty_map_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::EmptyMap* MapsTestCases::mutable_empty_map() {
  
  if (empty_map_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::EmptyMap>(GetArenaNoVirtual());
    empty_map_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_map)
  return empty_map_;
}
inline void MapsTestCases::set_allocated_empty_map(::google::protobuf::testing::EmptyMap* empty_map) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_map_;
  }
  if (empty_map) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_map = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_map, submessage_arena);
    }
    
  } else {
    
  }
  empty_map_ = empty_map;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_map)
}

// .google.protobuf.testing.StringtoInt string_to_int = 2;
inline bool MapsTestCases::has_string_to_int() const {
  return this != internal_default_instance() && string_to_int_ != NULL;
}
inline void MapsTestCases::clear_string_to_int() {
  if (GetArenaNoVirtual() == NULL && string_to_int_ != NULL) {
    delete string_to_int_;
  }
  string_to_int_ = NULL;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::_internal_string_to_int() const {
  return *string_to_int_;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::string_to_int() const {
  const ::google::protobuf::testing::StringtoInt* p = string_to_int_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.string_to_int)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::StringtoInt*>(
      &::google::protobuf::testing::_StringtoInt_default_instance_);
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::release_string_to_int() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.string_to_int)
  
  ::google::protobuf::testing::StringtoInt* temp = string_to_int_;
  string_to_int_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::mutable_string_to_int() {
  
  if (string_to_int_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::StringtoInt>(GetArenaNoVirtual());
    string_to_int_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.string_to_int)
  return string_to_int_;
}
inline void MapsTestCases::set_allocated_string_to_int(::google::protobuf::testing::StringtoInt* string_to_int) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete string_to_int_;
  }
  if (string_to_int) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      string_to_int = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, string_to_int, submessage_arena);
    }
    
  } else {
    
  }
  string_to_int_ = string_to_int;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.string_to_int)
}

// .google.protobuf.testing.IntToString int_to_string = 3;
inline bool MapsTestCases::has_int_to_string() const {
  return this != internal_default_instance() && int_to_string_ != NULL;
}
inline void MapsTestCases::clear_int_to_string() {
  if (GetArenaNoVirtual() == NULL && int_to_string_ != NULL) {
    delete int_to_string_;
  }
  int_to_string_ = NULL;
}
inline const ::google::protobuf::testing::IntToString& MapsTestCases::_internal_int_to_string() const {
  return *int_to_string_;
}
inline const ::google::protobuf::testing::IntToString& MapsTestCases::int_to_string() const {
  const ::google::protobuf::testing::IntToString* p = int_to_string_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.int_to_string)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::IntToString*>(
      &::google::protobuf::testing::_IntToString_default_instance_);
}
inline ::google::protobuf::testing::IntToString* MapsTestCases::release_int_to_string() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.int_to_string)
  
  ::google::protobuf::testing::IntToString* temp = int_to_string_;
  int_to_string_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::IntToString* MapsTestCases::mutable_int_to_string() {
  
  if (int_to_string_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::IntToString>(GetArenaNoVirtual());
    int_to_string_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.int_to_string)
  return int_to_string_;
}
inline void MapsTestCases::set_allocated_int_to_string(::google::protobuf::testing::IntToString* int_to_string) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete int_to_string_;
  }
  if (int_to_string) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      int_to_string = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, int_to_string, submessage_arena);
    }
    
  } else {
    
  }
  int_to_string_ = int_to_string;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.int_to_string)
}

// .google.protobuf.testing.Mixed1 mixed1 = 4;
inline bool MapsTestCases::has_mixed1() const {
  return this != internal_default_instance() && mixed1_ != NULL;
}
inline void MapsTestCases::clear_mixed1() {
  if (GetArenaNoVirtual() == NULL && mixed1_ != NULL) {
    delete mixed1_;
  }
  mixed1_ = NULL;
}
inline const ::google::protobuf::testing::Mixed1& MapsTestCases::_internal_mixed1() const {
  return *mixed1_;
}
inline const ::google::protobuf::testing::Mixed1& MapsTestCases::mixed1() const {
  const ::google::protobuf::testing::Mixed1* p = mixed1_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.mixed1)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::Mixed1*>(
      &::google::protobuf::testing::_Mixed1_default_instance_);
}
inline ::google::protobuf::testing::Mixed1* MapsTestCases::release_mixed1() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.mixed1)
  
  ::google::protobuf::testing::Mixed1* temp = mixed1_;
  mixed1_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::Mixed1* MapsTestCases::mutable_mixed1() {
  
  if (mixed1_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::Mixed1>(GetArenaNoVirtual());
    mixed1_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.mixed1)
  return mixed1_;
}
inline void MapsTestCases::set_allocated_mixed1(::google::protobuf::testing::Mixed1* mixed1) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete mixed1_;
  }
  if (mixed1) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      mixed1 = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, mixed1, submessage_arena);
    }
    
  } else {
    
  }
  mixed1_ = mixed1;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.mixed1)
}

// .google.protobuf.testing.Mixed2 mixed2 = 5;
inline bool MapsTestCases::has_mixed2() const {
  return this != internal_default_instance() && mixed2_ != NULL;
}
inline void MapsTestCases::clear_mixed2() {
  if (GetArenaNoVirtual() == NULL && mixed2_ != NULL) {
    delete mixed2_;
  }
  mixed2_ = NULL;
}
inline const ::google::protobuf::testing::Mixed2& MapsTestCases::_internal_mixed2() const {
  return *mixed2_;
}
inline const ::google::protobuf::testing::Mixed2& MapsTestCases::mixed2() const {
  const ::google::protobuf::testing::Mixed2* p = mixed2_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.mixed2)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::Mixed2*>(
      &::google::protobuf::testing::_Mixed2_default_instance_);
}
inline ::google::protobuf::testing::Mixed2* MapsTestCases::release_mixed2() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.mixed2)
  
  ::google::protobuf::testing::Mixed2* temp = mixed2_;
  mixed2_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::Mixed2* MapsTestCases::mutable_mixed2() {
  
  if (mixed2_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::Mixed2>(GetArenaNoVirtual());
    mixed2_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.mixed2)
  return mixed2_;
}
inline void MapsTestCases::set_allocated_mixed2(::google::protobuf::testing::Mixed2* mixed2) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete mixed2_;
  }
  if (mixed2) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      mixed2 = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, mixed2, submessage_arena);
    }
    
  } else {
    
  }
  mixed2_ = mixed2;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.mixed2)
}

// .google.protobuf.testing.MapOfObjects map_of_objects = 6;
inline bool MapsTestCases::has_map_of_objects() const {
  return this != internal_default_instance() && map_of_objects_ != NULL;
}
inline void MapsTestCases::clear_map_of_objects() {
  if (GetArenaNoVirtual() == NULL && map_of_objects_ != NULL) {
    delete map_of_objects_;
  }
  map_of_objects_ = NULL;
}
inline const ::google::protobuf::testing::MapOfObjects& MapsTestCases::_internal_map_of_objects() const {
  return *map_of_objects_;
}
inline const ::google::protobuf::testing::MapOfObjects& MapsTestCases::map_of_objects() const {
  const ::google::protobuf::testing::MapOfObjects* p = map_of_objects_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.map_of_objects)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::MapOfObjects*>(
      &::google::protobuf::testing::_MapOfObjects_default_instance_);
}
inline ::google::protobuf::testing::MapOfObjects* MapsTestCases::release_map_of_objects() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.map_of_objects)
  
  ::google::protobuf::testing::MapOfObjects* temp = map_of_objects_;
  map_of_objects_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::MapOfObjects* MapsTestCases::mutable_map_of_objects() {
  
  if (map_of_objects_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::MapOfObjects>(GetArenaNoVirtual());
    map_of_objects_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.map_of_objects)
  return map_of_objects_;
}
inline void MapsTestCases::set_allocated_map_of_objects(::google::protobuf::testing::MapOfObjects* map_of_objects) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete map_of_objects_;
  }
  if (map_of_objects) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      map_of_objects = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, map_of_objects, submessage_arena);
    }
    
  } else {
    
  }
  map_of_objects_ = map_of_objects;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.map_of_objects)
}

// .google.protobuf.testing.StringtoInt empty_key_string_to_int1 = 7;
inline bool MapsTestCases::has_empty_key_string_to_int1() const {
  return this != internal_default_instance() && empty_key_string_to_int1_ != NULL;
}
inline void MapsTestCases::clear_empty_key_string_to_int1() {
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int1_ != NULL) {
    delete empty_key_string_to_int1_;
  }
  empty_key_string_to_int1_ = NULL;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::_internal_empty_key_string_to_int1() const {
  return *empty_key_string_to_int1_;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::empty_key_string_to_int1() const {
  const ::google::protobuf::testing::StringtoInt* p = empty_key_string_to_int1_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_string_to_int1)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::StringtoInt*>(
      &::google::protobuf::testing::_StringtoInt_default_instance_);
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::release_empty_key_string_to_int1() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_string_to_int1)
  
  ::google::protobuf::testing::StringtoInt* temp = empty_key_string_to_int1_;
  empty_key_string_to_int1_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::mutable_empty_key_string_to_int1() {
  
  if (empty_key_string_to_int1_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::StringtoInt>(GetArenaNoVirtual());
    empty_key_string_to_int1_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_string_to_int1)
  return empty_key_string_to_int1_;
}
inline void MapsTestCases::set_allocated_empty_key_string_to_int1(::google::protobuf::testing::StringtoInt* empty_key_string_to_int1) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_string_to_int1_;
  }
  if (empty_key_string_to_int1) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_string_to_int1 = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_string_to_int1, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_string_to_int1_ = empty_key_string_to_int1;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_string_to_int1)
}

// .google.protobuf.testing.StringtoInt empty_key_string_to_int2 = 8;
inline bool MapsTestCases::has_empty_key_string_to_int2() const {
  return this != internal_default_instance() && empty_key_string_to_int2_ != NULL;
}
inline void MapsTestCases::clear_empty_key_string_to_int2() {
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int2_ != NULL) {
    delete empty_key_string_to_int2_;
  }
  empty_key_string_to_int2_ = NULL;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::_internal_empty_key_string_to_int2() const {
  return *empty_key_string_to_int2_;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::empty_key_string_to_int2() const {
  const ::google::protobuf::testing::StringtoInt* p = empty_key_string_to_int2_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_string_to_int2)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::StringtoInt*>(
      &::google::protobuf::testing::_StringtoInt_default_instance_);
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::release_empty_key_string_to_int2() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_string_to_int2)
  
  ::google::protobuf::testing::StringtoInt* temp = empty_key_string_to_int2_;
  empty_key_string_to_int2_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::mutable_empty_key_string_to_int2() {
  
  if (empty_key_string_to_int2_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::StringtoInt>(GetArenaNoVirtual());
    empty_key_string_to_int2_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_string_to_int2)
  return empty_key_string_to_int2_;
}
inline void MapsTestCases::set_allocated_empty_key_string_to_int2(::google::protobuf::testing::StringtoInt* empty_key_string_to_int2) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_string_to_int2_;
  }
  if (empty_key_string_to_int2) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_string_to_int2 = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_string_to_int2, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_string_to_int2_ = empty_key_string_to_int2;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_string_to_int2)
}

// .google.protobuf.testing.StringtoInt empty_key_string_to_int3 = 9;
inline bool MapsTestCases::has_empty_key_string_to_int3() const {
  return this != internal_default_instance() && empty_key_string_to_int3_ != NULL;
}
inline void MapsTestCases::clear_empty_key_string_to_int3() {
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int3_ != NULL) {
    delete empty_key_string_to_int3_;
  }
  empty_key_string_to_int3_ = NULL;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::_internal_empty_key_string_to_int3() const {
  return *empty_key_string_to_int3_;
}
inline const ::google::protobuf::testing::StringtoInt& MapsTestCases::empty_key_string_to_int3() const {
  const ::google::protobuf::testing::StringtoInt* p = empty_key_string_to_int3_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_string_to_int3)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::StringtoInt*>(
      &::google::protobuf::testing::_StringtoInt_default_instance_);
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::release_empty_key_string_to_int3() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_string_to_int3)
  
  ::google::protobuf::testing::StringtoInt* temp = empty_key_string_to_int3_;
  empty_key_string_to_int3_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::StringtoInt* MapsTestCases::mutable_empty_key_string_to_int3() {
  
  if (empty_key_string_to_int3_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::StringtoInt>(GetArenaNoVirtual());
    empty_key_string_to_int3_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_string_to_int3)
  return empty_key_string_to_int3_;
}
inline void MapsTestCases::set_allocated_empty_key_string_to_int3(::google::protobuf::testing::StringtoInt* empty_key_string_to_int3) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_string_to_int3_;
  }
  if (empty_key_string_to_int3) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_string_to_int3 = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_string_to_int3, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_string_to_int3_ = empty_key_string_to_int3;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_string_to_int3)
}

// .google.protobuf.testing.BoolToString empty_key_bool_to_string = 10;
inline bool MapsTestCases::has_empty_key_bool_to_string() const {
  return this != internal_default_instance() && empty_key_bool_to_string_ != NULL;
}
inline void MapsTestCases::clear_empty_key_bool_to_string() {
  if (GetArenaNoVirtual() == NULL && empty_key_bool_to_string_ != NULL) {
    delete empty_key_bool_to_string_;
  }
  empty_key_bool_to_string_ = NULL;
}
inline const ::google::protobuf::testing::BoolToString& MapsTestCases::_internal_empty_key_bool_to_string() const {
  return *empty_key_bool_to_string_;
}
inline const ::google::protobuf::testing::BoolToString& MapsTestCases::empty_key_bool_to_string() const {
  const ::google::protobuf::testing::BoolToString* p = empty_key_bool_to_string_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_bool_to_string)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::BoolToString*>(
      &::google::protobuf::testing::_BoolToString_default_instance_);
}
inline ::google::protobuf::testing::BoolToString* MapsTestCases::release_empty_key_bool_to_string() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_bool_to_string)
  
  ::google::protobuf::testing::BoolToString* temp = empty_key_bool_to_string_;
  empty_key_bool_to_string_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::BoolToString* MapsTestCases::mutable_empty_key_bool_to_string() {
  
  if (empty_key_bool_to_string_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::BoolToString>(GetArenaNoVirtual());
    empty_key_bool_to_string_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_bool_to_string)
  return empty_key_bool_to_string_;
}
inline void MapsTestCases::set_allocated_empty_key_bool_to_string(::google::protobuf::testing::BoolToString* empty_key_bool_to_string) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_bool_to_string_;
  }
  if (empty_key_bool_to_string) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_bool_to_string = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_bool_to_string, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_bool_to_string_ = empty_key_bool_to_string;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_bool_to_string)
}

// .google.protobuf.testing.IntToString empty_key_int_to_string = 11;
inline bool MapsTestCases::has_empty_key_int_to_string() const {
  return this != internal_default_instance() && empty_key_int_to_string_ != NULL;
}
inline void MapsTestCases::clear_empty_key_int_to_string() {
  if (GetArenaNoVirtual() == NULL && empty_key_int_to_string_ != NULL) {
    delete empty_key_int_to_string_;
  }
  empty_key_int_to_string_ = NULL;
}
inline const ::google::protobuf::testing::IntToString& MapsTestCases::_internal_empty_key_int_to_string() const {
  return *empty_key_int_to_string_;
}
inline const ::google::protobuf::testing::IntToString& MapsTestCases::empty_key_int_to_string() const {
  const ::google::protobuf::testing::IntToString* p = empty_key_int_to_string_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_int_to_string)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::IntToString*>(
      &::google::protobuf::testing::_IntToString_default_instance_);
}
inline ::google::protobuf::testing::IntToString* MapsTestCases::release_empty_key_int_to_string() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_int_to_string)
  
  ::google::protobuf::testing::IntToString* temp = empty_key_int_to_string_;
  empty_key_int_to_string_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::IntToString* MapsTestCases::mutable_empty_key_int_to_string() {
  
  if (empty_key_int_to_string_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::IntToString>(GetArenaNoVirtual());
    empty_key_int_to_string_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_int_to_string)
  return empty_key_int_to_string_;
}
inline void MapsTestCases::set_allocated_empty_key_int_to_string(::google::protobuf::testing::IntToString* empty_key_int_to_string) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_int_to_string_;
  }
  if (empty_key_int_to_string) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_int_to_string = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_int_to_string, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_int_to_string_ = empty_key_int_to_string;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_int_to_string)
}

// .google.protobuf.testing.Mixed1 empty_key_mixed = 12;
inline bool MapsTestCases::has_empty_key_mixed() const {
  return this != internal_default_instance() && empty_key_mixed_ != NULL;
}
inline void MapsTestCases::clear_empty_key_mixed() {
  if (GetArenaNoVirtual() == NULL && empty_key_mixed_ != NULL) {
    delete empty_key_mixed_;
  }
  empty_key_mixed_ = NULL;
}
inline const ::google::protobuf::testing::Mixed1& MapsTestCases::_internal_empty_key_mixed() const {
  return *empty_key_mixed_;
}
inline const ::google::protobuf::testing::Mixed1& MapsTestCases::empty_key_mixed() const {
  const ::google::protobuf::testing::Mixed1* p = empty_key_mixed_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_mixed)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::Mixed1*>(
      &::google::protobuf::testing::_Mixed1_default_instance_);
}
inline ::google::protobuf::testing::Mixed1* MapsTestCases::release_empty_key_mixed() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_mixed)
  
  ::google::protobuf::testing::Mixed1* temp = empty_key_mixed_;
  empty_key_mixed_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::Mixed1* MapsTestCases::mutable_empty_key_mixed() {
  
  if (empty_key_mixed_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::Mixed1>(GetArenaNoVirtual());
    empty_key_mixed_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_mixed)
  return empty_key_mixed_;
}
inline void MapsTestCases::set_allocated_empty_key_mixed(::google::protobuf::testing::Mixed1* empty_key_mixed) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_mixed_;
  }
  if (empty_key_mixed) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_mixed = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_mixed, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_mixed_ = empty_key_mixed;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_mixed)
}

// .google.protobuf.testing.MapOfObjects empty_key_map_objects = 13;
inline bool MapsTestCases::has_empty_key_map_objects() const {
  return this != internal_default_instance() && empty_key_map_objects_ != NULL;
}
inline void MapsTestCases::clear_empty_key_map_objects() {
  if (GetArenaNoVirtual() == NULL && empty_key_map_objects_ != NULL) {
    delete empty_key_map_objects_;
  }
  empty_key_map_objects_ = NULL;
}
inline const ::google::protobuf::testing::MapOfObjects& MapsTestCases::_internal_empty_key_map_objects() const {
  return *empty_key_map_objects_;
}
inline const ::google::protobuf::testing::MapOfObjects& MapsTestCases::empty_key_map_objects() const {
  const ::google::protobuf::testing::MapOfObjects* p = empty_key_map_objects_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapsTestCases.empty_key_map_objects)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::MapOfObjects*>(
      &::google::protobuf::testing::_MapOfObjects_default_instance_);
}
inline ::google::protobuf::testing::MapOfObjects* MapsTestCases::release_empty_key_map_objects() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapsTestCases.empty_key_map_objects)
  
  ::google::protobuf::testing::MapOfObjects* temp = empty_key_map_objects_;
  empty_key_map_objects_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::MapOfObjects* MapsTestCases::mutable_empty_key_map_objects() {
  
  if (empty_key_map_objects_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::MapOfObjects>(GetArenaNoVirtual());
    empty_key_map_objects_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapsTestCases.empty_key_map_objects)
  return empty_key_map_objects_;
}
inline void MapsTestCases::set_allocated_empty_key_map_objects(::google::protobuf::testing::MapOfObjects* empty_key_map_objects) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete empty_key_map_objects_;
  }
  if (empty_key_map_objects) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      empty_key_map_objects = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, empty_key_map_objects, submessage_arena);
    }
    
  } else {
    
  }
  empty_key_map_objects_ = empty_key_map_objects;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapsTestCases.empty_key_map_objects)
}

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

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

// EmptyMap

// map<int32, int32> map = 1;
inline int EmptyMap::map_size() const {
  return map_.size();
}
inline void EmptyMap::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
EmptyMap::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.EmptyMap.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
EmptyMap::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.EmptyMap.map)
  return map_.MutableMap();
}

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

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

// StringtoInt

// map<string, int32> map = 1;
inline int StringtoInt::map_size() const {
  return map_.size();
}
inline void StringtoInt::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
StringtoInt::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.StringtoInt.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
StringtoInt::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.StringtoInt.map)
  return map_.MutableMap();
}

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

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

// IntToString

// map<int32, string> map = 1;
inline int IntToString::map_size() const {
  return map_.size();
}
inline void IntToString::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
IntToString::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.IntToString.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
IntToString::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.IntToString.map)
  return map_.MutableMap();
}

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

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

// BoolToString

// map<bool, string> map = 1;
inline int BoolToString::map_size() const {
  return map_.size();
}
inline void BoolToString::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< bool, ::std::string >&
BoolToString::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.BoolToString.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< bool, ::std::string >*
BoolToString::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.BoolToString.map)
  return map_.MutableMap();
}

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

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

// Mixed1

// string msg = 1;
inline void Mixed1::clear_msg() {
  msg_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& Mixed1::msg() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.Mixed1.msg)
  return msg_.GetNoArena();
}
inline void Mixed1::set_msg(const ::std::string& value) {
  
  msg_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.Mixed1.msg)
}
#if LANG_CXX11
inline void Mixed1::set_msg(::std::string&& value) {
  
  msg_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.Mixed1.msg)
}
#endif
inline void Mixed1::set_msg(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  msg_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.Mixed1.msg)
}
inline void Mixed1::set_msg(const char* value, size_t size) {
  
  msg_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.Mixed1.msg)
}
inline ::std::string* Mixed1::mutable_msg() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.Mixed1.msg)
  return msg_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* Mixed1::release_msg() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.Mixed1.msg)
  
  return msg_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Mixed1::set_allocated_msg(::std::string* msg) {
  if (msg != NULL) {
    
  } else {
    
  }
  msg_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), msg);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.Mixed1.msg)
}

// map<string, float> map = 2;
inline int Mixed1::map_size() const {
  return map_.size();
}
inline void Mixed1::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, float >&
Mixed1::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.Mixed1.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, float >*
Mixed1::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.Mixed1.map)
  return map_.MutableMap();
}

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

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

// Mixed2

// map<int32, bool> map = 1;
inline int Mixed2::map_size() const {
  return map_.size();
}
inline void Mixed2::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, bool >&
Mixed2::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.Mixed2.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, bool >*
Mixed2::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.Mixed2.map)
  return map_.MutableMap();
}

// .google.protobuf.testing.Mixed2.E ee = 2;
inline void Mixed2::clear_ee() {
  ee_ = 0;
}
inline ::google::protobuf::testing::Mixed2_E Mixed2::ee() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.Mixed2.ee)
  return static_cast< ::google::protobuf::testing::Mixed2_E >(ee_);
}
inline void Mixed2::set_ee(::google::protobuf::testing::Mixed2_E value) {
  
  ee_ = value;
  // @@protoc_insertion_point(field_set:google.protobuf.testing.Mixed2.ee)
}

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

// MapOfObjects_M

// string inner_text = 1;
inline void MapOfObjects_M::clear_inner_text() {
  inner_text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOfObjects_M::inner_text() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOfObjects.M.inner_text)
  return inner_text_.GetNoArena();
}
inline void MapOfObjects_M::set_inner_text(const ::std::string& value) {
  
  inner_text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOfObjects.M.inner_text)
}
#if LANG_CXX11
inline void MapOfObjects_M::set_inner_text(::std::string&& value) {
  
  inner_text_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOfObjects.M.inner_text)
}
#endif
inline void MapOfObjects_M::set_inner_text(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  inner_text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOfObjects.M.inner_text)
}
inline void MapOfObjects_M::set_inner_text(const char* value, size_t size) {
  
  inner_text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOfObjects.M.inner_text)
}
inline ::std::string* MapOfObjects_M::mutable_inner_text() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOfObjects.M.inner_text)
  return inner_text_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOfObjects_M::release_inner_text() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOfObjects.M.inner_text)
  
  return inner_text_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOfObjects_M::set_allocated_inner_text(::std::string* inner_text) {
  if (inner_text != NULL) {
    
  } else {
    
  }
  inner_text_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), inner_text);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOfObjects.M.inner_text)
}

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

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

// MapOfObjects

// map<string, .google.protobuf.testing.MapOfObjects.M> map = 1;
inline int MapOfObjects::map_size() const {
  return map_.size();
}
inline void MapOfObjects::clear_map() {
  map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M >&
MapOfObjects::map() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapOfObjects.map)
  return map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M >*
MapOfObjects::mutable_map() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapOfObjects.map)
  return map_.MutableMap();
}

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

// DummyRequest

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

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

// MapIn

// string other = 1;
inline void MapIn::clear_other() {
  other_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapIn::other() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapIn.other)
  return other_.GetNoArena();
}
inline void MapIn::set_other(const ::std::string& value) {
  
  other_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapIn.other)
}
#if LANG_CXX11
inline void MapIn::set_other(::std::string&& value) {
  
  other_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapIn.other)
}
#endif
inline void MapIn::set_other(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  other_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapIn.other)
}
inline void MapIn::set_other(const char* value, size_t size) {
  
  other_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapIn.other)
}
inline ::std::string* MapIn::mutable_other() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapIn.other)
  return other_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapIn::release_other() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapIn.other)
  
  return other_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapIn::set_allocated_other(::std::string* other) {
  if (other != NULL) {
    
  } else {
    
  }
  other_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), other);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapIn.other)
}

// repeated string things = 2;
inline int MapIn::things_size() const {
  return things_.size();
}
inline void MapIn::clear_things() {
  things_.Clear();
}
inline const ::std::string& MapIn::things(int index) const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapIn.things)
  return things_.Get(index);
}
inline ::std::string* MapIn::mutable_things(int index) {
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapIn.things)
  return things_.Mutable(index);
}
inline void MapIn::set_things(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapIn.things)
  things_.Mutable(index)->assign(value);
}
#if LANG_CXX11
inline void MapIn::set_things(int index, ::std::string&& value) {
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapIn.things)
  things_.Mutable(index)->assign(std::move(value));
}
#endif
inline void MapIn::set_things(int index, const char* value) {
  GOOGLE_DCHECK(value != NULL);
  things_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapIn.things)
}
inline void MapIn::set_things(int index, const char* value, size_t size) {
  things_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapIn.things)
}
inline ::std::string* MapIn::add_things() {
  // @@protoc_insertion_point(field_add_mutable:google.protobuf.testing.MapIn.things)
  return things_.Add();
}
inline void MapIn::add_things(const ::std::string& value) {
  things_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapIn.things)
}
#if LANG_CXX11
inline void MapIn::add_things(::std::string&& value) {
  things_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapIn.things)
}
#endif
inline void MapIn::add_things(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  things_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:google.protobuf.testing.MapIn.things)
}
inline void MapIn::add_things(const char* value, size_t size) {
  things_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:google.protobuf.testing.MapIn.things)
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
MapIn::things() const {
  // @@protoc_insertion_point(field_list:google.protobuf.testing.MapIn.things)
  return things_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
MapIn::mutable_things() {
  // @@protoc_insertion_point(field_mutable_list:google.protobuf.testing.MapIn.things)
  return &things_;
}

// map<string, string> map_input = 3;
inline int MapIn::map_input_size() const {
  return map_input_.size();
}
inline void MapIn::clear_map_input() {
  map_input_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::std::string >&
MapIn::map_input() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapIn.map_input)
  return map_input_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::std::string >*
MapIn::mutable_map_input() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapIn.map_input)
  return map_input_.MutableMap();
}

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

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

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

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

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

// MapOut

// map<string, .google.protobuf.testing.MapM> map1 = 1;
inline int MapOut::map1_size() const {
  return map1_.size();
}
inline void MapOut::clear_map1() {
  map1_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM >&
MapOut::map1() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapOut.map1)
  return map1_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM >*
MapOut::mutable_map1() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapOut.map1)
  return map1_.MutableMap();
}

// map<string, .google.protobuf.testing.MapOut> map2 = 2;
inline int MapOut::map2_size() const {
  return map2_.size();
}
inline void MapOut::clear_map2() {
  map2_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut >&
MapOut::map2() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapOut.map2)
  return map2_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut >*
MapOut::mutable_map2() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapOut.map2)
  return map2_.MutableMap();
}

// map<int32, string> map3 = 3;
inline int MapOut::map3_size() const {
  return map3_.size();
}
inline void MapOut::clear_map3() {
  map3_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >&
MapOut::map3() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapOut.map3)
  return map3_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >*
MapOut::mutable_map3() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapOut.map3)
  return map3_.MutableMap();
}

// map<bool, string> map4 = 5;
inline int MapOut::map4_size() const {
  return map4_.size();
}
inline void MapOut::clear_map4() {
  map4_.Clear();
}
inline const ::google::protobuf::Map< bool, ::std::string >&
MapOut::map4() const {
  // @@protoc_insertion_point(field_map:google.protobuf.testing.MapOut.map4)
  return map4_.GetMap();
}
inline ::google::protobuf::Map< bool, ::std::string >*
MapOut::mutable_map4() {
  // @@protoc_insertion_point(field_mutable_map:google.protobuf.testing.MapOut.map4)
  return map4_.MutableMap();
}

// string bar = 4;
inline void MapOut::clear_bar() {
  bar_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOut::bar() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOut.bar)
  return bar_.GetNoArena();
}
inline void MapOut::set_bar(const ::std::string& value) {
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOut.bar)
}
#if LANG_CXX11
inline void MapOut::set_bar(::std::string&& value) {
  
  bar_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOut.bar)
}
#endif
inline void MapOut::set_bar(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOut.bar)
}
inline void MapOut::set_bar(const char* value, size_t size) {
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOut.bar)
}
inline ::std::string* MapOut::mutable_bar() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOut.bar)
  return bar_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOut::release_bar() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOut.bar)
  
  return bar_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOut::set_allocated_bar(::std::string* bar) {
  if (bar != NULL) {
    
  } else {
    
  }
  bar_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), bar);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOut.bar)
}

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

// MapOutWireFormat_Map1Entry

// string key = 1;
inline void MapOutWireFormat_Map1Entry::clear_key() {
  key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOutWireFormat_Map1Entry::key() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
  return key_.GetNoArena();
}
inline void MapOutWireFormat_Map1Entry::set_key(const ::std::string& value) {
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
}
#if LANG_CXX11
inline void MapOutWireFormat_Map1Entry::set_key(::std::string&& value) {
  
  key_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
}
#endif
inline void MapOutWireFormat_Map1Entry::set_key(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
}
inline void MapOutWireFormat_Map1Entry::set_key(const char* value, size_t size) {
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
}
inline ::std::string* MapOutWireFormat_Map1Entry::mutable_key() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
  return key_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOutWireFormat_Map1Entry::release_key() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
  
  return key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOutWireFormat_Map1Entry::set_allocated_key(::std::string* key) {
  if (key != NULL) {
    
  } else {
    
  }
  key_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), key);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map1Entry.key)
}

// .google.protobuf.testing.MapM value = 2;
inline bool MapOutWireFormat_Map1Entry::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline void MapOutWireFormat_Map1Entry::clear_value() {
  if (GetArenaNoVirtual() == NULL && value_ != NULL) {
    delete value_;
  }
  value_ = NULL;
}
inline const ::google::protobuf::testing::MapM& MapOutWireFormat_Map1Entry::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::testing::MapM& MapOutWireFormat_Map1Entry::value() const {
  const ::google::protobuf::testing::MapM* p = value_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map1Entry.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::MapM*>(
      &::google::protobuf::testing::_MapM_default_instance_);
}
inline ::google::protobuf::testing::MapM* MapOutWireFormat_Map1Entry::release_value() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map1Entry.value)
  
  ::google::protobuf::testing::MapM* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::MapM* MapOutWireFormat_Map1Entry::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::MapM>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map1Entry.value)
  return value_;
}
inline void MapOutWireFormat_Map1Entry::set_allocated_value(::google::protobuf::testing::MapM* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete value_;
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map1Entry.value)
}

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

// MapOutWireFormat_Map2Entry

// string key = 1;
inline void MapOutWireFormat_Map2Entry::clear_key() {
  key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOutWireFormat_Map2Entry::key() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
  return key_.GetNoArena();
}
inline void MapOutWireFormat_Map2Entry::set_key(const ::std::string& value) {
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
}
#if LANG_CXX11
inline void MapOutWireFormat_Map2Entry::set_key(::std::string&& value) {
  
  key_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
}
#endif
inline void MapOutWireFormat_Map2Entry::set_key(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
}
inline void MapOutWireFormat_Map2Entry::set_key(const char* value, size_t size) {
  
  key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
}
inline ::std::string* MapOutWireFormat_Map2Entry::mutable_key() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
  return key_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOutWireFormat_Map2Entry::release_key() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
  
  return key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOutWireFormat_Map2Entry::set_allocated_key(::std::string* key) {
  if (key != NULL) {
    
  } else {
    
  }
  key_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), key);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map2Entry.key)
}

// .google.protobuf.testing.MapOut value = 2;
inline bool MapOutWireFormat_Map2Entry::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline void MapOutWireFormat_Map2Entry::clear_value() {
  if (GetArenaNoVirtual() == NULL && value_ != NULL) {
    delete value_;
  }
  value_ = NULL;
}
inline const ::google::protobuf::testing::MapOut& MapOutWireFormat_Map2Entry::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::testing::MapOut& MapOutWireFormat_Map2Entry::value() const {
  const ::google::protobuf::testing::MapOut* p = value_;
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map2Entry.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::testing::MapOut*>(
      &::google::protobuf::testing::_MapOut_default_instance_);
}
inline ::google::protobuf::testing::MapOut* MapOutWireFormat_Map2Entry::release_value() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map2Entry.value)
  
  ::google::protobuf::testing::MapOut* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::testing::MapOut* MapOutWireFormat_Map2Entry::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::testing::MapOut>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map2Entry.value)
  return value_;
}
inline void MapOutWireFormat_Map2Entry::set_allocated_value(::google::protobuf::testing::MapOut* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete value_;
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map2Entry.value)
}

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

// MapOutWireFormat_Map3Entry

// int32 key = 1;
inline void MapOutWireFormat_Map3Entry::clear_key() {
  key_ = 0;
}
inline ::google::protobuf::int32 MapOutWireFormat_Map3Entry::key() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map3Entry.key)
  return key_;
}
inline void MapOutWireFormat_Map3Entry::set_key(::google::protobuf::int32 value) {
  
  key_ = value;
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map3Entry.key)
}

// string value = 2;
inline void MapOutWireFormat_Map3Entry::clear_value() {
  value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOutWireFormat_Map3Entry::value() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
  return value_.GetNoArena();
}
inline void MapOutWireFormat_Map3Entry::set_value(const ::std::string& value) {
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
}
#if LANG_CXX11
inline void MapOutWireFormat_Map3Entry::set_value(::std::string&& value) {
  
  value_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
}
#endif
inline void MapOutWireFormat_Map3Entry::set_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
}
inline void MapOutWireFormat_Map3Entry::set_value(const char* value, size_t size) {
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
}
inline ::std::string* MapOutWireFormat_Map3Entry::mutable_value() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
  return value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOutWireFormat_Map3Entry::release_value() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
  
  return value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOutWireFormat_Map3Entry::set_allocated_value(::std::string* value) {
  if (value != NULL) {
    
  } else {
    
  }
  value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map3Entry.value)
}

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

// MapOutWireFormat_Map4Entry

// bool key = 1;
inline void MapOutWireFormat_Map4Entry::clear_key() {
  key_ = false;
}
inline bool MapOutWireFormat_Map4Entry::key() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map4Entry.key)
  return key_;
}
inline void MapOutWireFormat_Map4Entry::set_key(bool value) {
  
  key_ = value;
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map4Entry.key)
}

// string value = 2;
inline void MapOutWireFormat_Map4Entry::clear_value() {
  value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOutWireFormat_Map4Entry::value() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
  return value_.GetNoArena();
}
inline void MapOutWireFormat_Map4Entry::set_value(const ::std::string& value) {
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
}
#if LANG_CXX11
inline void MapOutWireFormat_Map4Entry::set_value(::std::string&& value) {
  
  value_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
}
#endif
inline void MapOutWireFormat_Map4Entry::set_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
}
inline void MapOutWireFormat_Map4Entry::set_value(const char* value, size_t size) {
  
  value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
}
inline ::std::string* MapOutWireFormat_Map4Entry::mutable_value() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
  return value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOutWireFormat_Map4Entry::release_value() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
  
  return value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOutWireFormat_Map4Entry::set_allocated_value(::std::string* value) {
  if (value != NULL) {
    
  } else {
    
  }
  value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.Map4Entry.value)
}

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

// MapOutWireFormat

// repeated .google.protobuf.testing.MapOutWireFormat.Map1Entry map1 = 1;
inline int MapOutWireFormat::map1_size() const {
  return map1_.size();
}
inline void MapOutWireFormat::clear_map1() {
  map1_.Clear();
}
inline ::google::protobuf::testing::MapOutWireFormat_Map1Entry* MapOutWireFormat::mutable_map1(int index) {
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.map1)
  return map1_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >*
MapOutWireFormat::mutable_map1() {
  // @@protoc_insertion_point(field_mutable_list:google.protobuf.testing.MapOutWireFormat.map1)
  return &map1_;
}
inline const ::google::protobuf::testing::MapOutWireFormat_Map1Entry& MapOutWireFormat::map1(int index) const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.map1)
  return map1_.Get(index);
}
inline ::google::protobuf::testing::MapOutWireFormat_Map1Entry* MapOutWireFormat::add_map1() {
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapOutWireFormat.map1)
  return map1_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >&
MapOutWireFormat::map1() const {
  // @@protoc_insertion_point(field_list:google.protobuf.testing.MapOutWireFormat.map1)
  return map1_;
}

// repeated .google.protobuf.testing.MapOutWireFormat.Map2Entry map2 = 2;
inline int MapOutWireFormat::map2_size() const {
  return map2_.size();
}
inline void MapOutWireFormat::clear_map2() {
  map2_.Clear();
}
inline ::google::protobuf::testing::MapOutWireFormat_Map2Entry* MapOutWireFormat::mutable_map2(int index) {
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.map2)
  return map2_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >*
MapOutWireFormat::mutable_map2() {
  // @@protoc_insertion_point(field_mutable_list:google.protobuf.testing.MapOutWireFormat.map2)
  return &map2_;
}
inline const ::google::protobuf::testing::MapOutWireFormat_Map2Entry& MapOutWireFormat::map2(int index) const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.map2)
  return map2_.Get(index);
}
inline ::google::protobuf::testing::MapOutWireFormat_Map2Entry* MapOutWireFormat::add_map2() {
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapOutWireFormat.map2)
  return map2_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >&
MapOutWireFormat::map2() const {
  // @@protoc_insertion_point(field_list:google.protobuf.testing.MapOutWireFormat.map2)
  return map2_;
}

// repeated .google.protobuf.testing.MapOutWireFormat.Map3Entry map3 = 3;
inline int MapOutWireFormat::map3_size() const {
  return map3_.size();
}
inline void MapOutWireFormat::clear_map3() {
  map3_.Clear();
}
inline ::google::protobuf::testing::MapOutWireFormat_Map3Entry* MapOutWireFormat::mutable_map3(int index) {
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.map3)
  return map3_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >*
MapOutWireFormat::mutable_map3() {
  // @@protoc_insertion_point(field_mutable_list:google.protobuf.testing.MapOutWireFormat.map3)
  return &map3_;
}
inline const ::google::protobuf::testing::MapOutWireFormat_Map3Entry& MapOutWireFormat::map3(int index) const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.map3)
  return map3_.Get(index);
}
inline ::google::protobuf::testing::MapOutWireFormat_Map3Entry* MapOutWireFormat::add_map3() {
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapOutWireFormat.map3)
  return map3_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >&
MapOutWireFormat::map3() const {
  // @@protoc_insertion_point(field_list:google.protobuf.testing.MapOutWireFormat.map3)
  return map3_;
}

// repeated .google.protobuf.testing.MapOutWireFormat.Map4Entry map4 = 5;
inline int MapOutWireFormat::map4_size() const {
  return map4_.size();
}
inline void MapOutWireFormat::clear_map4() {
  map4_.Clear();
}
inline ::google::protobuf::testing::MapOutWireFormat_Map4Entry* MapOutWireFormat::mutable_map4(int index) {
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.map4)
  return map4_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >*
MapOutWireFormat::mutable_map4() {
  // @@protoc_insertion_point(field_mutable_list:google.protobuf.testing.MapOutWireFormat.map4)
  return &map4_;
}
inline const ::google::protobuf::testing::MapOutWireFormat_Map4Entry& MapOutWireFormat::map4(int index) const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.map4)
  return map4_.Get(index);
}
inline ::google::protobuf::testing::MapOutWireFormat_Map4Entry* MapOutWireFormat::add_map4() {
  // @@protoc_insertion_point(field_add:google.protobuf.testing.MapOutWireFormat.map4)
  return map4_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >&
MapOutWireFormat::map4() const {
  // @@protoc_insertion_point(field_list:google.protobuf.testing.MapOutWireFormat.map4)
  return map4_;
}

// string bar = 4;
inline void MapOutWireFormat::clear_bar() {
  bar_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapOutWireFormat::bar() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapOutWireFormat.bar)
  return bar_.GetNoArena();
}
inline void MapOutWireFormat::set_bar(const ::std::string& value) {
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapOutWireFormat.bar)
}
#if LANG_CXX11
inline void MapOutWireFormat::set_bar(::std::string&& value) {
  
  bar_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapOutWireFormat.bar)
}
#endif
inline void MapOutWireFormat::set_bar(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapOutWireFormat.bar)
}
inline void MapOutWireFormat::set_bar(const char* value, size_t size) {
  
  bar_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapOutWireFormat.bar)
}
inline ::std::string* MapOutWireFormat::mutable_bar() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapOutWireFormat.bar)
  return bar_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapOutWireFormat::release_bar() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapOutWireFormat.bar)
  
  return bar_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapOutWireFormat::set_allocated_bar(::std::string* bar) {
  if (bar != NULL) {
    
  } else {
    
  }
  bar_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), bar);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapOutWireFormat.bar)
}

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

// MapM

// string foo = 1;
inline void MapM::clear_foo() {
  foo_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& MapM::foo() const {
  // @@protoc_insertion_point(field_get:google.protobuf.testing.MapM.foo)
  return foo_.GetNoArena();
}
inline void MapM::set_foo(const ::std::string& value) {
  
  foo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:google.protobuf.testing.MapM.foo)
}
#if LANG_CXX11
inline void MapM::set_foo(::std::string&& value) {
  
  foo_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.protobuf.testing.MapM.foo)
}
#endif
inline void MapM::set_foo(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  foo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.protobuf.testing.MapM.foo)
}
inline void MapM::set_foo(const char* value, size_t size) {
  
  foo_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.protobuf.testing.MapM.foo)
}
inline ::std::string* MapM::mutable_foo() {
  
  // @@protoc_insertion_point(field_mutable:google.protobuf.testing.MapM.foo)
  return foo_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MapM::release_foo() {
  // @@protoc_insertion_point(field_release:google.protobuf.testing.MapM.foo)
  
  return foo_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MapM::set_allocated_foo(::std::string* foo) {
  if (foo != NULL) {
    
  } else {
    
  }
  foo_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), foo);
  // @@protoc_insertion_point(field_set_allocated:google.protobuf.testing.MapM.foo)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace testing
}  // namespace protobuf
}  // namespace google

namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::google::protobuf::testing::Mixed2_E> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::protobuf::testing::Mixed2_E>() {
  return ::google::protobuf::testing::Mixed2_E_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto
