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

#include <google/protobuf/util/internal/testdata/maps.pb.h>

#include <algorithm>

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

namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_BoolToString_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_EmptyMap_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_IntToString_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapIn_MapInputEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapM;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapOfObjects_M;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapOutWireFormat_Map3Entry;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapOutWireFormat_Map4Entry;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapOut_Map3Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_MapOut_Map4Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Mixed1_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Mixed2_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_StringtoInt_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_BoolToString;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_EmptyMap;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_IntToString;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapOfObjects;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapOfObjects_MapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapOutWireFormat_Map1Entry;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapOutWireFormat_Map2Entry;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_MapOut_Map1Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Mixed1;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Mixed2;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_StringtoInt;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_MapOut;
}  // namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto
namespace google {
namespace protobuf {
namespace testing {
class MapsTestCasesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapsTestCases>
      _instance;
} _MapsTestCases_default_instance_;
class EmptyMap_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<EmptyMap_MapEntry_DoNotUse>
      _instance;
} _EmptyMap_MapEntry_DoNotUse_default_instance_;
class EmptyMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<EmptyMap>
      _instance;
} _EmptyMap_default_instance_;
class StringtoInt_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<StringtoInt_MapEntry_DoNotUse>
      _instance;
} _StringtoInt_MapEntry_DoNotUse_default_instance_;
class StringtoIntDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<StringtoInt>
      _instance;
} _StringtoInt_default_instance_;
class IntToString_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<IntToString_MapEntry_DoNotUse>
      _instance;
} _IntToString_MapEntry_DoNotUse_default_instance_;
class IntToStringDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<IntToString>
      _instance;
} _IntToString_default_instance_;
class BoolToString_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<BoolToString_MapEntry_DoNotUse>
      _instance;
} _BoolToString_MapEntry_DoNotUse_default_instance_;
class BoolToStringDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<BoolToString>
      _instance;
} _BoolToString_default_instance_;
class Mixed1_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Mixed1_MapEntry_DoNotUse>
      _instance;
} _Mixed1_MapEntry_DoNotUse_default_instance_;
class Mixed1DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Mixed1>
      _instance;
} _Mixed1_default_instance_;
class Mixed2_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Mixed2_MapEntry_DoNotUse>
      _instance;
} _Mixed2_MapEntry_DoNotUse_default_instance_;
class Mixed2DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Mixed2>
      _instance;
} _Mixed2_default_instance_;
class MapOfObjects_MDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOfObjects_M>
      _instance;
} _MapOfObjects_M_default_instance_;
class MapOfObjects_MapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOfObjects_MapEntry_DoNotUse>
      _instance;
} _MapOfObjects_MapEntry_DoNotUse_default_instance_;
class MapOfObjectsDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOfObjects>
      _instance;
} _MapOfObjects_default_instance_;
class DummyRequestDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<DummyRequest>
      _instance;
} _DummyRequest_default_instance_;
class MapIn_MapInputEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapIn_MapInputEntry_DoNotUse>
      _instance;
} _MapIn_MapInputEntry_DoNotUse_default_instance_;
class MapInDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapIn>
      _instance;
} _MapIn_default_instance_;
class MapOut_Map1Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOut_Map1Entry_DoNotUse>
      _instance;
} _MapOut_Map1Entry_DoNotUse_default_instance_;
class MapOut_Map2Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOut_Map2Entry_DoNotUse>
      _instance;
} _MapOut_Map2Entry_DoNotUse_default_instance_;
class MapOut_Map3Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOut_Map3Entry_DoNotUse>
      _instance;
} _MapOut_Map3Entry_DoNotUse_default_instance_;
class MapOut_Map4Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOut_Map4Entry_DoNotUse>
      _instance;
} _MapOut_Map4Entry_DoNotUse_default_instance_;
class MapOutDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOut>
      _instance;
} _MapOut_default_instance_;
class MapOutWireFormat_Map1EntryDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOutWireFormat_Map1Entry>
      _instance;
} _MapOutWireFormat_Map1Entry_default_instance_;
class MapOutWireFormat_Map2EntryDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOutWireFormat_Map2Entry>
      _instance;
} _MapOutWireFormat_Map2Entry_default_instance_;
class MapOutWireFormat_Map3EntryDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOutWireFormat_Map3Entry>
      _instance;
} _MapOutWireFormat_Map3Entry_default_instance_;
class MapOutWireFormat_Map4EntryDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOutWireFormat_Map4Entry>
      _instance;
} _MapOutWireFormat_Map4Entry_default_instance_;
class MapOutWireFormatDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapOutWireFormat>
      _instance;
} _MapOutWireFormat_default_instance_;
class MapMDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<MapM>
      _instance;
} _MapM_default_instance_;
}  // namespace testing
}  // namespace protobuf
}  // namespace google
namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto {
static void InitDefaultsMapsTestCases() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapsTestCases_default_instance_;
    new (ptr) ::google::protobuf::testing::MapsTestCases();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapsTestCases::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<7> scc_info_MapsTestCases =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 7, InitDefaultsMapsTestCases}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_EmptyMap.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_StringtoInt.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_IntToString.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed1.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed2.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_BoolToString.base,}};

static void InitDefaultsEmptyMap_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_EmptyMap_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsEmptyMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_EmptyMap_default_instance_;
    new (ptr) ::google::protobuf::testing::EmptyMap();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::EmptyMap::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_EmptyMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsEmptyMap}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_EmptyMap_MapEntry_DoNotUse.base,}};

static void InitDefaultsStringtoInt_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_StringtoInt_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsStringtoInt() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_StringtoInt_default_instance_;
    new (ptr) ::google::protobuf::testing::StringtoInt();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::StringtoInt::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_StringtoInt =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsStringtoInt}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_StringtoInt_MapEntry_DoNotUse.base,}};

static void InitDefaultsIntToString_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_IntToString_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::IntToString_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::IntToString_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsIntToString() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_IntToString_default_instance_;
    new (ptr) ::google::protobuf::testing::IntToString();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::IntToString::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_IntToString =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsIntToString}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_IntToString_MapEntry_DoNotUse.base,}};

static void InitDefaultsBoolToString_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_BoolToString_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsBoolToString() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_BoolToString_default_instance_;
    new (ptr) ::google::protobuf::testing::BoolToString();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::BoolToString::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_BoolToString =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsBoolToString}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_BoolToString_MapEntry_DoNotUse.base,}};

static void InitDefaultsMixed1_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_Mixed1_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsMixed1() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_Mixed1_default_instance_;
    new (ptr) ::google::protobuf::testing::Mixed1();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::Mixed1::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_Mixed1 =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMixed1}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed1_MapEntry_DoNotUse.base,}};

static void InitDefaultsMixed2_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_Mixed2_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsMixed2() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_Mixed2_default_instance_;
    new (ptr) ::google::protobuf::testing::Mixed2();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::Mixed2::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_Mixed2 =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMixed2}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed2_MapEntry_DoNotUse.base,}};

static void InitDefaultsMapOfObjects_M() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOfObjects_M_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOfObjects_M();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOfObjects_M::InitAsDefaultInstance();
}

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

static void InitDefaultsMapOfObjects_MapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOfObjects_MapEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse();
  }
  ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapOfObjects_MapEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapOfObjects_MapEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects_M.base,}};

static void InitDefaultsMapOfObjects() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOfObjects_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOfObjects();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOfObjects::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapOfObjects =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapOfObjects}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects_MapEntry_DoNotUse.base,}};

static void InitDefaultsDummyRequest() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_DummyRequest_default_instance_;
    new (ptr) ::google::protobuf::testing::DummyRequest();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::DummyRequest::InitAsDefaultInstance();
}

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

static void InitDefaultsMapIn_MapInputEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapIn_MapInputEntry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse();
  }
  ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsMapIn() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapIn_default_instance_;
    new (ptr) ::google::protobuf::testing::MapIn();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapIn::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapIn =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapIn}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapIn_MapInputEntry_DoNotUse.base,}};

static void InitDefaultsMapOut_Map1Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOut_Map1Entry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse();
  }
  ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapOut_Map1Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapOut_Map1Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapM.base,}};

static void InitDefaultsMapOut_Map3Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOut_Map3Entry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse();
  }
  ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsMapOut_Map4Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOut_Map4Entry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse();
  }
  ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsMapOut() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOut_Map2Entry_DoNotUse_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse();
  }
  {
    void* ptr = &::google::protobuf::testing::_MapOut_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOut();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse::InitAsDefaultInstance();
  ::google::protobuf::testing::MapOut::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<3> scc_info_MapOut =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsMapOut}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut_Map1Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut_Map3Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut_Map4Entry_DoNotUse.base,}};

static void InitDefaultsMapOutWireFormat_Map1Entry() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOutWireFormat_Map1Entry_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOutWireFormat_Map1Entry();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOutWireFormat_Map1Entry::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapOutWireFormat_Map1Entry =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapOutWireFormat_Map1Entry}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapM.base,}};

static void InitDefaultsMapOutWireFormat_Map2Entry() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOutWireFormat_Map2Entry_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOutWireFormat_Map2Entry();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOutWireFormat_Map2Entry::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_MapOutWireFormat_Map2Entry =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsMapOutWireFormat_Map2Entry}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut.base,}};

static void InitDefaultsMapOutWireFormat_Map3Entry() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOutWireFormat_Map3Entry_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOutWireFormat_Map3Entry();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOutWireFormat_Map3Entry::InitAsDefaultInstance();
}

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

static void InitDefaultsMapOutWireFormat_Map4Entry() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOutWireFormat_Map4Entry_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOutWireFormat_Map4Entry();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOutWireFormat_Map4Entry::InitAsDefaultInstance();
}

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

static void InitDefaultsMapOutWireFormat() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapOutWireFormat_default_instance_;
    new (ptr) ::google::protobuf::testing::MapOutWireFormat();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapOutWireFormat::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<4> scc_info_MapOutWireFormat =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsMapOutWireFormat}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map1Entry.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map2Entry.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map3Entry.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map4Entry.base,}};

static void InitDefaultsMapM() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_MapM_default_instance_;
    new (ptr) ::google::protobuf::testing::MapM();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::MapM::InitAsDefaultInstance();
}

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

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_MapsTestCases.base);
  ::google::protobuf::internal::InitSCC(&scc_info_EmptyMap_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_EmptyMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_StringtoInt_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_StringtoInt.base);
  ::google::protobuf::internal::InitSCC(&scc_info_IntToString_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_IntToString.base);
  ::google::protobuf::internal::InitSCC(&scc_info_BoolToString_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_BoolToString.base);
  ::google::protobuf::internal::InitSCC(&scc_info_Mixed1_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_Mixed1.base);
  ::google::protobuf::internal::InitSCC(&scc_info_Mixed2_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_Mixed2.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOfObjects_M.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOfObjects_MapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOfObjects.base);
  ::google::protobuf::internal::InitSCC(&scc_info_DummyRequest.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapIn_MapInputEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapIn.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOut_Map1Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOut_Map3Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOut_Map4Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOut.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOutWireFormat_Map1Entry.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOutWireFormat_Map2Entry.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOutWireFormat_Map3Entry.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOutWireFormat_Map4Entry.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapOutWireFormat.base);
  ::google::protobuf::internal::InitSCC(&scc_info_MapM.base);
}

::google::protobuf::Metadata file_level_metadata[30];
const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[1];

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, string_to_int_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, int_to_string_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, mixed1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, mixed2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, map_of_objects_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_string_to_int1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_string_to_int2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_string_to_int3_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_bool_to_string_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_int_to_string_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_mixed_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapsTestCases, empty_key_map_objects_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::EmptyMap, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::StringtoInt, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::IntToString, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::BoolToString, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1, msg_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed1, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2, map_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::Mixed2, ee_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_M, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_M, inner_text_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOfObjects, map_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::DummyRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn, other_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn, things_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapIn, map_input_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map1Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map1Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map1Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map1Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map2Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map2Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map2Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map2Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map3Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map3Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map3Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map3Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map4Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map4Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map4Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut_Map4Entry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, map1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, map2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, map3_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, map4_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOut, bar_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map1Entry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map1Entry, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map1Entry, value_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map2Entry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map2Entry, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map2Entry, value_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map3Entry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map3Entry, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map3Entry, value_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map4Entry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map4Entry, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat_Map4Entry, value_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, map1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, map2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, map3_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, map4_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapOutWireFormat, bar_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapM, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::MapM, foo_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::google::protobuf::testing::MapsTestCases)},
  { 18, 25, sizeof(::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse)},
  { 27, -1, sizeof(::google::protobuf::testing::EmptyMap)},
  { 33, 40, sizeof(::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse)},
  { 42, -1, sizeof(::google::protobuf::testing::StringtoInt)},
  { 48, 55, sizeof(::google::protobuf::testing::IntToString_MapEntry_DoNotUse)},
  { 57, -1, sizeof(::google::protobuf::testing::IntToString)},
  { 63, 70, sizeof(::google::protobuf::testing::BoolToString_MapEntry_DoNotUse)},
  { 72, -1, sizeof(::google::protobuf::testing::BoolToString)},
  { 78, 85, sizeof(::google::protobuf::testing::Mixed1_MapEntry_DoNotUse)},
  { 87, -1, sizeof(::google::protobuf::testing::Mixed1)},
  { 94, 101, sizeof(::google::protobuf::testing::Mixed2_MapEntry_DoNotUse)},
  { 103, -1, sizeof(::google::protobuf::testing::Mixed2)},
  { 110, -1, sizeof(::google::protobuf::testing::MapOfObjects_M)},
  { 116, 123, sizeof(::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse)},
  { 125, -1, sizeof(::google::protobuf::testing::MapOfObjects)},
  { 131, -1, sizeof(::google::protobuf::testing::DummyRequest)},
  { 136, 143, sizeof(::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse)},
  { 145, -1, sizeof(::google::protobuf::testing::MapIn)},
  { 153, 160, sizeof(::google::protobuf::testing::MapOut_Map1Entry_DoNotUse)},
  { 162, 169, sizeof(::google::protobuf::testing::MapOut_Map2Entry_DoNotUse)},
  { 171, 178, sizeof(::google::protobuf::testing::MapOut_Map3Entry_DoNotUse)},
  { 180, 187, sizeof(::google::protobuf::testing::MapOut_Map4Entry_DoNotUse)},
  { 189, -1, sizeof(::google::protobuf::testing::MapOut)},
  { 199, -1, sizeof(::google::protobuf::testing::MapOutWireFormat_Map1Entry)},
  { 206, -1, sizeof(::google::protobuf::testing::MapOutWireFormat_Map2Entry)},
  { 213, -1, sizeof(::google::protobuf::testing::MapOutWireFormat_Map3Entry)},
  { 220, -1, sizeof(::google::protobuf::testing::MapOutWireFormat_Map4Entry)},
  { 227, -1, sizeof(::google::protobuf::testing::MapOutWireFormat)},
  { 237, -1, sizeof(::google::protobuf::testing::MapM)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapsTestCases_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_EmptyMap_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_EmptyMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_StringtoInt_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_StringtoInt_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_IntToString_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_IntToString_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_BoolToString_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_BoolToString_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_Mixed1_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_Mixed1_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_Mixed2_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_Mixed2_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOfObjects_M_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOfObjects_MapEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOfObjects_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_DummyRequest_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapIn_MapInputEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapIn_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOut_Map1Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOut_Map2Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOut_Map3Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOut_Map4Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOut_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOutWireFormat_Map1Entry_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOutWireFormat_Map2Entry_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOutWireFormat_Map3Entry_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOutWireFormat_Map4Entry_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapOutWireFormat_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_MapM_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  AssignDescriptors(
      "google/protobuf/util/internal/testdata/maps.proto", schemas, file_default_instances, TableStruct::offsets,
      file_level_metadata, file_level_enum_descriptors, NULL);
}

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

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

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n1google/protobuf/util/internal/testdata"
      "/maps.proto\022\027google.protobuf.testing\"\310\006\n"
      "\rMapsTestCases\0224\n\tempty_map\030\001 \001(\0132!.goog"
      "le.protobuf.testing.EmptyMap\022;\n\rstring_t"
      "o_int\030\002 \001(\0132$.google.protobuf.testing.St"
      "ringtoInt\022;\n\rint_to_string\030\003 \001(\0132$.googl"
      "e.protobuf.testing.IntToString\022/\n\006mixed1"
      "\030\004 \001(\0132\037.google.protobuf.testing.Mixed1\022"
      "/\n\006mixed2\030\005 \001(\0132\037.google.protobuf.testin"
      "g.Mixed2\022=\n\016map_of_objects\030\006 \001(\0132%.googl"
      "e.protobuf.testing.MapOfObjects\022F\n\030empty"
      "_key_string_to_int1\030\007 \001(\0132$.google.proto"
      "buf.testing.StringtoInt\022F\n\030empty_key_str"
      "ing_to_int2\030\010 \001(\0132$.google.protobuf.test"
      "ing.StringtoInt\022F\n\030empty_key_string_to_i"
      "nt3\030\t \001(\0132$.google.protobuf.testing.Stri"
      "ngtoInt\022G\n\030empty_key_bool_to_string\030\n \001("
      "\0132%.google.protobuf.testing.BoolToString"
      "\022E\n\027empty_key_int_to_string\030\013 \001(\0132$.goog"
      "le.protobuf.testing.IntToString\0228\n\017empty"
      "_key_mixed\030\014 \001(\0132\037.google.protobuf.testi"
      "ng.Mixed1\022D\n\025empty_key_map_objects\030\r \001(\013"
      "2%.google.protobuf.testing.MapOfObjects\""
      "o\n\010EmptyMap\0227\n\003map\030\001 \003(\0132*.google.protob"
      "uf.testing.EmptyMap.MapEntry\032*\n\010MapEntry"
      "\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\005:\0028\001\"u\n\013Stri"
      "ngtoInt\022:\n\003map\030\001 \003(\0132-.google.protobuf.t"
      "esting.StringtoInt.MapEntry\032*\n\010MapEntry\022"
      "\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"u\n\013IntTo"
      "String\022:\n\003map\030\001 \003(\0132-.google.protobuf.te"
      "sting.IntToString.MapEntry\032*\n\010MapEntry\022\013"
      "\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\"w\n\014BoolTo"
      "String\022;\n\003map\030\001 \003(\0132..google.protobuf.te"
      "sting.BoolToString.MapEntry\032*\n\010MapEntry\022"
      "\013\n\003key\030\001 \001(\010\022\r\n\005value\030\002 \001(\t:\0028\001\"x\n\006Mixed"
      "1\022\013\n\003msg\030\001 \001(\t\0225\n\003map\030\002 \003(\0132(.google.pro"
      "tobuf.testing.Mixed1.MapEntry\032*\n\010MapEntr"
      "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\002:\0028\001\"\277\001\n\006Mi"
      "xed2\0225\n\003map\030\001 \003(\0132(.google.protobuf.test"
      "ing.Mixed2.MapEntry\022-\n\002ee\030\002 \001(\0162!.google"
      ".protobuf.testing.Mixed2.E\032*\n\010MapEntry\022\013"
      "\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\010:\0028\001\"#\n\001E\022\006\n\002E"
      "0\020\000\022\006\n\002E1\020\001\022\006\n\002E2\020\002\022\006\n\002E3\020\003\"\271\001\n\014MapOfObj"
      "ects\022;\n\003map\030\001 \003(\0132..google.protobuf.test"
      "ing.MapOfObjects.MapEntry\032\027\n\001M\022\022\n\ninner_"
      "text\030\001 \001(\t\032S\n\010MapEntry\022\013\n\003key\030\001 \001(\t\0226\n\005v"
      "alue\030\002 \001(\0132\'.google.protobuf.testing.Map"
      "OfObjects.M:\0028\001\"\016\n\014DummyRequest\"\230\001\n\005MapI"
      "n\022\r\n\005other\030\001 \001(\t\022\016\n\006things\030\002 \003(\t\022\?\n\tmap_"
      "input\030\003 \003(\0132,.google.protobuf.testing.Ma"
      "pIn.MapInputEntry\032/\n\rMapInputEntry\022\013\n\003ke"
      "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\355\003\n\006MapOut\0227\n"
      "\004map1\030\001 \003(\0132).google.protobuf.testing.Ma"
      "pOut.Map1Entry\0227\n\004map2\030\002 \003(\0132).google.pr"
      "otobuf.testing.MapOut.Map2Entry\0227\n\004map3\030"
      "\003 \003(\0132).google.protobuf.testing.MapOut.M"
      "ap3Entry\0227\n\004map4\030\005 \003(\0132).google.protobuf"
      ".testing.MapOut.Map4Entry\022\013\n\003bar\030\004 \001(\t\032J"
      "\n\tMap1Entry\022\013\n\003key\030\001 \001(\t\022,\n\005value\030\002 \001(\0132"
      "\035.google.protobuf.testing.MapM:\0028\001\032L\n\tMa"
      "p2Entry\022\013\n\003key\030\001 \001(\t\022.\n\005value\030\002 \001(\0132\037.go"
      "ogle.protobuf.testing.MapOut:\0028\001\032+\n\tMap3"
      "Entry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032+\n"
      "\tMap4Entry\022\013\n\003key\030\001 \001(\010\022\r\n\005value\030\002 \001(\t:\002"
      "8\001\"\217\004\n\020MapOutWireFormat\022A\n\004map1\030\001 \003(\01323."
      "google.protobuf.testing.MapOutWireFormat"
      ".Map1Entry\022A\n\004map2\030\002 \003(\01323.google.protob"
      "uf.testing.MapOutWireFormat.Map2Entry\022A\n"
      "\004map3\030\003 \003(\01323.google.protobuf.testing.Ma"
      "pOutWireFormat.Map3Entry\022A\n\004map4\030\005 \003(\01323"
      ".google.protobuf.testing.MapOutWireForma"
      "t.Map4Entry\022\013\n\003bar\030\004 \001(\t\032F\n\tMap1Entry\022\013\n"
      "\003key\030\001 \001(\t\022,\n\005value\030\002 \001(\0132\035.google.proto"
      "buf.testing.MapM\032H\n\tMap2Entry\022\013\n\003key\030\001 \001"
      "(\t\022.\n\005value\030\002 \001(\0132\037.google.protobuf.test"
      "ing.MapOut\032\'\n\tMap3Entry\022\013\n\003key\030\001 \001(\005\022\r\n\005"
      "value\030\002 \001(\t\032\'\n\tMap4Entry\022\013\n\003key\030\001 \001(\010\022\r\n"
      "\005value\030\002 \001(\t\"\023\n\004MapM\022\013\n\003foo\030\001 \001(\t2h\n\017Map"
      "sTestService\022U\n\004Call\022%.google.protobuf.t"
      "esting.DummyRequest\032&.google.protobuf.te"
      "sting.MapsTestCasesb\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 3227);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "google/protobuf/util/internal/testdata/maps.proto", &protobuf_RegisterTypes);
}

void AddDescriptors() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;
}  // namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto
namespace google {
namespace protobuf {
namespace testing {
const ::google::protobuf::EnumDescriptor* Mixed2_E_descriptor() {
  protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::file_level_enum_descriptors[0];
}
bool Mixed2_E_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const Mixed2_E Mixed2::E0;
const Mixed2_E Mixed2::E1;
const Mixed2_E Mixed2::E2;
const Mixed2_E Mixed2::E3;
const Mixed2_E Mixed2::E_MIN;
const Mixed2_E Mixed2::E_MAX;
const int Mixed2::E_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

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

void MapsTestCases::InitAsDefaultInstance() {
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_map_ = const_cast< ::google::protobuf::testing::EmptyMap*>(
      ::google::protobuf::testing::EmptyMap::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->string_to_int_ = const_cast< ::google::protobuf::testing::StringtoInt*>(
      ::google::protobuf::testing::StringtoInt::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->int_to_string_ = const_cast< ::google::protobuf::testing::IntToString*>(
      ::google::protobuf::testing::IntToString::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->mixed1_ = const_cast< ::google::protobuf::testing::Mixed1*>(
      ::google::protobuf::testing::Mixed1::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->mixed2_ = const_cast< ::google::protobuf::testing::Mixed2*>(
      ::google::protobuf::testing::Mixed2::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->map_of_objects_ = const_cast< ::google::protobuf::testing::MapOfObjects*>(
      ::google::protobuf::testing::MapOfObjects::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_string_to_int1_ = const_cast< ::google::protobuf::testing::StringtoInt*>(
      ::google::protobuf::testing::StringtoInt::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_string_to_int2_ = const_cast< ::google::protobuf::testing::StringtoInt*>(
      ::google::protobuf::testing::StringtoInt::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_string_to_int3_ = const_cast< ::google::protobuf::testing::StringtoInt*>(
      ::google::protobuf::testing::StringtoInt::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_bool_to_string_ = const_cast< ::google::protobuf::testing::BoolToString*>(
      ::google::protobuf::testing::BoolToString::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_int_to_string_ = const_cast< ::google::protobuf::testing::IntToString*>(
      ::google::protobuf::testing::IntToString::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_mixed_ = const_cast< ::google::protobuf::testing::Mixed1*>(
      ::google::protobuf::testing::Mixed1::internal_default_instance());
  ::google::protobuf::testing::_MapsTestCases_default_instance_._instance.get_mutable()->empty_key_map_objects_ = const_cast< ::google::protobuf::testing::MapOfObjects*>(
      ::google::protobuf::testing::MapOfObjects::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MapsTestCases::kEmptyMapFieldNumber;
const int MapsTestCases::kStringToIntFieldNumber;
const int MapsTestCases::kIntToStringFieldNumber;
const int MapsTestCases::kMixed1FieldNumber;
const int MapsTestCases::kMixed2FieldNumber;
const int MapsTestCases::kMapOfObjectsFieldNumber;
const int MapsTestCases::kEmptyKeyStringToInt1FieldNumber;
const int MapsTestCases::kEmptyKeyStringToInt2FieldNumber;
const int MapsTestCases::kEmptyKeyStringToInt3FieldNumber;
const int MapsTestCases::kEmptyKeyBoolToStringFieldNumber;
const int MapsTestCases::kEmptyKeyIntToStringFieldNumber;
const int MapsTestCases::kEmptyKeyMixedFieldNumber;
const int MapsTestCases::kEmptyKeyMapObjectsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MapsTestCases::MapsTestCases()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapsTestCases.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapsTestCases)
}
MapsTestCases::MapsTestCases(const MapsTestCases& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_empty_map()) {
    empty_map_ = new ::google::protobuf::testing::EmptyMap(*from.empty_map_);
  } else {
    empty_map_ = NULL;
  }
  if (from.has_string_to_int()) {
    string_to_int_ = new ::google::protobuf::testing::StringtoInt(*from.string_to_int_);
  } else {
    string_to_int_ = NULL;
  }
  if (from.has_int_to_string()) {
    int_to_string_ = new ::google::protobuf::testing::IntToString(*from.int_to_string_);
  } else {
    int_to_string_ = NULL;
  }
  if (from.has_mixed1()) {
    mixed1_ = new ::google::protobuf::testing::Mixed1(*from.mixed1_);
  } else {
    mixed1_ = NULL;
  }
  if (from.has_mixed2()) {
    mixed2_ = new ::google::protobuf::testing::Mixed2(*from.mixed2_);
  } else {
    mixed2_ = NULL;
  }
  if (from.has_map_of_objects()) {
    map_of_objects_ = new ::google::protobuf::testing::MapOfObjects(*from.map_of_objects_);
  } else {
    map_of_objects_ = NULL;
  }
  if (from.has_empty_key_string_to_int1()) {
    empty_key_string_to_int1_ = new ::google::protobuf::testing::StringtoInt(*from.empty_key_string_to_int1_);
  } else {
    empty_key_string_to_int1_ = NULL;
  }
  if (from.has_empty_key_string_to_int2()) {
    empty_key_string_to_int2_ = new ::google::protobuf::testing::StringtoInt(*from.empty_key_string_to_int2_);
  } else {
    empty_key_string_to_int2_ = NULL;
  }
  if (from.has_empty_key_string_to_int3()) {
    empty_key_string_to_int3_ = new ::google::protobuf::testing::StringtoInt(*from.empty_key_string_to_int3_);
  } else {
    empty_key_string_to_int3_ = NULL;
  }
  if (from.has_empty_key_bool_to_string()) {
    empty_key_bool_to_string_ = new ::google::protobuf::testing::BoolToString(*from.empty_key_bool_to_string_);
  } else {
    empty_key_bool_to_string_ = NULL;
  }
  if (from.has_empty_key_int_to_string()) {
    empty_key_int_to_string_ = new ::google::protobuf::testing::IntToString(*from.empty_key_int_to_string_);
  } else {
    empty_key_int_to_string_ = NULL;
  }
  if (from.has_empty_key_mixed()) {
    empty_key_mixed_ = new ::google::protobuf::testing::Mixed1(*from.empty_key_mixed_);
  } else {
    empty_key_mixed_ = NULL;
  }
  if (from.has_empty_key_map_objects()) {
    empty_key_map_objects_ = new ::google::protobuf::testing::MapOfObjects(*from.empty_key_map_objects_);
  } else {
    empty_key_map_objects_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapsTestCases)
}

void MapsTestCases::SharedCtor() {
  ::memset(&empty_map_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&empty_key_map_objects_) -
      reinterpret_cast<char*>(&empty_map_)) + sizeof(empty_key_map_objects_));
}

MapsTestCases::~MapsTestCases() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapsTestCases)
  SharedDtor();
}

void MapsTestCases::SharedDtor() {
  if (this != internal_default_instance()) delete empty_map_;
  if (this != internal_default_instance()) delete string_to_int_;
  if (this != internal_default_instance()) delete int_to_string_;
  if (this != internal_default_instance()) delete mixed1_;
  if (this != internal_default_instance()) delete mixed2_;
  if (this != internal_default_instance()) delete map_of_objects_;
  if (this != internal_default_instance()) delete empty_key_string_to_int1_;
  if (this != internal_default_instance()) delete empty_key_string_to_int2_;
  if (this != internal_default_instance()) delete empty_key_string_to_int3_;
  if (this != internal_default_instance()) delete empty_key_bool_to_string_;
  if (this != internal_default_instance()) delete empty_key_int_to_string_;
  if (this != internal_default_instance()) delete empty_key_mixed_;
  if (this != internal_default_instance()) delete empty_key_map_objects_;
}

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

const MapsTestCases& MapsTestCases::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapsTestCases.base);
  return *internal_default_instance();
}


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

  if (GetArenaNoVirtual() == NULL && empty_map_ != NULL) {
    delete empty_map_;
  }
  empty_map_ = NULL;
  if (GetArenaNoVirtual() == NULL && string_to_int_ != NULL) {
    delete string_to_int_;
  }
  string_to_int_ = NULL;
  if (GetArenaNoVirtual() == NULL && int_to_string_ != NULL) {
    delete int_to_string_;
  }
  int_to_string_ = NULL;
  if (GetArenaNoVirtual() == NULL && mixed1_ != NULL) {
    delete mixed1_;
  }
  mixed1_ = NULL;
  if (GetArenaNoVirtual() == NULL && mixed2_ != NULL) {
    delete mixed2_;
  }
  mixed2_ = NULL;
  if (GetArenaNoVirtual() == NULL && map_of_objects_ != NULL) {
    delete map_of_objects_;
  }
  map_of_objects_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int1_ != NULL) {
    delete empty_key_string_to_int1_;
  }
  empty_key_string_to_int1_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int2_ != NULL) {
    delete empty_key_string_to_int2_;
  }
  empty_key_string_to_int2_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_string_to_int3_ != NULL) {
    delete empty_key_string_to_int3_;
  }
  empty_key_string_to_int3_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_bool_to_string_ != NULL) {
    delete empty_key_bool_to_string_;
  }
  empty_key_bool_to_string_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_int_to_string_ != NULL) {
    delete empty_key_int_to_string_;
  }
  empty_key_int_to_string_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_mixed_ != NULL) {
    delete empty_key_mixed_;
  }
  empty_key_mixed_ = NULL;
  if (GetArenaNoVirtual() == NULL && empty_key_map_objects_ != NULL) {
    delete empty_key_map_objects_;
  }
  empty_key_map_objects_ = NULL;
  _internal_metadata_.Clear();
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  // .google.protobuf.testing.EmptyMap empty_map = 1;
  if (this->has_empty_map()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_empty_map(), output);
  }

  // .google.protobuf.testing.StringtoInt string_to_int = 2;
  if (this->has_string_to_int()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_string_to_int(), output);
  }

  // .google.protobuf.testing.IntToString int_to_string = 3;
  if (this->has_int_to_string()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->_internal_int_to_string(), output);
  }

  // .google.protobuf.testing.Mixed1 mixed1 = 4;
  if (this->has_mixed1()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->_internal_mixed1(), output);
  }

  // .google.protobuf.testing.Mixed2 mixed2 = 5;
  if (this->has_mixed2()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->_internal_mixed2(), output);
  }

  // .google.protobuf.testing.MapOfObjects map_of_objects = 6;
  if (this->has_map_of_objects()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->_internal_map_of_objects(), output);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int1 = 7;
  if (this->has_empty_key_string_to_int1()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->_internal_empty_key_string_to_int1(), output);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int2 = 8;
  if (this->has_empty_key_string_to_int2()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->_internal_empty_key_string_to_int2(), output);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int3 = 9;
  if (this->has_empty_key_string_to_int3()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9, this->_internal_empty_key_string_to_int3(), output);
  }

  // .google.protobuf.testing.BoolToString empty_key_bool_to_string = 10;
  if (this->has_empty_key_bool_to_string()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10, this->_internal_empty_key_bool_to_string(), output);
  }

  // .google.protobuf.testing.IntToString empty_key_int_to_string = 11;
  if (this->has_empty_key_int_to_string()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->_internal_empty_key_int_to_string(), output);
  }

  // .google.protobuf.testing.Mixed1 empty_key_mixed = 12;
  if (this->has_empty_key_mixed()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->_internal_empty_key_mixed(), output);
  }

  // .google.protobuf.testing.MapOfObjects empty_key_map_objects = 13;
  if (this->has_empty_key_map_objects()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      13, this->_internal_empty_key_map_objects(), output);
  }

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

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

  // .google.protobuf.testing.EmptyMap empty_map = 1;
  if (this->has_empty_map()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_empty_map(), deterministic, target);
  }

  // .google.protobuf.testing.StringtoInt string_to_int = 2;
  if (this->has_string_to_int()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_string_to_int(), deterministic, target);
  }

  // .google.protobuf.testing.IntToString int_to_string = 3;
  if (this->has_int_to_string()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->_internal_int_to_string(), deterministic, target);
  }

  // .google.protobuf.testing.Mixed1 mixed1 = 4;
  if (this->has_mixed1()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        4, this->_internal_mixed1(), deterministic, target);
  }

  // .google.protobuf.testing.Mixed2 mixed2 = 5;
  if (this->has_mixed2()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->_internal_mixed2(), deterministic, target);
  }

  // .google.protobuf.testing.MapOfObjects map_of_objects = 6;
  if (this->has_map_of_objects()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        6, this->_internal_map_of_objects(), deterministic, target);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int1 = 7;
  if (this->has_empty_key_string_to_int1()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        7, this->_internal_empty_key_string_to_int1(), deterministic, target);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int2 = 8;
  if (this->has_empty_key_string_to_int2()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        8, this->_internal_empty_key_string_to_int2(), deterministic, target);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int3 = 9;
  if (this->has_empty_key_string_to_int3()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        9, this->_internal_empty_key_string_to_int3(), deterministic, target);
  }

  // .google.protobuf.testing.BoolToString empty_key_bool_to_string = 10;
  if (this->has_empty_key_bool_to_string()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        10, this->_internal_empty_key_bool_to_string(), deterministic, target);
  }

  // .google.protobuf.testing.IntToString empty_key_int_to_string = 11;
  if (this->has_empty_key_int_to_string()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        11, this->_internal_empty_key_int_to_string(), deterministic, target);
  }

  // .google.protobuf.testing.Mixed1 empty_key_mixed = 12;
  if (this->has_empty_key_mixed()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        12, this->_internal_empty_key_mixed(), deterministic, target);
  }

  // .google.protobuf.testing.MapOfObjects empty_key_map_objects = 13;
  if (this->has_empty_key_map_objects()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        13, this->_internal_empty_key_map_objects(), deterministic, target);
  }

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

size_t MapsTestCases::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapsTestCases)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .google.protobuf.testing.EmptyMap empty_map = 1;
  if (this->has_empty_map()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_map_);
  }

  // .google.protobuf.testing.StringtoInt string_to_int = 2;
  if (this->has_string_to_int()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *string_to_int_);
  }

  // .google.protobuf.testing.IntToString int_to_string = 3;
  if (this->has_int_to_string()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *int_to_string_);
  }

  // .google.protobuf.testing.Mixed1 mixed1 = 4;
  if (this->has_mixed1()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *mixed1_);
  }

  // .google.protobuf.testing.Mixed2 mixed2 = 5;
  if (this->has_mixed2()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *mixed2_);
  }

  // .google.protobuf.testing.MapOfObjects map_of_objects = 6;
  if (this->has_map_of_objects()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *map_of_objects_);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int1 = 7;
  if (this->has_empty_key_string_to_int1()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_string_to_int1_);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int2 = 8;
  if (this->has_empty_key_string_to_int2()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_string_to_int2_);
  }

  // .google.protobuf.testing.StringtoInt empty_key_string_to_int3 = 9;
  if (this->has_empty_key_string_to_int3()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_string_to_int3_);
  }

  // .google.protobuf.testing.BoolToString empty_key_bool_to_string = 10;
  if (this->has_empty_key_bool_to_string()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_bool_to_string_);
  }

  // .google.protobuf.testing.IntToString empty_key_int_to_string = 11;
  if (this->has_empty_key_int_to_string()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_int_to_string_);
  }

  // .google.protobuf.testing.Mixed1 empty_key_mixed = 12;
  if (this->has_empty_key_mixed()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_mixed_);
  }

  // .google.protobuf.testing.MapOfObjects empty_key_map_objects = 13;
  if (this->has_empty_key_map_objects()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *empty_key_map_objects_);
  }

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

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

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

  if (from.has_empty_map()) {
    mutable_empty_map()->::google::protobuf::testing::EmptyMap::MergeFrom(from.empty_map());
  }
  if (from.has_string_to_int()) {
    mutable_string_to_int()->::google::protobuf::testing::StringtoInt::MergeFrom(from.string_to_int());
  }
  if (from.has_int_to_string()) {
    mutable_int_to_string()->::google::protobuf::testing::IntToString::MergeFrom(from.int_to_string());
  }
  if (from.has_mixed1()) {
    mutable_mixed1()->::google::protobuf::testing::Mixed1::MergeFrom(from.mixed1());
  }
  if (from.has_mixed2()) {
    mutable_mixed2()->::google::protobuf::testing::Mixed2::MergeFrom(from.mixed2());
  }
  if (from.has_map_of_objects()) {
    mutable_map_of_objects()->::google::protobuf::testing::MapOfObjects::MergeFrom(from.map_of_objects());
  }
  if (from.has_empty_key_string_to_int1()) {
    mutable_empty_key_string_to_int1()->::google::protobuf::testing::StringtoInt::MergeFrom(from.empty_key_string_to_int1());
  }
  if (from.has_empty_key_string_to_int2()) {
    mutable_empty_key_string_to_int2()->::google::protobuf::testing::StringtoInt::MergeFrom(from.empty_key_string_to_int2());
  }
  if (from.has_empty_key_string_to_int3()) {
    mutable_empty_key_string_to_int3()->::google::protobuf::testing::StringtoInt::MergeFrom(from.empty_key_string_to_int3());
  }
  if (from.has_empty_key_bool_to_string()) {
    mutable_empty_key_bool_to_string()->::google::protobuf::testing::BoolToString::MergeFrom(from.empty_key_bool_to_string());
  }
  if (from.has_empty_key_int_to_string()) {
    mutable_empty_key_int_to_string()->::google::protobuf::testing::IntToString::MergeFrom(from.empty_key_int_to_string());
  }
  if (from.has_empty_key_mixed()) {
    mutable_empty_key_mixed()->::google::protobuf::testing::Mixed1::MergeFrom(from.empty_key_mixed());
  }
  if (from.has_empty_key_map_objects()) {
    mutable_empty_key_map_objects()->::google::protobuf::testing::MapOfObjects::MergeFrom(from.empty_key_map_objects());
  }
}

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

void MapsTestCases::CopyFrom(const MapsTestCases& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapsTestCases)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapsTestCases::Swap(MapsTestCases* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapsTestCases::InternalSwap(MapsTestCases* other) {
  using std::swap;
  swap(empty_map_, other->empty_map_);
  swap(string_to_int_, other->string_to_int_);
  swap(int_to_string_, other->int_to_string_);
  swap(mixed1_, other->mixed1_);
  swap(mixed2_, other->mixed2_);
  swap(map_of_objects_, other->map_of_objects_);
  swap(empty_key_string_to_int1_, other->empty_key_string_to_int1_);
  swap(empty_key_string_to_int2_, other->empty_key_string_to_int2_);
  swap(empty_key_string_to_int3_, other->empty_key_string_to_int3_);
  swap(empty_key_bool_to_string_, other->empty_key_bool_to_string_);
  swap(empty_key_int_to_string_, other->empty_key_int_to_string_);
  swap(empty_key_mixed_, other->empty_key_mixed_);
  swap(empty_key_map_objects_, other->empty_key_map_objects_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

EmptyMap::EmptyMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_EmptyMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.EmptyMap)
}
EmptyMap::EmptyMap(const EmptyMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.EmptyMap)
}

void EmptyMap::SharedCtor() {
}

EmptyMap::~EmptyMap() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.EmptyMap)
  SharedDtor();
}

void EmptyMap::SharedDtor() {
}

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

const EmptyMap& EmptyMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_EmptyMap.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  _internal_metadata_.Clear();
}

bool EmptyMap::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.EmptyMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, int32> map = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          EmptyMap_MapEntry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

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

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

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

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

size_t EmptyMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.EmptyMap)
  size_t total_size = 0;

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

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

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

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

  map_.MergeFrom(from.map_);
}

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

void EmptyMap::CopyFrom(const EmptyMap& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.EmptyMap)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void EmptyMap::Swap(EmptyMap* other) {
  if (other == this) return;
  InternalSwap(other);
}
void EmptyMap::InternalSwap(EmptyMap* other) {
  using std::swap;
  map_.Swap(&other->map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

StringtoInt::StringtoInt()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_StringtoInt.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.StringtoInt)
}
StringtoInt::StringtoInt(const StringtoInt& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.StringtoInt)
}

void StringtoInt::SharedCtor() {
}

StringtoInt::~StringtoInt() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.StringtoInt)
  SharedDtor();
}

void StringtoInt::SharedDtor() {
}

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

const StringtoInt& StringtoInt::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_StringtoInt.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  _internal_metadata_.Clear();
}

bool StringtoInt::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.StringtoInt)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<string, int32> map = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          StringtoInt_MapEntry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.StringtoInt.MapEntry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

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

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

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

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

size_t StringtoInt::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.StringtoInt)
  size_t total_size = 0;

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

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

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

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

  map_.MergeFrom(from.map_);
}

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

void StringtoInt::CopyFrom(const StringtoInt& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.StringtoInt)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void StringtoInt::Swap(StringtoInt* other) {
  if (other == this) return;
  InternalSwap(other);
}
void StringtoInt::InternalSwap(StringtoInt* other) {
  using std::swap;
  map_.Swap(&other->map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

IntToString::IntToString()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_IntToString.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.IntToString)
}
IntToString::IntToString(const IntToString& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.IntToString)
}

void IntToString::SharedCtor() {
}

IntToString::~IntToString() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.IntToString)
  SharedDtor();
}

void IntToString::SharedDtor() {
}

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

const IntToString& IntToString::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_IntToString.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  _internal_metadata_.Clear();
}

bool IntToString::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.IntToString)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, string> map = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          IntToString_MapEntry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.IntToString.MapEntry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // map<int32, string> map = 1;
  if (!this->map().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.IntToString.MapEntry.value");
      }
    };

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

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

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

  // map<int32, string> map = 1;
  if (!this->map().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.IntToString.MapEntry.value");
      }
    };

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

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

size_t IntToString::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.IntToString)
  size_t total_size = 0;

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

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

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

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

  map_.MergeFrom(from.map_);
}

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

void IntToString::CopyFrom(const IntToString& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.IntToString)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void IntToString::Swap(IntToString* other) {
  if (other == this) return;
  InternalSwap(other);
}
void IntToString::InternalSwap(IntToString* other) {
  using std::swap;
  map_.Swap(&other->map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

BoolToString::BoolToString()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_BoolToString.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.BoolToString)
}
BoolToString::BoolToString(const BoolToString& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.BoolToString)
}

void BoolToString::SharedCtor() {
}

BoolToString::~BoolToString() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.BoolToString)
  SharedDtor();
}

void BoolToString::SharedDtor() {
}

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

const BoolToString& BoolToString::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_BoolToString.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  _internal_metadata_.Clear();
}

bool BoolToString::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.BoolToString)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<bool, string> map = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          BoolToString_MapEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              BoolToString_MapEntry_DoNotUse,
              bool, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< bool, ::std::string > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.BoolToString.MapEntry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // map<bool, string> map = 1;
  if (!this->map().empty()) {
    typedef ::google::protobuf::Map< bool, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< bool, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.BoolToString.MapEntry.value");
      }
    };

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

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

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

  // map<bool, string> map = 1;
  if (!this->map().empty()) {
    typedef ::google::protobuf::Map< bool, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< bool, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.BoolToString.MapEntry.value");
      }
    };

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

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

size_t BoolToString::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.BoolToString)
  size_t total_size = 0;

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

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

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

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

  map_.MergeFrom(from.map_);
}

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

void BoolToString::CopyFrom(const BoolToString& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.BoolToString)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void BoolToString::Swap(BoolToString* other) {
  if (other == this) return;
  InternalSwap(other);
}
void BoolToString::InternalSwap(BoolToString* other) {
  using std::swap;
  map_.Swap(&other->map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

Mixed1::Mixed1()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed1.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.Mixed1)
}
Mixed1::Mixed1(const Mixed1& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  msg_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.msg().size() > 0) {
    msg_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.msg_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.Mixed1)
}

void Mixed1::SharedCtor() {
  msg_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

Mixed1::~Mixed1() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.Mixed1)
  SharedDtor();
}

void Mixed1::SharedDtor() {
  msg_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const Mixed1& Mixed1::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed1.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  msg_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool Mixed1::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.Mixed1)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string msg = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_msg()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->msg().data(), static_cast<int>(this->msg().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.Mixed1.msg"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, float> map = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          Mixed1_MapEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              Mixed1_MapEntry_DoNotUse,
              ::std::string, float,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
              0 >,
            ::google::protobuf::Map< ::std::string, float > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.Mixed1.MapEntry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // string msg = 1;
  if (this->msg().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->msg().data(), static_cast<int>(this->msg().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.Mixed1.msg");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->msg(), output);
  }

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

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

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

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

  // string msg = 1;
  if (this->msg().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->msg().data(), static_cast<int>(this->msg().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.Mixed1.msg");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->msg(), target);
  }

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

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

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

size_t Mixed1::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.Mixed1)
  size_t total_size = 0;

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

  // string msg = 1;
  if (this->msg().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->msg());
  }

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

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

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

  map_.MergeFrom(from.map_);
  if (from.msg().size() > 0) {

    msg_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.msg_);
  }
}

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

void Mixed1::CopyFrom(const Mixed1& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.Mixed1)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void Mixed1::Swap(Mixed1* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Mixed1::InternalSwap(Mixed1* other) {
  using std::swap;
  map_.Swap(&other->map_);
  msg_.Swap(&other->msg_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

Mixed2::Mixed2()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed2.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.Mixed2)
}
Mixed2::Mixed2(const Mixed2& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  ee_ = from.ee_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.Mixed2)
}

void Mixed2::SharedCtor() {
  ee_ = 0;
}

Mixed2::~Mixed2() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.Mixed2)
  SharedDtor();
}

void Mixed2::SharedDtor() {
}

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

const Mixed2& Mixed2::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_Mixed2.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  ee_ = 0;
  _internal_metadata_.Clear();
}

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

      // .google.protobuf.testing.Mixed2.E ee = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_ee(static_cast< ::google::protobuf::testing::Mixed2_E >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

  // .google.protobuf.testing.Mixed2.E ee = 2;
  if (this->ee() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->ee(), output);
  }

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

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

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

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

  // .google.protobuf.testing.Mixed2.E ee = 2;
  if (this->ee() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      2, this->ee(), target);
  }

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

size_t Mixed2::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.Mixed2)
  size_t total_size = 0;

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

  // .google.protobuf.testing.Mixed2.E ee = 2;
  if (this->ee() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->ee());
  }

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

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

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

  map_.MergeFrom(from.map_);
  if (from.ee() != 0) {
    set_ee(from.ee());
  }
}

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

void Mixed2::CopyFrom(const Mixed2& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.Mixed2)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void Mixed2::Swap(Mixed2* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Mixed2::InternalSwap(Mixed2* other) {
  using std::swap;
  map_.Swap(&other->map_);
  swap(ee_, other->ee_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

MapOfObjects_M::MapOfObjects_M()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects_M.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOfObjects.M)
}
MapOfObjects_M::MapOfObjects_M(const MapOfObjects_M& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  inner_text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.inner_text().size() > 0) {
    inner_text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.inner_text_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOfObjects.M)
}

void MapOfObjects_M::SharedCtor() {
  inner_text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

MapOfObjects_M::~MapOfObjects_M() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOfObjects.M)
  SharedDtor();
}

void MapOfObjects_M::SharedDtor() {
  inner_text_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapOfObjects_M& MapOfObjects_M::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects_M.base);
  return *internal_default_instance();
}


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

  inner_text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool MapOfObjects_M::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOfObjects.M)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string inner_text = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_inner_text()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->inner_text().data(), static_cast<int>(this->inner_text().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOfObjects.M.inner_text"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

void MapOfObjects_M::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.MapOfObjects.M)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string inner_text = 1;
  if (this->inner_text().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->inner_text().data(), static_cast<int>(this->inner_text().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOfObjects.M.inner_text");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->inner_text(), output);
  }

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

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

  // string inner_text = 1;
  if (this->inner_text().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->inner_text().data(), static_cast<int>(this->inner_text().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOfObjects.M.inner_text");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->inner_text(), target);
  }

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

size_t MapOfObjects_M::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOfObjects.M)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string inner_text = 1;
  if (this->inner_text().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->inner_text());
  }

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

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

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

  if (from.inner_text().size() > 0) {

    inner_text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.inner_text_);
  }
}

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

void MapOfObjects_M::CopyFrom(const MapOfObjects_M& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOfObjects.M)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOfObjects_M::Swap(MapOfObjects_M* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOfObjects_M::InternalSwap(MapOfObjects_M* other) {
  using std::swap;
  inner_text_.Swap(&other->inner_text_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

MapOfObjects::MapOfObjects()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOfObjects)
}
MapOfObjects::MapOfObjects(const MapOfObjects& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_.MergeFrom(from.map_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOfObjects)
}

void MapOfObjects::SharedCtor() {
}

MapOfObjects::~MapOfObjects() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOfObjects)
  SharedDtor();
}

void MapOfObjects::SharedDtor() {
}

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

const MapOfObjects& MapOfObjects::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOfObjects.base);
  return *internal_default_instance();
}


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

  map_.Clear();
  _internal_metadata_.Clear();
}

bool MapOfObjects::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOfObjects)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<string, .google.protobuf.testing.MapOfObjects.M> map = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          MapOfObjects_MapEntry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M > > parser(&map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOfObjects.MapEntry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

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

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

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

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

size_t MapOfObjects::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOfObjects)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // map<string, .google.protobuf.testing.MapOfObjects.M> map = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_size());
  {
    ::std::unique_ptr<MapOfObjects_MapEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOfObjects_M >::const_iterator
        it = this->map().begin();
        it != this->map().end(); ++it) {
      entry.reset(map_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

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

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

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

  map_.MergeFrom(from.map_);
}

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

void MapOfObjects::CopyFrom(const MapOfObjects& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOfObjects)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOfObjects::Swap(MapOfObjects* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOfObjects::InternalSwap(MapOfObjects* other) {
  using std::swap;
  map_.Swap(&other->map_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void DummyRequest::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

DummyRequest::DummyRequest()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_DummyRequest.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.DummyRequest)
}
DummyRequest::DummyRequest(const DummyRequest& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.DummyRequest)
}

void DummyRequest::SharedCtor() {
}

DummyRequest::~DummyRequest() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.DummyRequest)
  SharedDtor();
}

void DummyRequest::SharedDtor() {
}

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

const DummyRequest& DummyRequest::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_DummyRequest.base);
  return *internal_default_instance();
}


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

  _internal_metadata_.Clear();
}

bool DummyRequest::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.DummyRequest)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    DO_(::google::protobuf::internal::WireFormat::SkipField(
          input, tag, _internal_metadata_.mutable_unknown_fields()));
  }
success:
  // @@protoc_insertion_point(parse_success:google.protobuf.testing.DummyRequest)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:google.protobuf.testing.DummyRequest)
  return false;
#undef DO_
}

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

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

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

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

size_t DummyRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.DummyRequest)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

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

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

}

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

void DummyRequest::CopyFrom(const DummyRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.DummyRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void DummyRequest::Swap(DummyRequest* other) {
  if (other == this) return;
  InternalSwap(other);
}
void DummyRequest::InternalSwap(DummyRequest* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

void MapIn::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MapIn::kOtherFieldNumber;
const int MapIn::kThingsFieldNumber;
const int MapIn::kMapInputFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MapIn::MapIn()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapIn.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapIn)
}
MapIn::MapIn(const MapIn& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      things_(from.things_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_input_.MergeFrom(from.map_input_);
  other_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.other().size() > 0) {
    other_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.other_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapIn)
}

void MapIn::SharedCtor() {
  other_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

MapIn::~MapIn() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapIn)
  SharedDtor();
}

void MapIn::SharedDtor() {
  other_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapIn& MapIn::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapIn.base);
  return *internal_default_instance();
}


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

  things_.Clear();
  map_input_.Clear();
  other_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool MapIn::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapIn)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string other = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_other()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->other().data(), static_cast<int>(this->other().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapIn.other"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated string things = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_things()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->things(this->things_size() - 1).data(),
            static_cast<int>(this->things(this->things_size() - 1).length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapIn.things"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> map_input = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          MapIn_MapInputEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapIn_MapInputEntry_DoNotUse,
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&map_input_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapIn.MapInputEntry.key"));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapIn.MapInputEntry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // string other = 1;
  if (this->other().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->other().data(), static_cast<int>(this->other().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapIn.other");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->other(), output);
  }

  // repeated string things = 2;
  for (int i = 0, n = this->things_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->things(i).data(), static_cast<int>(this->things(i).length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapIn.things");
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->things(i), output);
  }

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

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

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

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

  // string other = 1;
  if (this->other().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->other().data(), static_cast<int>(this->other().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapIn.other");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->other(), target);
  }

  // repeated string things = 2;
  for (int i = 0, n = this->things_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->things(i).data(), static_cast<int>(this->things(i).length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapIn.things");
    target = ::google::protobuf::internal::WireFormatLite::
      WriteStringToArray(2, this->things(i), target);
  }

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

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

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

size_t MapIn::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapIn)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // repeated string things = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->things_size());
  for (int i = 0, n = this->things_size(); i < n; i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->things(i));
  }

  // map<string, string> map_input = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_input_size());
  {
    ::std::unique_ptr<MapIn_MapInputEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->map_input().begin();
        it != this->map_input().end(); ++it) {
      entry.reset(map_input_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // string other = 1;
  if (this->other().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->other());
  }

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

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

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

  things_.MergeFrom(from.things_);
  map_input_.MergeFrom(from.map_input_);
  if (from.other().size() > 0) {

    other_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.other_);
  }
}

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

void MapIn::CopyFrom(const MapIn& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapIn)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapIn::Swap(MapIn* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapIn::InternalSwap(MapIn* other) {
  using std::swap;
  things_.InternalSwap(CastToBase(&other->things_));
  map_input_.Swap(&other->map_input_);
  other_.Swap(&other->other_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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


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

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


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

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


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

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

MapOut::MapOut()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOut)
}
MapOut::MapOut(const MapOut& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map1_.MergeFrom(from.map1_);
  map2_.MergeFrom(from.map2_);
  map3_.MergeFrom(from.map3_);
  map4_.MergeFrom(from.map4_);
  bar_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.bar().size() > 0) {
    bar_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bar_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOut)
}

void MapOut::SharedCtor() {
  bar_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

MapOut::~MapOut() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOut)
  SharedDtor();
}

void MapOut::SharedDtor() {
  bar_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapOut& MapOut::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOut.base);
  return *internal_default_instance();
}


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

  map1_.Clear();
  map2_.Clear();
  map3_.Clear();
  map4_.Clear();
  bar_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool MapOut::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOut)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<string, .google.protobuf.testing.MapM> map1 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          MapOut_Map1Entry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM > > parser(&map1_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOut.Map1Entry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, .google.protobuf.testing.MapOut> map2 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          MapOut_Map2Entry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut > > parser(&map2_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOut.Map2Entry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, string> map3 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          MapOut_Map3Entry_DoNotUse::Parser< ::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 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map3_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOut.Map3Entry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string bar = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_bar()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->bar().data(), static_cast<int>(this->bar().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOut.bar"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<bool, string> map4 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          MapOut_Map4Entry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              MapOut_Map4Entry_DoNotUse,
              bool, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< bool, ::std::string > > parser(&map4_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            parser.value().data(), static_cast<int>(parser.value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOut.Map4Entry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

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

  // map<int32, string> map3 = 3;
  if (!this->map3().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.MapOut.Map3Entry.value");
      }
    };

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

  // string bar = 4;
  if (this->bar().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->bar().data(), static_cast<int>(this->bar().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOut.bar");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->bar(), output);
  }

  // map<bool, string> map4 = 5;
  if (!this->map4().empty()) {
    typedef ::google::protobuf::Map< bool, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< bool, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.MapOut.Map4Entry.value");
      }
    };

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

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

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

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

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

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

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

  // map<int32, string> map3 = 3;
  if (!this->map3().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< ::google::protobuf::int32, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.MapOut.Map3Entry.value");
      }
    };

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

  // string bar = 4;
  if (this->bar().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->bar().data(), static_cast<int>(this->bar().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOut.bar");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        4, this->bar(), target);
  }

  // map<bool, string> map4 = 5;
  if (!this->map4().empty()) {
    typedef ::google::protobuf::Map< bool, ::std::string >::const_pointer
        ConstPtr;
    typedef ::google::protobuf::internal::SortItem< bool, ConstPtr > SortItem;
    typedef ::google::protobuf::internal::CompareByFirstField<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::google::protobuf::internal::WireFormatLite::SERIALIZE,
          "google.protobuf.testing.MapOut.Map4Entry.value");
      }
    };

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

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

size_t MapOut::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOut)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // map<string, .google.protobuf.testing.MapM> map1 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map1_size());
  {
    ::std::unique_ptr<MapOut_Map1Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapM >::const_iterator
        it = this->map1().begin();
        it != this->map1().end(); ++it) {
      entry.reset(map1_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // map<string, .google.protobuf.testing.MapOut> map2 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map2_size());
  {
    ::std::unique_ptr<MapOut_Map2Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::google::protobuf::testing::MapOut >::const_iterator
        it = this->map2().begin();
        it != this->map2().end(); ++it) {
      entry.reset(map2_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

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

  // map<bool, string> map4 = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map4_size());
  {
    ::std::unique_ptr<MapOut_Map4Entry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, ::std::string >::const_iterator
        it = this->map4().begin();
        it != this->map4().end(); ++it) {
      entry.reset(map4_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  // string bar = 4;
  if (this->bar().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->bar());
  }

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

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

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

  map1_.MergeFrom(from.map1_);
  map2_.MergeFrom(from.map2_);
  map3_.MergeFrom(from.map3_);
  map4_.MergeFrom(from.map4_);
  if (from.bar().size() > 0) {

    bar_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bar_);
  }
}

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

void MapOut::CopyFrom(const MapOut& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOut)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOut::Swap(MapOut* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOut::InternalSwap(MapOut* other) {
  using std::swap;
  map1_.Swap(&other->map1_);
  map2_.Swap(&other->map2_);
  map3_.Swap(&other->map3_);
  map4_.Swap(&other->map4_);
  bar_.Swap(&other->bar_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void MapOutWireFormat_Map1Entry::InitAsDefaultInstance() {
  ::google::protobuf::testing::_MapOutWireFormat_Map1Entry_default_instance_._instance.get_mutable()->value_ = const_cast< ::google::protobuf::testing::MapM*>(
      ::google::protobuf::testing::MapM::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MapOutWireFormat_Map1Entry::kKeyFieldNumber;
const int MapOutWireFormat_Map1Entry::kValueFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MapOutWireFormat_Map1Entry::MapOutWireFormat_Map1Entry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map1Entry.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOutWireFormat.Map1Entry)
}
MapOutWireFormat_Map1Entry::MapOutWireFormat_Map1Entry(const MapOutWireFormat_Map1Entry& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.key().size() > 0) {
    key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.key_);
  }
  if (from.has_value()) {
    value_ = new ::google::protobuf::testing::MapM(*from.value_);
  } else {
    value_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOutWireFormat.Map1Entry)
}

void MapOutWireFormat_Map1Entry::SharedCtor() {
  key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  value_ = NULL;
}

MapOutWireFormat_Map1Entry::~MapOutWireFormat_Map1Entry() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOutWireFormat.Map1Entry)
  SharedDtor();
}

void MapOutWireFormat_Map1Entry::SharedDtor() {
  key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete value_;
}

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

const MapOutWireFormat_Map1Entry& MapOutWireFormat_Map1Entry::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map1Entry.base);
  return *internal_default_instance();
}


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

  key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && value_ != NULL) {
    delete value_;
  }
  value_ = NULL;
  _internal_metadata_.Clear();
}

bool MapOutWireFormat_Map1Entry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOutWireFormat.Map1Entry)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string key = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_key()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->key().data(), static_cast<int>(this->key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOutWireFormat.Map1Entry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

void MapOutWireFormat_Map1Entry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.MapOutWireFormat.Map1Entry)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string key = 1;
  if (this->key().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->key().data(), static_cast<int>(this->key().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map1Entry.key");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->key(), output);
  }

  // .google.protobuf.testing.MapM value = 2;
  if (this->has_value()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_value(), output);
  }

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

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

  // string key = 1;
  if (this->key().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->key().data(), static_cast<int>(this->key().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map1Entry.key");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->key(), target);
  }

  // .google.protobuf.testing.MapM value = 2;
  if (this->has_value()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_value(), deterministic, target);
  }

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

size_t MapOutWireFormat_Map1Entry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOutWireFormat.Map1Entry)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string key = 1;
  if (this->key().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->key());
  }

  // .google.protobuf.testing.MapM value = 2;
  if (this->has_value()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *value_);
  }

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

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

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

  if (from.key().size() > 0) {

    key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.key_);
  }
  if (from.has_value()) {
    mutable_value()->::google::protobuf::testing::MapM::MergeFrom(from.value());
  }
}

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

void MapOutWireFormat_Map1Entry::CopyFrom(const MapOutWireFormat_Map1Entry& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOutWireFormat.Map1Entry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOutWireFormat_Map1Entry::Swap(MapOutWireFormat_Map1Entry* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOutWireFormat_Map1Entry::InternalSwap(MapOutWireFormat_Map1Entry* other) {
  using std::swap;
  key_.Swap(&other->key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(value_, other->value_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void MapOutWireFormat_Map2Entry::InitAsDefaultInstance() {
  ::google::protobuf::testing::_MapOutWireFormat_Map2Entry_default_instance_._instance.get_mutable()->value_ = const_cast< ::google::protobuf::testing::MapOut*>(
      ::google::protobuf::testing::MapOut::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int MapOutWireFormat_Map2Entry::kKeyFieldNumber;
const int MapOutWireFormat_Map2Entry::kValueFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

MapOutWireFormat_Map2Entry::MapOutWireFormat_Map2Entry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map2Entry.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOutWireFormat.Map2Entry)
}
MapOutWireFormat_Map2Entry::MapOutWireFormat_Map2Entry(const MapOutWireFormat_Map2Entry& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.key().size() > 0) {
    key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.key_);
  }
  if (from.has_value()) {
    value_ = new ::google::protobuf::testing::MapOut(*from.value_);
  } else {
    value_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOutWireFormat.Map2Entry)
}

void MapOutWireFormat_Map2Entry::SharedCtor() {
  key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  value_ = NULL;
}

MapOutWireFormat_Map2Entry::~MapOutWireFormat_Map2Entry() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOutWireFormat.Map2Entry)
  SharedDtor();
}

void MapOutWireFormat_Map2Entry::SharedDtor() {
  key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete value_;
}

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

const MapOutWireFormat_Map2Entry& MapOutWireFormat_Map2Entry::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map2Entry.base);
  return *internal_default_instance();
}


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

  key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && value_ != NULL) {
    delete value_;
  }
  value_ = NULL;
  _internal_metadata_.Clear();
}

bool MapOutWireFormat_Map2Entry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOutWireFormat.Map2Entry)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string key = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_key()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->key().data(), static_cast<int>(this->key().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOutWireFormat.Map2Entry.key"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

void MapOutWireFormat_Map2Entry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.MapOutWireFormat.Map2Entry)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string key = 1;
  if (this->key().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->key().data(), static_cast<int>(this->key().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map2Entry.key");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->key(), output);
  }

  // .google.protobuf.testing.MapOut value = 2;
  if (this->has_value()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_value(), output);
  }

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

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

  // string key = 1;
  if (this->key().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->key().data(), static_cast<int>(this->key().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map2Entry.key");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->key(), target);
  }

  // .google.protobuf.testing.MapOut value = 2;
  if (this->has_value()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_value(), deterministic, target);
  }

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

size_t MapOutWireFormat_Map2Entry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOutWireFormat.Map2Entry)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string key = 1;
  if (this->key().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->key());
  }

  // .google.protobuf.testing.MapOut value = 2;
  if (this->has_value()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *value_);
  }

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

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

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

  if (from.key().size() > 0) {

    key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.key_);
  }
  if (from.has_value()) {
    mutable_value()->::google::protobuf::testing::MapOut::MergeFrom(from.value());
  }
}

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

void MapOutWireFormat_Map2Entry::CopyFrom(const MapOutWireFormat_Map2Entry& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOutWireFormat.Map2Entry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOutWireFormat_Map2Entry::Swap(MapOutWireFormat_Map2Entry* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOutWireFormat_Map2Entry::InternalSwap(MapOutWireFormat_Map2Entry* other) {
  using std::swap;
  key_.Swap(&other->key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(value_, other->value_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

MapOutWireFormat_Map3Entry::MapOutWireFormat_Map3Entry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map3Entry.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOutWireFormat.Map3Entry)
}
MapOutWireFormat_Map3Entry::MapOutWireFormat_Map3Entry(const MapOutWireFormat_Map3Entry& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.value().size() > 0) {
    value_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.value_);
  }
  key_ = from.key_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOutWireFormat.Map3Entry)
}

void MapOutWireFormat_Map3Entry::SharedCtor() {
  value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  key_ = 0;
}

MapOutWireFormat_Map3Entry::~MapOutWireFormat_Map3Entry() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOutWireFormat.Map3Entry)
  SharedDtor();
}

void MapOutWireFormat_Map3Entry::SharedDtor() {
  value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapOutWireFormat_Map3Entry& MapOutWireFormat_Map3Entry::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map3Entry.base);
  return *internal_default_instance();
}


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

  value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  key_ = 0;
  _internal_metadata_.Clear();
}

bool MapOutWireFormat_Map3Entry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOutWireFormat.Map3Entry)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int32 key = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &key_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string value = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_value()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->value().data(), static_cast<int>(this->value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOutWireFormat.Map3Entry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

void MapOutWireFormat_Map3Entry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.MapOutWireFormat.Map3Entry)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 key = 1;
  if (this->key() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->key(), output);
  }

  // string value = 2;
  if (this->value().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->value().data(), static_cast<int>(this->value().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map3Entry.value");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->value(), output);
  }

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

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

  // int32 key = 1;
  if (this->key() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->key(), target);
  }

  // string value = 2;
  if (this->value().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->value().data(), static_cast<int>(this->value().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map3Entry.value");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->value(), target);
  }

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

size_t MapOutWireFormat_Map3Entry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOutWireFormat.Map3Entry)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string value = 2;
  if (this->value().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->value());
  }

  // int32 key = 1;
  if (this->key() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->key());
  }

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

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

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

  if (from.value().size() > 0) {

    value_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.value_);
  }
  if (from.key() != 0) {
    set_key(from.key());
  }
}

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

void MapOutWireFormat_Map3Entry::CopyFrom(const MapOutWireFormat_Map3Entry& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOutWireFormat.Map3Entry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOutWireFormat_Map3Entry::Swap(MapOutWireFormat_Map3Entry* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOutWireFormat_Map3Entry::InternalSwap(MapOutWireFormat_Map3Entry* other) {
  using std::swap;
  value_.Swap(&other->value_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(key_, other->key_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

MapOutWireFormat_Map4Entry::MapOutWireFormat_Map4Entry()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map4Entry.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOutWireFormat.Map4Entry)
}
MapOutWireFormat_Map4Entry::MapOutWireFormat_Map4Entry(const MapOutWireFormat_Map4Entry& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.value().size() > 0) {
    value_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.value_);
  }
  key_ = from.key_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOutWireFormat.Map4Entry)
}

void MapOutWireFormat_Map4Entry::SharedCtor() {
  value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  key_ = false;
}

MapOutWireFormat_Map4Entry::~MapOutWireFormat_Map4Entry() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOutWireFormat.Map4Entry)
  SharedDtor();
}

void MapOutWireFormat_Map4Entry::SharedDtor() {
  value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapOutWireFormat_Map4Entry& MapOutWireFormat_Map4Entry::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat_Map4Entry.base);
  return *internal_default_instance();
}


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

  value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  key_ = false;
  _internal_metadata_.Clear();
}

bool MapOutWireFormat_Map4Entry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapOutWireFormat.Map4Entry)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // bool key = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &key_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string value = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_value()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->value().data(), static_cast<int>(this->value().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOutWireFormat.Map4Entry.value"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

void MapOutWireFormat_Map4Entry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.MapOutWireFormat.Map4Entry)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // bool key = 1;
  if (this->key() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->key(), output);
  }

  // string value = 2;
  if (this->value().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->value().data(), static_cast<int>(this->value().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map4Entry.value");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->value(), output);
  }

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

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

  // bool key = 1;
  if (this->key() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->key(), target);
  }

  // string value = 2;
  if (this->value().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->value().data(), static_cast<int>(this->value().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.Map4Entry.value");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->value(), target);
  }

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

size_t MapOutWireFormat_Map4Entry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOutWireFormat.Map4Entry)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string value = 2;
  if (this->value().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->value());
  }

  // bool key = 1;
  if (this->key() != 0) {
    total_size += 1 + 1;
  }

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

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

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

  if (from.value().size() > 0) {

    value_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.value_);
  }
  if (from.key() != 0) {
    set_key(from.key());
  }
}

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

void MapOutWireFormat_Map4Entry::CopyFrom(const MapOutWireFormat_Map4Entry& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOutWireFormat.Map4Entry)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOutWireFormat_Map4Entry::Swap(MapOutWireFormat_Map4Entry* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOutWireFormat_Map4Entry::InternalSwap(MapOutWireFormat_Map4Entry* other) {
  using std::swap;
  value_.Swap(&other->value_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(key_, other->key_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

MapOutWireFormat::MapOutWireFormat()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapOutWireFormat)
}
MapOutWireFormat::MapOutWireFormat(const MapOutWireFormat& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      map1_(from.map1_),
      map2_(from.map2_),
      map3_(from.map3_),
      map4_(from.map4_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  bar_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.bar().size() > 0) {
    bar_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bar_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapOutWireFormat)
}

void MapOutWireFormat::SharedCtor() {
  bar_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

MapOutWireFormat::~MapOutWireFormat() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapOutWireFormat)
  SharedDtor();
}

void MapOutWireFormat::SharedDtor() {
  bar_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapOutWireFormat& MapOutWireFormat::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapOutWireFormat.base);
  return *internal_default_instance();
}


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

  map1_.Clear();
  map2_.Clear();
  map3_.Clear();
  map4_.Clear();
  bar_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

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

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

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

      // string bar = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_bar()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->bar().data(), static_cast<int>(this->bar().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapOutWireFormat.bar"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

  // repeated .google.protobuf.testing.MapOutWireFormat.Map1Entry map1 = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map1_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1,
      this->map1(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map2Entry map2 = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map2_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2,
      this->map2(static_cast<int>(i)),
      output);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map3Entry map3 = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map3_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3,
      this->map3(static_cast<int>(i)),
      output);
  }

  // string bar = 4;
  if (this->bar().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->bar().data(), static_cast<int>(this->bar().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.bar");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->bar(), output);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map4Entry map4 = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map4_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5,
      this->map4(static_cast<int>(i)),
      output);
  }

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

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

  // repeated .google.protobuf.testing.MapOutWireFormat.Map1Entry map1 = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map1_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->map1(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map2Entry map2 = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map2_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->map2(static_cast<int>(i)), deterministic, target);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map3Entry map3 = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map3_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->map3(static_cast<int>(i)), deterministic, target);
  }

  // string bar = 4;
  if (this->bar().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->bar().data(), static_cast<int>(this->bar().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapOutWireFormat.bar");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        4, this->bar(), target);
  }

  // repeated .google.protobuf.testing.MapOutWireFormat.Map4Entry map4 = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->map4_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->map4(static_cast<int>(i)), deterministic, target);
  }

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

size_t MapOutWireFormat::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapOutWireFormat)
  size_t total_size = 0;

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

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

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

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

  // string bar = 4;
  if (this->bar().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->bar());
  }

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

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

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

  map1_.MergeFrom(from.map1_);
  map2_.MergeFrom(from.map2_);
  map3_.MergeFrom(from.map3_);
  map4_.MergeFrom(from.map4_);
  if (from.bar().size() > 0) {

    bar_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bar_);
  }
}

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

void MapOutWireFormat::CopyFrom(const MapOutWireFormat& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapOutWireFormat)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapOutWireFormat::Swap(MapOutWireFormat* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapOutWireFormat::InternalSwap(MapOutWireFormat* other) {
  using std::swap;
  CastToBase(&map1_)->InternalSwap(CastToBase(&other->map1_));
  CastToBase(&map2_)->InternalSwap(CastToBase(&other->map2_));
  CastToBase(&map3_)->InternalSwap(CastToBase(&other->map3_));
  CastToBase(&map4_)->InternalSwap(CastToBase(&other->map4_));
  bar_.Swap(&other->bar_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

MapM::MapM()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapM.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.MapM)
}
MapM::MapM(const MapM& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  foo_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.foo().size() > 0) {
    foo_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.foo_);
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.MapM)
}

void MapM::SharedCtor() {
  foo_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

MapM::~MapM() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.MapM)
  SharedDtor();
}

void MapM::SharedDtor() {
  foo_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

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

const MapM& MapM::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2fmaps_2eproto::scc_info_MapM.base);
  return *internal_default_instance();
}


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

  foo_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool MapM::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.MapM)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string foo = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_foo()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->foo().data(), static_cast<int>(this->foo().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "google.protobuf.testing.MapM.foo"));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // string foo = 1;
  if (this->foo().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->foo().data(), static_cast<int>(this->foo().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapM.foo");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->foo(), output);
  }

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

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

  // string foo = 1;
  if (this->foo().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->foo().data(), static_cast<int>(this->foo().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "google.protobuf.testing.MapM.foo");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->foo(), target);
  }

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

size_t MapM::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.MapM)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string foo = 1;
  if (this->foo().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->foo());
  }

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

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

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

  if (from.foo().size() > 0) {

    foo_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.foo_);
  }
}

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

void MapM::CopyFrom(const MapM& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.MapM)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MapM::Swap(MapM* other) {
  if (other == this) return;
  InternalSwap(other);
}
void MapM::InternalSwap(MapM* other) {
  using std::swap;
  foo_.Swap(&other->foo_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


// @@protoc_insertion_point(namespace_scope)
}  // namespace testing
}  // namespace protobuf
}  // namespace google
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapsTestCases* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapsTestCases >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapsTestCases >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::EmptyMap_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::EmptyMap* Arena::CreateMaybeMessage< ::google::protobuf::testing::EmptyMap >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::EmptyMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::StringtoInt_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::StringtoInt* Arena::CreateMaybeMessage< ::google::protobuf::testing::StringtoInt >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::StringtoInt >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::IntToString_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::IntToString_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::IntToString_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::IntToString* Arena::CreateMaybeMessage< ::google::protobuf::testing::IntToString >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::IntToString >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::BoolToString_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::BoolToString* Arena::CreateMaybeMessage< ::google::protobuf::testing::BoolToString >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::BoolToString >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::Mixed1_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::Mixed1* Arena::CreateMaybeMessage< ::google::protobuf::testing::Mixed1 >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::Mixed1 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::Mixed2_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::Mixed2* Arena::CreateMaybeMessage< ::google::protobuf::testing::Mixed2 >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::Mixed2 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOfObjects_M* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOfObjects_M >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOfObjects_M >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOfObjects_MapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOfObjects* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOfObjects >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOfObjects >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::DummyRequest* Arena::CreateMaybeMessage< ::google::protobuf::testing::DummyRequest >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::DummyRequest >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapIn_MapInputEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapIn* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapIn >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapIn >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOut_Map1Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOut_Map2Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOut_Map3Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOut_Map4Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOut* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOut >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOut >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOutWireFormat_Map1Entry* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOutWireFormat_Map1Entry >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOutWireFormat_Map2Entry* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOutWireFormat_Map2Entry >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOutWireFormat_Map3Entry* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOutWireFormat_Map3Entry >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOutWireFormat_Map4Entry* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOutWireFormat_Map4Entry >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapOutWireFormat* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapOutWireFormat >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapOutWireFormat >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::MapM* Arena::CreateMaybeMessage< ::google::protobuf::testing::MapM >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::MapM >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
