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

#include <google/protobuf/map_proto2_unittest.pb.h>

#include <algorithm>

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

namespace protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMap_KnownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMap_UnknownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestIntIntMap_MEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<12> scc_info_TestMaps;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestIntIntMap;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MBoolEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MFixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MFixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MInt32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MInt64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSfixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSfixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MStringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MUint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MUint64Entry_DoNotUse;
}  // namespace protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto
namespace protobuf_unittest {
class TestEnumMap_KnownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMap_KnownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMap_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMap_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMap_UnknownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMap_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMap>
      _instance;
} _TestEnumMap_default_instance_;
class TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapPlusExtraDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtra>
      _instance;
} _TestEnumMapPlusExtra_default_instance_;
class TestImportEnumMap_ImportEnumAmpEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestImportEnumMap_ImportEnumAmpEntry_DoNotUse>
      _instance;
} _TestImportEnumMap_ImportEnumAmpEntry_DoNotUse_default_instance_;
class TestImportEnumMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestImportEnumMap>
      _instance;
} _TestImportEnumMap_default_instance_;
class TestIntIntMap_MEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestIntIntMap_MEntry_DoNotUse>
      _instance;
} _TestIntIntMap_MEntry_DoNotUse_default_instance_;
class TestIntIntMapDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestIntIntMap>
      _instance;
} _TestIntIntMap_default_instance_;
class TestMaps_MInt32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MInt32Entry_DoNotUse>
      _instance;
} _TestMaps_MInt32Entry_DoNotUse_default_instance_;
class TestMaps_MInt64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MInt64Entry_DoNotUse>
      _instance;
} _TestMaps_MInt64Entry_DoNotUse_default_instance_;
class TestMaps_MUint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MUint32Entry_DoNotUse>
      _instance;
} _TestMaps_MUint32Entry_DoNotUse_default_instance_;
class TestMaps_MUint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MUint64Entry_DoNotUse>
      _instance;
} _TestMaps_MUint64Entry_DoNotUse_default_instance_;
class TestMaps_MSint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MSint32Entry_DoNotUse>
      _instance;
} _TestMaps_MSint32Entry_DoNotUse_default_instance_;
class TestMaps_MSint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MSint64Entry_DoNotUse>
      _instance;
} _TestMaps_MSint64Entry_DoNotUse_default_instance_;
class TestMaps_MFixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MFixed32Entry_DoNotUse>
      _instance;
} _TestMaps_MFixed32Entry_DoNotUse_default_instance_;
class TestMaps_MFixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MFixed64Entry_DoNotUse>
      _instance;
} _TestMaps_MFixed64Entry_DoNotUse_default_instance_;
class TestMaps_MSfixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MSfixed32Entry_DoNotUse>
      _instance;
} _TestMaps_MSfixed32Entry_DoNotUse_default_instance_;
class TestMaps_MSfixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MSfixed64Entry_DoNotUse>
      _instance;
} _TestMaps_MSfixed64Entry_DoNotUse_default_instance_;
class TestMaps_MBoolEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MBoolEntry_DoNotUse>
      _instance;
} _TestMaps_MBoolEntry_DoNotUse_default_instance_;
class TestMaps_MStringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps_MStringEntry_DoNotUse>
      _instance;
} _TestMaps_MStringEntry_DoNotUse_default_instance_;
class TestMapsDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMaps>
      _instance;
} _TestMaps_default_instance_;
class TestSubmessageMapsDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestSubmessageMaps>
      _instance;
} _TestSubmessageMaps_default_instance_;
}  // namespace protobuf_unittest
namespace protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto {
static void InitDefaultsTestEnumMap_KnownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMap_KnownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMap_UnknownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMap_UnknownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<2> scc_info_TestEnumMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTestEnumMap}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMap_KnownMapFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMap_UnknownMapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapPlusExtra() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<2> scc_info_TestEnumMapPlusExtra =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTestEnumMapPlusExtra}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestImportEnumMap_ImportEnumAmpEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse();
  }
  ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestImportEnumMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestImportEnumMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestImportEnumMap}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse.base,}};

static void InitDefaultsTestIntIntMap_MEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestIntIntMap_MEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse();
  }
  ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestIntIntMap() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestIntIntMap =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestIntIntMap}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap_MEntry_DoNotUse.base,}};

static void InitDefaultsTestMaps_MInt32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MInt32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MInt32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MInt32Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MInt64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MInt64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MInt64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MInt64Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MUint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MUint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MUint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MUint32Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MUint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MUint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MUint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MUint64Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MSint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MSint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSint32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MSint32Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MSint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MSint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSint64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MSint64Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MFixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MFixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MFixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MFixed32Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MFixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MFixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MFixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MFixed64Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MSfixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MSfixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSfixed32Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MSfixed32Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MSfixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MSfixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MSfixed64Entry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MSfixed64Entry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MBoolEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MBoolEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MBoolEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MBoolEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps_MStringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMaps_MStringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMaps_MStringEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMaps_MStringEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base,}};

static void InitDefaultsTestMaps() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<12> scc_info_TestMaps =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 12, InitDefaultsTestMaps}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MInt32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MInt64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MUint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MUint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MSint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MSint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MFixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MFixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MSfixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MSfixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MBoolEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps_MStringEntry_DoNotUse.base,}};

static void InitDefaultsTestSubmessageMaps() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestSubmessageMaps =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestSubmessageMaps}, {
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps.base,}};

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMap_KnownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMap_UnknownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtra.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestImportEnumMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestIntIntMap_MEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestIntIntMap.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MInt32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MInt64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MUint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MUint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MSint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MSint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MFixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MFixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MSfixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MSfixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MBoolEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps_MStringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMaps.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestSubmessageMaps.base);
}

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

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap, known_map_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMap, unknown_map_field_),
  ~0u,
  ~0u,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra, known_map_field_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestEnumMapPlusExtra, unknown_map_field_),
  ~0u,
  ~0u,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestImportEnumMap, import_enum_amp_),
  ~0u,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestIntIntMap, m_),
  ~0u,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MStringEntry_DoNotUse, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MStringEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MStringEntry_DoNotUse, key_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps_MStringEntry_DoNotUse, value_),
  0,
  1,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_int32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_int64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_uint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_uint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_sint32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_sint64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_fixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_fixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_sfixed32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_sfixed64_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_bool_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestMaps, m_string_),
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSubmessageMaps, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSubmessageMaps, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::protobuf_unittest::TestSubmessageMaps, m_),
  0,
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 7, sizeof(::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse)},
  { 9, 16, sizeof(::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse)},
  { 18, 25, sizeof(::protobuf_unittest::TestEnumMap)},
  { 27, 34, sizeof(::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse)},
  { 36, 43, sizeof(::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse)},
  { 45, 52, sizeof(::protobuf_unittest::TestEnumMapPlusExtra)},
  { 54, 61, sizeof(::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse)},
  { 63, 69, sizeof(::protobuf_unittest::TestImportEnumMap)},
  { 70, 77, sizeof(::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse)},
  { 79, 85, sizeof(::protobuf_unittest::TestIntIntMap)},
  { 86, 93, sizeof(::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse)},
  { 95, 102, sizeof(::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse)},
  { 104, 111, sizeof(::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse)},
  { 113, 120, sizeof(::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse)},
  { 122, 129, sizeof(::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse)},
  { 131, 138, sizeof(::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse)},
  { 140, 147, sizeof(::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse)},
  { 149, 156, sizeof(::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse)},
  { 158, 165, sizeof(::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse)},
  { 167, 174, sizeof(::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse)},
  { 176, 183, sizeof(::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse)},
  { 185, 192, sizeof(::protobuf_unittest::TestMaps_MStringEntry_DoNotUse)},
  { 194, 211, sizeof(::protobuf_unittest::TestMaps)},
  { 223, 229, sizeof(::protobuf_unittest::TestSubmessageMaps)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMap_KnownMapFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMap_UnknownMapFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestEnumMapPlusExtra_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestImportEnumMap_ImportEnumAmpEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestImportEnumMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestIntIntMap_MEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestIntIntMap_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MInt32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MInt64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MUint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MUint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MSint32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MSint64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MFixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MFixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MSfixed32Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MSfixed64Entry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MBoolEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_MStringEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestMaps_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::protobuf_unittest::_TestSubmessageMaps_default_instance_),
};

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

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

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

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n)google/protobuf/map_proto2_unittest.pr"
      "oto\022\021protobuf_unittest\032%google/protobuf/"
      "unittest_import.proto\"\333\002\n\013TestEnumMap\022J\n"
      "\017known_map_field\030e \003(\01321.protobuf_unitte"
      "st.TestEnumMap.KnownMapFieldEntry\022N\n\021unk"
      "nown_map_field\030f \003(\01323.protobuf_unittest"
      ".TestEnumMap.UnknownMapFieldEntry\032V\n\022Kno"
      "wnMapFieldEntry\022\013\n\003key\030\001 \001(\005\022/\n\005value\030\002 "
      "\001(\0162 .protobuf_unittest.Proto2MapEnum:\0028"
      "\001\032X\n\024UnknownMapFieldEntry\022\013\n\003key\030\001 \001(\005\022/"
      "\n\005value\030\002 \001(\0162 .protobuf_unittest.Proto2"
      "MapEnum:\0028\001\"\210\003\n\024TestEnumMapPlusExtra\022S\n\017"
      "known_map_field\030e \003(\0132:.protobuf_unittes"
      "t.TestEnumMapPlusExtra.KnownMapFieldEntr"
      "y\022W\n\021unknown_map_field\030f \003(\0132<.protobuf_"
      "unittest.TestEnumMapPlusExtra.UnknownMap"
      "FieldEntry\032_\n\022KnownMapFieldEntry\022\013\n\003key\030"
      "\001 \001(\005\0228\n\005value\030\002 \001(\0162).protobuf_unittest"
      ".Proto2MapEnumPlusExtra:\0028\001\032a\n\024UnknownMa"
      "pFieldEntry\022\013\n\003key\030\001 \001(\005\0228\n\005value\030\002 \001(\0162"
      ").protobuf_unittest.Proto2MapEnumPlusExt"
      "ra:\0028\001\"\307\001\n\021TestImportEnumMap\022P\n\017import_e"
      "num_amp\030\001 \003(\01327.protobuf_unittest.TestIm"
      "portEnumMap.ImportEnumAmpEntry\032`\n\022Import"
      "EnumAmpEntry\022\013\n\003key\030\001 \001(\005\0229\n\005value\030\002 \001(\016"
      "2*.protobuf_unittest_import.ImportEnumFo"
      "rMap:\0028\001\"m\n\rTestIntIntMap\0222\n\001m\030\001 \003(\0132\'.p"
      "rotobuf_unittest.TestIntIntMap.MEntry\032(\n"
      "\006MEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\005:\0028\001\""
      "\270\r\n\010TestMaps\0228\n\007m_int32\030\001 \003(\0132\'.protobuf"
      "_unittest.TestMaps.MInt32Entry\0228\n\007m_int6"
      "4\030\002 \003(\0132\'.protobuf_unittest.TestMaps.MIn"
      "t64Entry\022:\n\010m_uint32\030\003 \003(\0132(.protobuf_un"
      "ittest.TestMaps.MUint32Entry\022:\n\010m_uint64"
      "\030\004 \003(\0132(.protobuf_unittest.TestMaps.MUin"
      "t64Entry\022:\n\010m_sint32\030\005 \003(\0132(.protobuf_un"
      "ittest.TestMaps.MSint32Entry\022:\n\010m_sint64"
      "\030\006 \003(\0132(.protobuf_unittest.TestMaps.MSin"
      "t64Entry\022<\n\tm_fixed32\030\007 \003(\0132).protobuf_u"
      "nittest.TestMaps.MFixed32Entry\022<\n\tm_fixe"
      "d64\030\010 \003(\0132).protobuf_unittest.TestMaps.M"
      "Fixed64Entry\022>\n\nm_sfixed32\030\t \003(\0132*.proto"
      "buf_unittest.TestMaps.MSfixed32Entry\022>\n\n"
      "m_sfixed64\030\n \003(\0132*.protobuf_unittest.Tes"
      "tMaps.MSfixed64Entry\0226\n\006m_bool\030\013 \003(\0132&.p"
      "rotobuf_unittest.TestMaps.MBoolEntry\022:\n\010"
      "m_string\030\014 \003(\0132(.protobuf_unittest.TestM"
      "aps.MStringEntry\032O\n\013MInt32Entry\022\013\n\003key\030\001"
      " \001(\005\022/\n\005value\030\002 \001(\0132 .protobuf_unittest."
      "TestIntIntMap:\0028\001\032O\n\013MInt64Entry\022\013\n\003key\030"
      "\001 \001(\003\022/\n\005value\030\002 \001(\0132 .protobuf_unittest"
      ".TestIntIntMap:\0028\001\032P\n\014MUint32Entry\022\013\n\003ke"
      "y\030\001 \001(\r\022/\n\005value\030\002 \001(\0132 .protobuf_unitte"
      "st.TestIntIntMap:\0028\001\032P\n\014MUint64Entry\022\013\n\003"
      "key\030\001 \001(\004\022/\n\005value\030\002 \001(\0132 .protobuf_unit"
      "test.TestIntIntMap:\0028\001\032P\n\014MSint32Entry\022\013"
      "\n\003key\030\001 \001(\021\022/\n\005value\030\002 \001(\0132 .protobuf_un"
      "ittest.TestIntIntMap:\0028\001\032P\n\014MSint64Entry"
      "\022\013\n\003key\030\001 \001(\022\022/\n\005value\030\002 \001(\0132 .protobuf_"
      "unittest.TestIntIntMap:\0028\001\032Q\n\rMFixed32En"
      "try\022\013\n\003key\030\001 \001(\007\022/\n\005value\030\002 \001(\0132 .protob"
      "uf_unittest.TestIntIntMap:\0028\001\032Q\n\rMFixed6"
      "4Entry\022\013\n\003key\030\001 \001(\006\022/\n\005value\030\002 \001(\0132 .pro"
      "tobuf_unittest.TestIntIntMap:\0028\001\032R\n\016MSfi"
      "xed32Entry\022\013\n\003key\030\001 \001(\017\022/\n\005value\030\002 \001(\0132 "
      ".protobuf_unittest.TestIntIntMap:\0028\001\032R\n\016"
      "MSfixed64Entry\022\013\n\003key\030\001 \001(\020\022/\n\005value\030\002 \001"
      "(\0132 .protobuf_unittest.TestIntIntMap:\0028\001"
      "\032N\n\nMBoolEntry\022\013\n\003key\030\001 \001(\010\022/\n\005value\030\002 \001"
      "(\0132 .protobuf_unittest.TestIntIntMap:\0028\001"
      "\032P\n\014MStringEntry\022\013\n\003key\030\001 \001(\t\022/\n\005value\030\002"
      " \001(\0132 .protobuf_unittest.TestIntIntMap:\002"
      "8\001\"<\n\022TestSubmessageMaps\022&\n\001m\030\001 \001(\0132\033.pr"
      "otobuf_unittest.TestMaps*Z\n\rProto2MapEnu"
      "m\022\027\n\023PROTO2_MAP_ENUM_FOO\020\000\022\027\n\023PROTO2_MAP"
      "_ENUM_BAR\020\001\022\027\n\023PROTO2_MAP_ENUM_BAZ\020\002*\206\001\n"
      "\026Proto2MapEnumPlusExtra\022\031\n\025E_PROTO2_MAP_"
      "ENUM_FOO\020\000\022\031\n\025E_PROTO2_MAP_ENUM_BAR\020\001\022\031\n"
      "\025E_PROTO2_MAP_ENUM_BAZ\020\002\022\033\n\027E_PROTO2_MAP"
      "_ENUM_EXTRA\020\003B\003\370\001\001"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 3178);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "google/protobuf/map_proto2_unittest.proto", &protobuf_RegisterTypes);
  ::protobuf_google_2fprotobuf_2funittest_5fimport_2eproto::AddDescriptors();
}

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

const ::google::protobuf::EnumDescriptor* Proto2MapEnumPlusExtra_descriptor() {
  protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::file_level_enum_descriptors[1];
}
bool Proto2MapEnumPlusExtra_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}


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

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


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

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


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

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

TestEnumMap::TestEnumMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEnumMap)
}
TestEnumMap::TestEnumMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  known_map_field_(arena),
  unknown_map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestEnumMap)
}
TestEnumMap::TestEnumMap(const TestEnumMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  known_map_field_.MergeFrom(from.known_map_field_);
  unknown_map_field_.MergeFrom(from.unknown_map_field_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestEnumMap)
}

void TestEnumMap::SharedCtor() {
}

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

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

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

const TestEnumMap& TestEnumMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMap.base);
  return *internal_default_instance();
}


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

  known_map_field_.Clear();
  unknown_map_field_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestEnumMap::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestEnumMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .protobuf_unittest.Proto2MapEnum> known_map_field = 101;
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry(known_map_field_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::Proto2MapEnum_IsValid(*entry->mutable_value())) {
              (*mutable_known_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnum >(*entry->mutable_value());
            } else {
              mutable_unknown_fields()->AddLengthDelimited(101, data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.Proto2MapEnum> unknown_map_field = 102;
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry(unknown_map_field_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::Proto2MapEnum_IsValid(*entry->mutable_value())) {
              (*mutable_unknown_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnum >(*entry->mutable_value());
            } else {
              mutable_unknown_fields()->AddLengthDelimited(102, data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->known_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->known_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->unknown_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->unknown_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestEnumMap)
}

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

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

    if (deterministic &&
        this->known_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->known_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       101, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       101, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->unknown_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->unknown_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       102, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       102, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestEnumMap)
  return target;
}

size_t TestEnumMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestEnumMap)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // map<int32, .protobuf_unittest.Proto2MapEnum> known_map_field = 101;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->known_map_field_size());
  {
    ::std::unique_ptr<TestEnumMap_KnownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
        it = this->known_map_field().begin();
        it != this->known_map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(known_map_field_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.Proto2MapEnum> unknown_map_field = 102;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->unknown_map_field_size());
  {
    ::std::unique_ptr<TestEnumMap_UnknownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnum >::const_iterator
        it = this->unknown_map_field().begin();
        it != this->unknown_map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(unknown_map_field_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  known_map_field_.MergeFrom(from.known_map_field_);
  unknown_map_field_.MergeFrom(from.unknown_map_field_);
}

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

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

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

void TestEnumMap::Swap(TestEnumMap* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestEnumMap* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestEnumMap::UnsafeArenaSwap(TestEnumMap* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestEnumMap::InternalSwap(TestEnumMap* other) {
  using std::swap;
  known_map_field_.Swap(&other->known_map_field_);
  unknown_map_field_.Swap(&other->unknown_map_field_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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


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

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

TestEnumMapPlusExtra::TestEnumMapPlusExtra()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMapPlusExtra.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEnumMapPlusExtra)
}
TestEnumMapPlusExtra::TestEnumMapPlusExtra(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  known_map_field_(arena),
  unknown_map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMapPlusExtra.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestEnumMapPlusExtra)
}
TestEnumMapPlusExtra::TestEnumMapPlusExtra(const TestEnumMapPlusExtra& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  known_map_field_.MergeFrom(from.known_map_field_);
  unknown_map_field_.MergeFrom(from.unknown_map_field_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestEnumMapPlusExtra)
}

void TestEnumMapPlusExtra::SharedCtor() {
}

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

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

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

const TestEnumMapPlusExtra& TestEnumMapPlusExtra::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestEnumMapPlusExtra.base);
  return *internal_default_instance();
}


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

  known_map_field_.Clear();
  unknown_map_field_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestEnumMapPlusExtra::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestEnumMapPlusExtra)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> known_map_field = 101;
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry(known_map_field_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::Proto2MapEnumPlusExtra_IsValid(*entry->mutable_value())) {
              (*mutable_known_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumPlusExtra >(*entry->mutable_value());
            } else {
              mutable_unknown_fields()->AddLengthDelimited(101, data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> unknown_map_field = 102;
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry(unknown_map_field_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::Proto2MapEnumPlusExtra_IsValid(*entry->mutable_value())) {
              (*mutable_unknown_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumPlusExtra >(*entry->mutable_value());
            } else {
              mutable_unknown_fields()->AddLengthDelimited(102, data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->known_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->known_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->unknown_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->unknown_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestEnumMapPlusExtra)
}

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

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

    if (deterministic &&
        this->known_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->known_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       101, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->known_map_field().begin();
          it != this->known_map_field().end(); ++it) {
        entry.reset(known_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       101, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->unknown_map_field().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->unknown_map_field().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       102, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
          it = this->unknown_map_field().begin();
          it != this->unknown_map_field().end(); ++it) {
        entry.reset(unknown_map_field_.NewEnumEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       102, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestEnumMapPlusExtra)
  return target;
}

size_t TestEnumMapPlusExtra::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestEnumMapPlusExtra)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> known_map_field = 101;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->known_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
        it = this->known_map_field().begin();
        it != this->known_map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(known_map_field_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtra> unknown_map_field = 102;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->unknown_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtra >::const_iterator
        it = this->unknown_map_field().begin();
        it != this->unknown_map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(unknown_map_field_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  known_map_field_.MergeFrom(from.known_map_field_);
  unknown_map_field_.MergeFrom(from.unknown_map_field_);
}

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

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

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

void TestEnumMapPlusExtra::Swap(TestEnumMapPlusExtra* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestEnumMapPlusExtra* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestEnumMapPlusExtra::UnsafeArenaSwap(TestEnumMapPlusExtra* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestEnumMapPlusExtra::InternalSwap(TestEnumMapPlusExtra* other) {
  using std::swap;
  known_map_field_.Swap(&other->known_map_field_);
  unknown_map_field_.Swap(&other->unknown_map_field_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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


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

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

TestImportEnumMap::TestImportEnumMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestImportEnumMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestImportEnumMap)
}
TestImportEnumMap::TestImportEnumMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  import_enum_amp_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestImportEnumMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestImportEnumMap)
}
TestImportEnumMap::TestImportEnumMap(const TestImportEnumMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  import_enum_amp_.MergeFrom(from.import_enum_amp_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestImportEnumMap)
}

void TestImportEnumMap::SharedCtor() {
}

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

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

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

const TestImportEnumMap& TestImportEnumMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestImportEnumMap.base);
  return *internal_default_instance();
}


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

  import_enum_amp_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestImportEnumMap::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestImportEnumMap)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // map<int32, .protobuf_unittest_import.ImportEnumForMap> import_enum_amp = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          ::std::unique_ptr<TestImportEnumMap_ImportEnumAmpEntry_DoNotUse> entry(import_enum_amp_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest_import::ImportEnumForMap_IsValid(*entry->mutable_value())) {
              (*mutable_import_enum_amp())[entry->key()] =
                  static_cast< ::protobuf_unittest_import::ImportEnumForMap >(*entry->mutable_value());
            } else {
              mutable_unknown_fields()->AddLengthDelimited(1, data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestImportEnumMap)
}

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

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

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

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestImportEnumMap)
  return target;
}

size_t TestImportEnumMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestImportEnumMap)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // map<int32, .protobuf_unittest_import.ImportEnumForMap> import_enum_amp = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->import_enum_amp_size());
  {
    ::std::unique_ptr<TestImportEnumMap_ImportEnumAmpEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_import::ImportEnumForMap >::const_iterator
        it = this->import_enum_amp().begin();
        it != this->import_enum_amp().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(import_enum_amp_.NewEnumEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  import_enum_amp_.MergeFrom(from.import_enum_amp_);
}

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

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

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

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

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


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

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


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

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

TestIntIntMap::TestIntIntMap()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestIntIntMap)
}
TestIntIntMap::TestIntIntMap(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  m_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestIntIntMap)
}
TestIntIntMap::TestIntIntMap(const TestIntIntMap& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  m_.MergeFrom(from.m_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestIntIntMap)
}

void TestIntIntMap::SharedCtor() {
}

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

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

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

const TestIntIntMap& TestIntIntMap::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestIntIntMap.base);
  return *internal_default_instance();
}


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

  m_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestIntIntMap::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestIntIntMap)
  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> m = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestIntIntMap_MEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestIntIntMap_MEntry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&m_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestIntIntMap)
}

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

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

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestIntIntMap)
  return target;
}

size_t TestIntIntMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestIntIntMap)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // map<int32, int32> m = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->m_size());
  {
    ::std::unique_ptr<TestIntIntMap_MEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->m().begin();
        it != this->m().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(m_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  m_.MergeFrom(from.m_);
}

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

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

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

void TestMaps::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMaps::kMInt32FieldNumber;
const int TestMaps::kMInt64FieldNumber;
const int TestMaps::kMUint32FieldNumber;
const int TestMaps::kMUint64FieldNumber;
const int TestMaps::kMSint32FieldNumber;
const int TestMaps::kMSint64FieldNumber;
const int TestMaps::kMFixed32FieldNumber;
const int TestMaps::kMFixed64FieldNumber;
const int TestMaps::kMSfixed32FieldNumber;
const int TestMaps::kMSfixed64FieldNumber;
const int TestMaps::kMBoolFieldNumber;
const int TestMaps::kMStringFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMaps::TestMaps()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMaps)
}
TestMaps::TestMaps(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena),
  m_int32_(arena),
  m_int64_(arena),
  m_uint32_(arena),
  m_uint64_(arena),
  m_sint32_(arena),
  m_sint64_(arena),
  m_fixed32_(arena),
  m_fixed64_(arena),
  m_sfixed32_(arena),
  m_sfixed64_(arena),
  m_bool_(arena),
  m_string_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMaps)
}
TestMaps::TestMaps(const TestMaps& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  m_int32_.MergeFrom(from.m_int32_);
  m_int64_.MergeFrom(from.m_int64_);
  m_uint32_.MergeFrom(from.m_uint32_);
  m_uint64_.MergeFrom(from.m_uint64_);
  m_sint32_.MergeFrom(from.m_sint32_);
  m_sint64_.MergeFrom(from.m_sint64_);
  m_fixed32_.MergeFrom(from.m_fixed32_);
  m_fixed64_.MergeFrom(from.m_fixed64_);
  m_sfixed32_.MergeFrom(from.m_sfixed32_);
  m_sfixed64_.MergeFrom(from.m_sfixed64_);
  m_bool_.MergeFrom(from.m_bool_);
  m_string_.MergeFrom(from.m_string_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMaps)
}

void TestMaps::SharedCtor() {
}

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

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

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

const TestMaps& TestMaps::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestMaps.base);
  return *internal_default_instance();
}


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

  m_int32_.Clear();
  m_int64_.Clear();
  m_uint32_.Clear();
  m_uint64_.Clear();
  m_sint32_.Clear();
  m_sint64_.Clear();
  m_fixed32_.Clear();
  m_fixed64_.Clear();
  m_sfixed32_.Clear();
  m_sfixed64_.Clear();
  m_bool_.Clear();
  m_string_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

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

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

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

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

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

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

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

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

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

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

      // map<bool, .protobuf_unittest.TestIntIntMap> m_bool = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          TestMaps_MBoolEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMaps_MBoolEntry_DoNotUse,
              bool, ::protobuf_unittest::TestIntIntMap,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap > > parser(&m_bool_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          TestMaps_MStringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapField<
              TestMaps_MStringEntry_DoNotUse,
              ::std::string, ::protobuf_unittest::TestIntIntMap,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap > > parser(&m_string_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            parser.key().data(), static_cast<int>(parser.key().length()),
            ::google::protobuf::internal::WireFormat::PARSE,
            "protobuf_unittest.TestMaps.MStringEntry.key");
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->m_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_int64().begin();
          it != this->m_int64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MInt64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_int64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MInt64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_int64().begin();
          it != this->m_int64().end(); ++it) {
        entry.reset(m_int64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->m_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint32().begin();
          it != this->m_uint32().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MUint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_uint32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MUint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint32().begin();
          it != this->m_uint32().end(); ++it) {
        entry.reset(m_uint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->m_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint64().begin();
          it != this->m_uint64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MUint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_uint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MUint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint64().begin();
          it != this->m_uint64().end(); ++it) {
        entry.reset(m_uint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->m_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sint64().begin();
          it != this->m_sint64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MSint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_sint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MSint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sint64().begin();
          it != this->m_sint64().end(); ++it) {
        entry.reset(m_sint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->m_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed32().begin();
          it != this->m_fixed32().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MFixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_fixed32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MFixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed32().begin();
          it != this->m_fixed32().end(); ++it) {
        entry.reset(m_fixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->m_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed64().begin();
          it != this->m_fixed64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MFixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_fixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MFixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed64().begin();
          it != this->m_fixed64().end(); ++it) {
        entry.reset(m_fixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->m_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sfixed64().begin();
          it != this->m_sfixed64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MSfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_sfixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MSfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sfixed64().begin();
          it != this->m_sfixed64().end(); ++it) {
        entry.reset(m_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

  // map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
  if (!this->m_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormat::SERIALIZE,
          "protobuf_unittest.TestMaps.MStringEntry.key");
      }
    };

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

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestMaps)
}

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

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

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

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

    if (deterministic &&
        this->m_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_int64().begin();
          it != this->m_int64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MInt64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_int64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MInt64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_int64().begin();
          it != this->m_int64().end(); ++it) {
        entry.reset(m_int64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       2, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->m_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint32().begin();
          it != this->m_uint32().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MUint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_uint32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MUint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint32().begin();
          it != this->m_uint32().end(); ++it) {
        entry.reset(m_uint32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       3, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->m_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint64().begin();
          it != this->m_uint64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MUint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_uint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MUint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_uint64().begin();
          it != this->m_uint64().end(); ++it) {
        entry.reset(m_uint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       4, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (deterministic &&
        this->m_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sint64().begin();
          it != this->m_sint64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MSint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_sint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MSint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sint64().begin();
          it != this->m_sint64().end(); ++it) {
        entry.reset(m_sint64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       6, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->m_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed32().begin();
          it != this->m_fixed32().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MFixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_fixed32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MFixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed32().begin();
          it != this->m_fixed32().end(); ++it) {
        entry.reset(m_fixed32_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       7, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (deterministic &&
        this->m_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed64().begin();
          it != this->m_fixed64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MFixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_fixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MFixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_fixed64().begin();
          it != this->m_fixed64().end(); ++it) {
        entry.reset(m_fixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       8, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (deterministic &&
        this->m_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->m_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sfixed64().begin();
          it != this->m_sfixed64().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestMaps_MSfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(m_sfixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMaps_MSfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::protobuf_unittest::TestIntIntMap >::const_iterator
          it = this->m_sfixed64().begin();
          it != this->m_sfixed64().end(); ++it) {
        entry.reset(m_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        target = ::google::protobuf::internal::WireFormatLite::
                   InternalWriteMessageNoVirtualToArray(
                       10, *entry, deterministic, target);
;
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

  // map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
  if (!this->m_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
          p->first.data(), static_cast<int>(p->first.length()),
          ::google::protobuf::internal::WireFormat::SERIALIZE,
          "protobuf_unittest.TestMaps.MStringEntry.key");
      }
    };

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

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestMaps)
  return target;
}

size_t TestMaps::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestMaps)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // map<int32, .protobuf_unittest.TestIntIntMap> m_int32 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->m_int32_size());
  {
    ::std::unique_ptr<TestMaps_MInt32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestIntIntMap >::const_iterator
        it = this->m_int32().begin();
        it != this->m_int32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(m_int32_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

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

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

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

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

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

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

  // map<bool, .protobuf_unittest.TestIntIntMap> m_bool = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->m_bool_size());
  {
    ::std::unique_ptr<TestMaps_MBoolEntry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, ::protobuf_unittest::TestIntIntMap >::const_iterator
        it = this->m_bool().begin();
        it != this->m_bool().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(m_bool_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<string, .protobuf_unittest.TestIntIntMap> m_string = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->m_string_size());
  {
    ::std::unique_ptr<TestMaps_MStringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::protobuf_unittest::TestIntIntMap >::const_iterator
        it = this->m_string().begin();
        it != this->m_string().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(m_string_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

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

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

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

  m_int32_.MergeFrom(from.m_int32_);
  m_int64_.MergeFrom(from.m_int64_);
  m_uint32_.MergeFrom(from.m_uint32_);
  m_uint64_.MergeFrom(from.m_uint64_);
  m_sint32_.MergeFrom(from.m_sint32_);
  m_sint64_.MergeFrom(from.m_sint64_);
  m_fixed32_.MergeFrom(from.m_fixed32_);
  m_fixed64_.MergeFrom(from.m_fixed64_);
  m_sfixed32_.MergeFrom(from.m_sfixed32_);
  m_sfixed64_.MergeFrom(from.m_sfixed64_);
  m_bool_.MergeFrom(from.m_bool_);
  m_string_.MergeFrom(from.m_string_);
}

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

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

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

void TestMaps::Swap(TestMaps* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestMaps* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestMaps::UnsafeArenaSwap(TestMaps* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestMaps::InternalSwap(TestMaps* other) {
  using std::swap;
  m_int32_.Swap(&other->m_int32_);
  m_int64_.Swap(&other->m_int64_);
  m_uint32_.Swap(&other->m_uint32_);
  m_uint64_.Swap(&other->m_uint64_);
  m_sint32_.Swap(&other->m_sint32_);
  m_sint64_.Swap(&other->m_sint64_);
  m_fixed32_.Swap(&other->m_fixed32_);
  m_fixed64_.Swap(&other->m_fixed64_);
  m_sfixed32_.Swap(&other->m_sfixed32_);
  m_sfixed64_.Swap(&other->m_sfixed64_);
  m_bool_.Swap(&other->m_bool_);
  m_string_.Swap(&other->m_string_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void TestSubmessageMaps::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestSubmessageMaps_default_instance_._instance.get_mutable()->m_ = const_cast< ::protobuf_unittest::TestMaps*>(
      ::protobuf_unittest::TestMaps::internal_default_instance());
}
void TestSubmessageMaps::unsafe_arena_set_allocated_m(
    ::protobuf_unittest::TestMaps* m) {
  if (GetArenaNoVirtual() == NULL) {
    delete m_;
  }
  m_ = m;
  if (m) {
    set_has_m();
  } else {
    clear_has_m();
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:protobuf_unittest.TestSubmessageMaps.m)
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestSubmessageMaps::kMFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestSubmessageMaps::TestSubmessageMaps()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestSubmessageMaps.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestSubmessageMaps)
}
TestSubmessageMaps::TestSubmessageMaps(::google::protobuf::Arena* arena)
  : ::google::protobuf::Message(),
  _internal_metadata_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestSubmessageMaps.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestSubmessageMaps)
}
TestSubmessageMaps::TestSubmessageMaps(const TestSubmessageMaps& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_m()) {
    m_ = new ::protobuf_unittest::TestMaps(*from.m_);
  } else {
    m_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestSubmessageMaps)
}

void TestSubmessageMaps::SharedCtor() {
  m_ = NULL;
}

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

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

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

const TestSubmessageMaps& TestSubmessageMaps::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5fproto2_5funittest_2eproto::scc_info_TestSubmessageMaps.base);
  return *internal_default_instance();
}


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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(m_ != NULL);
    m_->Clear();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestSubmessageMaps::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestSubmessageMaps)
  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)) {
      // optional .protobuf_unittest.TestMaps m = 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_m()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestMaps m = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_m(), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestSubmessageMaps)
}

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestMaps m = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_m(), deterministic, target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:protobuf_unittest.TestSubmessageMaps)
  return target;
}

size_t TestSubmessageMaps::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestSubmessageMaps)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // optional .protobuf_unittest.TestMaps m = 1;
  if (has_m()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *m_);
  }

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

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

void TestSubmessageMaps::MergeFrom(const TestSubmessageMaps& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestSubmessageMaps)
  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_m()) {
    mutable_m()->::protobuf_unittest::TestMaps::MergeFrom(from.m());
  }
}

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMap_KnownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMap_UnknownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtra_KnownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtra_UnknownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtra* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtra >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtra >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestImportEnumMap_ImportEnumAmpEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestImportEnumMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestImportEnumMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestImportEnumMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestIntIntMap_MEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestIntIntMap* Arena::CreateMaybeMessage< ::protobuf_unittest::TestIntIntMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestIntIntMap >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MInt32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MInt64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MUint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MUint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MSint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MSint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MFixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MFixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MSfixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MSfixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MBoolEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps_MStringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMaps* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMaps >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMaps >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestSubmessageMaps* Arena::CreateMaybeMessage< ::protobuf_unittest::TestSubmessageMaps >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestSubmessageMaps >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
