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

#include <google/protobuf/map_lite_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/io/zero_copy_stream_impl_lite.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_5flite_5funittest_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ForeignMessageArenaLite;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapBoolBoolEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt32BytesEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt32DoubleEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt32EnumEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt32FloatEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt32Int32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapInt64Int64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapSint32Sint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapSint64Sint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapStringStringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapUint32Uint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestArenaMapLite_MapUint64Uint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapLite_KnownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapLite_UnknownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapBoolBoolEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapFixed32Fixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapFixed64Fixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt32BytesEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt32DoubleEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt32EnumEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt32FloatEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt32Int32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapInt64Int64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapSint32Sint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapSint64Sint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapStringStringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapUint32Uint32Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_MapUint64Uint64Entry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestMapLite_TeboringEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestRequiredLite;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMapLite_MapInt32ForeignMessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMapLite_MapInt32MessageEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMapLite_MapFieldEntry_DoNotUse;
}  // namespace protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto
namespace protobuf_google_2fprotobuf_2funittest_5flite_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ForeignMessageLite;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_TestAllTypesLite;
}  // namespace protobuf_google_2fprotobuf_2funittest_5flite_2eproto
namespace protobuf_google_2fprotobuf_2funittest_5fno_5farena_5flite_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fno_5farena_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ForeignMessageLite;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fno_5farena_5flite_2eproto
namespace protobuf_unittest {
class TestMapLite_MapInt32Int32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32Int32Entry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32Int32Entry_DoNotUse_default_instance_;
class TestMapLite_MapInt64Int64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt64Int64Entry_DoNotUse>
      _instance;
} _TestMapLite_MapInt64Int64Entry_DoNotUse_default_instance_;
class TestMapLite_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapUint32Uint32Entry_DoNotUse>
      _instance;
} _TestMapLite_MapUint32Uint32Entry_DoNotUse_default_instance_;
class TestMapLite_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapUint64Uint64Entry_DoNotUse>
      _instance;
} _TestMapLite_MapUint64Uint64Entry_DoNotUse_default_instance_;
class TestMapLite_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapSint32Sint32Entry_DoNotUse>
      _instance;
} _TestMapLite_MapSint32Sint32Entry_DoNotUse_default_instance_;
class TestMapLite_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapSint64Sint64Entry_DoNotUse>
      _instance;
} _TestMapLite_MapSint64Sint64Entry_DoNotUse_default_instance_;
class TestMapLite_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapFixed32Fixed32Entry_DoNotUse>
      _instance;
} _TestMapLite_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
class TestMapLite_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapFixed64Fixed64Entry_DoNotUse>
      _instance;
} _TestMapLite_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
class TestMapLite_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse>
      _instance;
} _TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
class TestMapLite_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse>
      _instance;
} _TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
class TestMapLite_MapInt32FloatEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32FloatEntry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32FloatEntry_DoNotUse_default_instance_;
class TestMapLite_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32DoubleEntry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32DoubleEntry_DoNotUse_default_instance_;
class TestMapLite_MapBoolBoolEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapBoolBoolEntry_DoNotUse>
      _instance;
} _TestMapLite_MapBoolBoolEntry_DoNotUse_default_instance_;
class TestMapLite_MapStringStringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapStringStringEntry_DoNotUse>
      _instance;
} _TestMapLite_MapStringStringEntry_DoNotUse_default_instance_;
class TestMapLite_MapInt32BytesEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32BytesEntry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32BytesEntry_DoNotUse_default_instance_;
class TestMapLite_MapInt32EnumEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32EnumEntry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32EnumEntry_DoNotUse_default_instance_;
class TestMapLite_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_MapInt32ForeignMessageEntry_DoNotUse>
      _instance;
} _TestMapLite_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
class TestMapLite_TeboringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite_TeboringEntry_DoNotUse>
      _instance;
} _TestMapLite_TeboringEntry_DoNotUse_default_instance_;
class TestMapLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMapLite>
      _instance;
} _TestMapLite_default_instance_;
class TestArenaMapLite_MapInt32Int32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32Int32Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32Int32Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt64Int64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt64Int64Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt64Int64Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapUint32Uint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapUint32Uint32Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapUint32Uint32Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapUint64Uint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapUint64Uint64Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapUint64Uint64Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapSint32Sint32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapSint32Sint32Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapSint32Sint32Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapSint64Sint64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapSint64Sint64Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapSint64Sint64Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32FloatEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32FloatEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32FloatEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32DoubleEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32DoubleEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32DoubleEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapBoolBoolEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapBoolBoolEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapBoolBoolEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapStringStringEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapStringStringEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapStringStringEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32BytesEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32BytesEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32BytesEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32EnumEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32EnumEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32EnumEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
class TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse>
      _instance;
} _TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_;
class TestArenaMapLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestArenaMapLite>
      _instance;
} _TestArenaMapLite_default_instance_;
class TestRequiredMessageMapLite_MapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRequiredMessageMapLite_MapFieldEntry_DoNotUse>
      _instance;
} _TestRequiredMessageMapLite_MapFieldEntry_DoNotUse_default_instance_;
class TestRequiredMessageMapLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRequiredMessageMapLite>
      _instance;
} _TestRequiredMessageMapLite_default_instance_;
class TestEnumMapLite_KnownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapLite_KnownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapLite_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapLite_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapLite_UnknownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapLite_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapLite>
      _instance;
} _TestEnumMapLite_default_instance_;
class TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse>
      _instance;
} _TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse_default_instance_;
class TestEnumMapPlusExtraLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEnumMapPlusExtraLite>
      _instance;
} _TestEnumMapPlusExtraLite_default_instance_;
class TestMessageMapLite_MapInt32MessageEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMessageMapLite_MapInt32MessageEntry_DoNotUse>
      _instance;
} _TestMessageMapLite_MapInt32MessageEntry_DoNotUse_default_instance_;
class TestMessageMapLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestMessageMapLite>
      _instance;
} _TestMessageMapLite_default_instance_;
class TestRequiredLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestRequiredLite>
      _instance;
} _TestRequiredLite_default_instance_;
class ForeignMessageArenaLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<ForeignMessageArenaLite>
      _instance;
} _ForeignMessageArenaLite_default_instance_;
}  // namespace protobuf_unittest
namespace protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto {
static void InitDefaultsTestMapLite_MapInt32Int32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32Int32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32Int32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32Int32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt64Int64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt64Int64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt64Int64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt64Int64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapUint32Uint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapUint32Uint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapUint32Uint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapUint32Uint32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapUint64Uint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapUint64Uint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapUint64Uint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapUint64Uint64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapSint32Sint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapSint32Sint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapSint32Sint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapSint32Sint32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapSint64Sint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapSint64Sint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapSint64Sint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapSint64Sint64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapFixed32Fixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapFixed32Fixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapFixed32Fixed32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapFixed64Fixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapFixed64Fixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapFixed64Fixed64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapSfixed32Sfixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapSfixed64Sfixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt32FloatEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32FloatEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32FloatEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32FloatEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt32DoubleEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32DoubleEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32DoubleEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32DoubleEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapBoolBoolEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapBoolBoolEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapBoolBoolEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapBoolBoolEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapStringStringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapStringStringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapStringStringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapStringStringEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt32BytesEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32BytesEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32BytesEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32BytesEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt32EnumEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32EnumEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32EnumEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32EnumEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite_MapInt32ForeignMessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMapLite_MapInt32ForeignMessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMapLite_MapInt32ForeignMessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_ForeignMessageLite.base,}};

static void InitDefaultsTestMapLite_TeboringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMapLite_TeboringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMapLite_TeboringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMapLite_TeboringEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestMapLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<18> scc_info_TestMapLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsTestMapLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32Int32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt64Int64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapUint32Uint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapUint64Uint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapSint32Sint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapSint64Sint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapFixed32Fixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapFixed64Fixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32FloatEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32DoubleEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapBoolBoolEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapStringStringEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32BytesEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32EnumEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_MapInt32ForeignMessageEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite_TeboringEntry_DoNotUse.base,}};

static void InitDefaultsTestArenaMapLite_MapInt32Int32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32Int32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32Int32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32Int32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt64Int64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt64Int64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt64Int64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt64Int64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapUint32Uint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapUint32Uint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapUint64Uint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapUint64Uint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapSint32Sint32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapSint32Sint32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapSint64Sint64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapSint64Sint64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt32FloatEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32FloatEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32FloatEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32FloatEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt32DoubleEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32DoubleEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapBoolBoolEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapBoolBoolEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapBoolBoolEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapBoolBoolEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapStringStringEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapStringStringEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapStringStringEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapStringStringEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt32BytesEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32BytesEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32BytesEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32BytesEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt32EnumEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32EnumEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32EnumEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32EnumEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_ForeignMessageArenaLite.base,}};

static void InitDefaultsTestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse();
  }
  ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_5fno_5farena_5flite_2eproto::scc_info_ForeignMessageLite.base,}};

static void InitDefaultsTestArenaMapLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<18> scc_info_TestArenaMapLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 18, InitDefaultsTestArenaMapLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32Int32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt64Int64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapUint32Uint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapUint64Uint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapSint32Sint32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapSint64Sint64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32FloatEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32DoubleEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapBoolBoolEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapStringStringEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32BytesEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32EnumEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse.base,}};

static void InitDefaultsTestRequiredMessageMapLite_MapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestRequiredMessageMapLite_MapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMapLite_MapFieldEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestRequiredMessageMapLite_MapFieldEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredLite.base,}};

static void InitDefaultsTestRequiredMessageMapLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestRequiredMessageMapLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestRequiredMessageMapLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredMessageMapLite_MapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestEnumMapLite_KnownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapLite_KnownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapLite_KnownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapLite_KnownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapLite_UnknownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapLite_UnknownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<2> scc_info_TestEnumMapLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTestEnumMapLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapLite_KnownMapFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapLite_UnknownMapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse();
  }
  ::protobuf_unittest::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestEnumMapPlusExtraLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<2> scc_info_TestEnumMapPlusExtraLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTestEnumMapPlusExtraLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse.base,}};

static void InitDefaultsTestMessageMapLite_MapInt32MessageEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestMessageMapLite_MapInt32MessageEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestMessageMapLite_MapInt32MessageEntry_DoNotUse();
  }
  ::protobuf_unittest::TestMessageMapLite_MapInt32MessageEntry_DoNotUse::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMapLite_MapInt32MessageEntry_DoNotUse =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMessageMapLite_MapInt32MessageEntry_DoNotUse}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base,}};

static void InitDefaultsTestMessageMapLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<1> scc_info_TestMessageMapLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTestMessageMapLite}, {
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMessageMapLite_MapInt32MessageEntry_DoNotUse.base,}};

static void InitDefaultsTestRequiredLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsForeignMessageArenaLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32Int32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt64Int64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapUint32Uint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapUint64Uint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapSint32Sint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapSint64Sint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapFixed32Fixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapFixed64Fixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32FloatEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32DoubleEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapBoolBoolEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapStringStringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32BytesEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32EnumEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_MapInt32ForeignMessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite_TeboringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMapLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32Int32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt64Int64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapUint32Uint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapUint64Uint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapSint32Sint32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapSint64Sint64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32FloatEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32DoubleEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapBoolBoolEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapStringStringEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32BytesEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32EnumEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestArenaMapLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRequiredMessageMapLite_MapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRequiredMessageMapLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapLite_KnownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapLite_UnknownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEnumMapPlusExtraLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMessageMapLite_MapInt32MessageEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestMessageMapLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestRequiredLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_ForeignMessageArenaLite.base);
}

}  // namespace protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto
namespace protobuf_unittest {
bool Proto2MapEnumLite_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

bool Proto2MapEnumPlusExtraLite_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool MapEnumLite_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}


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

TestMapLite_MapInt32Int32Entry_DoNotUse::TestMapLite_MapInt32Int32Entry_DoNotUse() {}
TestMapLite_MapInt32Int32Entry_DoNotUse::TestMapLite_MapInt32Int32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32Int32Entry_DoNotUse::MergeFrom(const TestMapLite_MapInt32Int32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt64Int64Entry_DoNotUse::TestMapLite_MapInt64Int64Entry_DoNotUse() {}
TestMapLite_MapInt64Int64Entry_DoNotUse::TestMapLite_MapInt64Int64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt64Int64Entry_DoNotUse::MergeFrom(const TestMapLite_MapInt64Int64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapUint32Uint32Entry_DoNotUse::TestMapLite_MapUint32Uint32Entry_DoNotUse() {}
TestMapLite_MapUint32Uint32Entry_DoNotUse::TestMapLite_MapUint32Uint32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapUint32Uint32Entry_DoNotUse::MergeFrom(const TestMapLite_MapUint32Uint32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapUint64Uint64Entry_DoNotUse::TestMapLite_MapUint64Uint64Entry_DoNotUse() {}
TestMapLite_MapUint64Uint64Entry_DoNotUse::TestMapLite_MapUint64Uint64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapUint64Uint64Entry_DoNotUse::MergeFrom(const TestMapLite_MapUint64Uint64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapSint32Sint32Entry_DoNotUse::TestMapLite_MapSint32Sint32Entry_DoNotUse() {}
TestMapLite_MapSint32Sint32Entry_DoNotUse::TestMapLite_MapSint32Sint32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapSint32Sint32Entry_DoNotUse::MergeFrom(const TestMapLite_MapSint32Sint32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapSint64Sint64Entry_DoNotUse::TestMapLite_MapSint64Sint64Entry_DoNotUse() {}
TestMapLite_MapSint64Sint64Entry_DoNotUse::TestMapLite_MapSint64Sint64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapSint64Sint64Entry_DoNotUse::MergeFrom(const TestMapLite_MapSint64Sint64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapFixed32Fixed32Entry_DoNotUse::TestMapLite_MapFixed32Fixed32Entry_DoNotUse() {}
TestMapLite_MapFixed32Fixed32Entry_DoNotUse::TestMapLite_MapFixed32Fixed32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapFixed32Fixed32Entry_DoNotUse::MergeFrom(const TestMapLite_MapFixed32Fixed32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapFixed64Fixed64Entry_DoNotUse::TestMapLite_MapFixed64Fixed64Entry_DoNotUse() {}
TestMapLite_MapFixed64Fixed64Entry_DoNotUse::TestMapLite_MapFixed64Fixed64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapFixed64Fixed64Entry_DoNotUse::MergeFrom(const TestMapLite_MapFixed64Fixed64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse() {}
TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse::MergeFrom(const TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse() {}
TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse::MergeFrom(const TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt32FloatEntry_DoNotUse::TestMapLite_MapInt32FloatEntry_DoNotUse() {}
TestMapLite_MapInt32FloatEntry_DoNotUse::TestMapLite_MapInt32FloatEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32FloatEntry_DoNotUse::MergeFrom(const TestMapLite_MapInt32FloatEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt32DoubleEntry_DoNotUse::TestMapLite_MapInt32DoubleEntry_DoNotUse() {}
TestMapLite_MapInt32DoubleEntry_DoNotUse::TestMapLite_MapInt32DoubleEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32DoubleEntry_DoNotUse::MergeFrom(const TestMapLite_MapInt32DoubleEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapBoolBoolEntry_DoNotUse::TestMapLite_MapBoolBoolEntry_DoNotUse() {}
TestMapLite_MapBoolBoolEntry_DoNotUse::TestMapLite_MapBoolBoolEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapBoolBoolEntry_DoNotUse::MergeFrom(const TestMapLite_MapBoolBoolEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapStringStringEntry_DoNotUse::TestMapLite_MapStringStringEntry_DoNotUse() {}
TestMapLite_MapStringStringEntry_DoNotUse::TestMapLite_MapStringStringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapStringStringEntry_DoNotUse::MergeFrom(const TestMapLite_MapStringStringEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt32BytesEntry_DoNotUse::TestMapLite_MapInt32BytesEntry_DoNotUse() {}
TestMapLite_MapInt32BytesEntry_DoNotUse::TestMapLite_MapInt32BytesEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32BytesEntry_DoNotUse::MergeFrom(const TestMapLite_MapInt32BytesEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt32EnumEntry_DoNotUse::TestMapLite_MapInt32EnumEntry_DoNotUse() {}
TestMapLite_MapInt32EnumEntry_DoNotUse::TestMapLite_MapInt32EnumEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32EnumEntry_DoNotUse::MergeFrom(const TestMapLite_MapInt32EnumEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_MapInt32ForeignMessageEntry_DoNotUse::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse() {}
TestMapLite_MapInt32ForeignMessageEntry_DoNotUse::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_MapInt32ForeignMessageEntry_DoNotUse::MergeFrom(const TestMapLite_MapInt32ForeignMessageEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestMapLite_TeboringEntry_DoNotUse::TestMapLite_TeboringEntry_DoNotUse() {}
TestMapLite_TeboringEntry_DoNotUse::TestMapLite_TeboringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMapLite_TeboringEntry_DoNotUse::MergeFrom(const TestMapLite_TeboringEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

void TestMapLite::InitAsDefaultInstance() {
}
void TestMapLite::clear_map_int32_foreign_message() {
  map_int32_foreign_message_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMapLite::kMapInt32Int32FieldNumber;
const int TestMapLite::kMapInt64Int64FieldNumber;
const int TestMapLite::kMapUint32Uint32FieldNumber;
const int TestMapLite::kMapUint64Uint64FieldNumber;
const int TestMapLite::kMapSint32Sint32FieldNumber;
const int TestMapLite::kMapSint64Sint64FieldNumber;
const int TestMapLite::kMapFixed32Fixed32FieldNumber;
const int TestMapLite::kMapFixed64Fixed64FieldNumber;
const int TestMapLite::kMapSfixed32Sfixed32FieldNumber;
const int TestMapLite::kMapSfixed64Sfixed64FieldNumber;
const int TestMapLite::kMapInt32FloatFieldNumber;
const int TestMapLite::kMapInt32DoubleFieldNumber;
const int TestMapLite::kMapBoolBoolFieldNumber;
const int TestMapLite::kMapStringStringFieldNumber;
const int TestMapLite::kMapInt32BytesFieldNumber;
const int TestMapLite::kMapInt32EnumFieldNumber;
const int TestMapLite::kMapInt32ForeignMessageFieldNumber;
const int TestMapLite::kTeboringFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMapLite::TestMapLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMapLite)
}
TestMapLite::TestMapLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  map_int32_int32_(arena),
  map_int64_int64_(arena),
  map_uint32_uint32_(arena),
  map_uint64_uint64_(arena),
  map_sint32_sint32_(arena),
  map_sint64_sint64_(arena),
  map_fixed32_fixed32_(arena),
  map_fixed64_fixed64_(arena),
  map_sfixed32_sfixed32_(arena),
  map_sfixed64_sfixed64_(arena),
  map_int32_float_(arena),
  map_int32_double_(arena),
  map_bool_bool_(arena),
  map_string_string_(arena),
  map_int32_bytes_(arena),
  map_int32_enum_(arena),
  map_int32_foreign_message_(arena),
  teboring_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMapLite)
}
TestMapLite::TestMapLite(const TestMapLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  teboring_.MergeFrom(from.teboring_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMapLite)
}

void TestMapLite::SharedCtor() {
}

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

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

void TestMapLite::ArenaDtor(void* object) {
  TestMapLite* _this = reinterpret_cast< TestMapLite* >(object);
  (void)_this;
}
void TestMapLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestMapLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestMapLite& TestMapLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMapLite.base);
  return *internal_default_instance();
}


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

  map_int32_int32_.Clear();
  map_int64_int64_.Clear();
  map_uint32_uint32_.Clear();
  map_uint64_uint64_.Clear();
  map_sint32_sint32_.Clear();
  map_sint64_sint64_.Clear();
  map_fixed32_fixed32_.Clear();
  map_fixed64_fixed64_.Clear();
  map_sfixed32_sfixed32_.Clear();
  map_sfixed64_sfixed64_.Clear();
  map_int32_float_.Clear();
  map_int32_double_.Clear();
  map_bool_bool_.Clear();
  map_string_string_.Clear();
  map_int32_bytes_.Clear();
  map_int32_enum_.Clear();
  map_int32_foreign_message_.Clear();
  teboring_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestMapLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestMapLite)
  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, int32> map_int32_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestMapLite_MapInt32Int32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt32Int32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_int32_int32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int64, int64> map_int64_int64 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          TestMapLite_MapInt64Int64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt64Int64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_int64_int64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint32, uint32> map_uint32_uint32 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          TestMapLite_MapUint32Uint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapUint32Uint32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_uint32_uint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint64, uint64> map_uint64_uint64 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          TestMapLite_MapUint64Uint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapUint64Uint64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_uint64_uint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint32, sint32> map_sint32_sint32 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          TestMapLite_MapSint32Sint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapSint32Sint32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sint32_sint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint64, sint64> map_sint64_sint64 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          TestMapLite_MapSint64Sint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapSint64Sint64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sint64_sint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          TestMapLite_MapFixed32Fixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapFixed32Fixed32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_fixed32_fixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          TestMapLite_MapFixed64Fixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapFixed64Fixed64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_fixed64_fixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sfixed32_sfixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sfixed64_sfixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, float> map_int32_float = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          TestMapLite_MapInt32FloatEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt32FloatEntry_DoNotUse,
              ::google::protobuf::int32, float,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, float > > parser(&map_int32_float_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, double> map_int32_double = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          TestMapLite_MapInt32DoubleEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt32DoubleEntry_DoNotUse,
              ::google::protobuf::int32, double,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, double > > parser(&map_int32_double_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<bool, bool> map_bool_bool = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          TestMapLite_MapBoolBoolEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapBoolBoolEntry_DoNotUse,
              bool, bool,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              0 >,
            ::google::protobuf::Map< bool, bool > > parser(&map_bool_bool_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> map_string_string = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          TestMapLite_MapStringStringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapStringStringEntry_DoNotUse,
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&map_string_string_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, bytes> map_int32_bytes = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          TestMapLite_MapInt32BytesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt32BytesEntry_DoNotUse,
              ::google::protobuf::int32, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map_int32_bytes_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.MapEnumLite> map_int32_enum = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          ::std::unique_ptr<TestMapLite_MapInt32EnumEntry_DoNotUse> entry(map_int32_enum_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::MapEnumLite_IsValid(*entry->mutable_value())) {
              (*mutable_map_int32_enum())[entry->key()] =
                  static_cast< ::protobuf_unittest::MapEnumLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(130u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.ForeignMessageLite> map_int32_foreign_message = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          TestMapLite_MapInt32ForeignMessageEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_MapInt32ForeignMessageEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageLite,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageLite > > parser(&map_int32_foreign_message_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, int32> teboring = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          TestMapLite_TeboringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMapLite_TeboringEntry_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(&teboring_);
          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::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestMapLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestMapLite)
  return false;
#undef DO_
}

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

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_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<TestMapLite_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_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<TestMapLite_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_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<TestMapLite_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_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<TestMapLite_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_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<TestMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_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<TestMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_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<TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_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<TestMapLite_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_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<TestMapLite_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestMapLite_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

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

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

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

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

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

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

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestMapLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, int32> map_int32_int32 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_int32_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32Int32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_int32_int32().begin();
        it != this->map_int32_int32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_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, int64> map_int64_int64 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int64_int64_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt64Int64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_int64_int64().begin();
        it != this->map_int64_int64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int64_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, uint32> map_uint32_uint32 = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint32_uint32_size());
  {
    ::std::unique_ptr<TestMapLite_MapUint32Uint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_uint32_uint32().begin();
        it != this->map_uint32_uint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint32_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, uint64> map_uint64_uint64 = 4;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint64_uint64_size());
  {
    ::std::unique_ptr<TestMapLite_MapUint64Uint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_uint64_uint64().begin();
        it != this->map_uint64_uint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint64_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, sint32> map_sint32_sint32 = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint32_sint32_size());
  {
    ::std::unique_ptr<TestMapLite_MapSint32Sint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sint32_sint32().begin();
        it != this->map_sint32_sint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint32_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, sint64> map_sint64_sint64 = 6;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint64_sint64_size());
  {
    ::std::unique_ptr<TestMapLite_MapSint64Sint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sint64_sint64().begin();
        it != this->map_sint64_sint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint64_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, fixed32> map_fixed32_fixed32 = 7;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed32_fixed32_size());
  {
    ::std::unique_ptr<TestMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_fixed32_fixed32().begin();
        it != this->map_fixed32_fixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed32_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, fixed64> map_fixed64_fixed64 = 8;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed64_fixed64_size());
  {
    ::std::unique_ptr<TestMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_fixed64_fixed64().begin();
        it != this->map_fixed64_fixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed64_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, sfixed32> map_sfixed32_sfixed32 = 9;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed32_sfixed32_size());
  {
    ::std::unique_ptr<TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sfixed32_sfixed32().begin();
        it != this->map_sfixed32_sfixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed32_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, sfixed64> map_sfixed64_sfixed64 = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed64_sfixed64_size());
  {
    ::std::unique_ptr<TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sfixed64_sfixed64().begin();
        it != this->map_sfixed64_sfixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, float> map_int32_float = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_float_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32FloatEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
        it = this->map_int32_float().begin();
        it != this->map_int32_float().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_float_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, double> map_int32_double = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_double_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32DoubleEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
        it = this->map_int32_double().begin();
        it != this->map_int32_double().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_double_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<bool, bool> map_bool_bool = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_bool_bool_size());
  {
    ::std::unique_ptr<TestMapLite_MapBoolBoolEntry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, bool >::const_iterator
        it = this->map_bool_bool().begin();
        it != this->map_bool_bool().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_bool_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, string> map_string_string = 14;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_string_string_size());
  {
    ::std::unique_ptr<TestMapLite_MapStringStringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->map_string_string().begin();
        it != this->map_string_string().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_string_string_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, bytes> map_int32_bytes = 15;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_bytes_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32BytesEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
        it = this->map_int32_bytes().begin();
        it != this->map_int32_bytes().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_bytes_.NewEntryWrapper(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.MapEnumLite> map_int32_enum = 16;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_enum_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32EnumEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnumLite >::const_iterator
        it = this->map_int32_enum().begin();
        it != this->map_int32_enum().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_enum_.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.ForeignMessageLite> map_int32_foreign_message = 17;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_size());
  {
    ::std::unique_ptr<TestMapLite_MapInt32ForeignMessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageLite >::const_iterator
        it = this->map_int32_foreign_message().begin();
        it != this->map_int32_foreign_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, int32> teboring = 18;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->teboring_size());
  {
    ::std::unique_ptr<TestMapLite_TeboringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->teboring().begin();
        it != this->teboring().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(teboring_.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 TestMapLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestMapLite*>(&from));
}

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

  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  teboring_.MergeFrom(from.teboring_);
}

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

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

void TestMapLite::Swap(TestMapLite* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestMapLite* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestMapLite::UnsafeArenaSwap(TestMapLite* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestMapLite::InternalSwap(TestMapLite* other) {
  using std::swap;
  map_int32_int32_.Swap(&other->map_int32_int32_);
  map_int64_int64_.Swap(&other->map_int64_int64_);
  map_uint32_uint32_.Swap(&other->map_uint32_uint32_);
  map_uint64_uint64_.Swap(&other->map_uint64_uint64_);
  map_sint32_sint32_.Swap(&other->map_sint32_sint32_);
  map_sint64_sint64_.Swap(&other->map_sint64_sint64_);
  map_fixed32_fixed32_.Swap(&other->map_fixed32_fixed32_);
  map_fixed64_fixed64_.Swap(&other->map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.Swap(&other->map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.Swap(&other->map_sfixed64_sfixed64_);
  map_int32_float_.Swap(&other->map_int32_float_);
  map_int32_double_.Swap(&other->map_int32_double_);
  map_bool_bool_.Swap(&other->map_bool_bool_);
  map_string_string_.Swap(&other->map_string_string_);
  map_int32_bytes_.Swap(&other->map_int32_bytes_);
  map_int32_enum_.Swap(&other->map_int32_enum_);
  map_int32_foreign_message_.Swap(&other->map_int32_foreign_message_);
  teboring_.Swap(&other->teboring_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestMapLite::GetTypeName() const {
  return "protobuf_unittest.TestMapLite";
}


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

TestArenaMapLite_MapInt32Int32Entry_DoNotUse::TestArenaMapLite_MapInt32Int32Entry_DoNotUse() {}
TestArenaMapLite_MapInt32Int32Entry_DoNotUse::TestArenaMapLite_MapInt32Int32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32Int32Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32Int32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt64Int64Entry_DoNotUse::TestArenaMapLite_MapInt64Int64Entry_DoNotUse() {}
TestArenaMapLite_MapInt64Int64Entry_DoNotUse::TestArenaMapLite_MapInt64Int64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt64Int64Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt64Int64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapUint32Uint32Entry_DoNotUse::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse() {}
TestArenaMapLite_MapUint32Uint32Entry_DoNotUse::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapUint32Uint32Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapUint32Uint32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapUint64Uint64Entry_DoNotUse::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse() {}
TestArenaMapLite_MapUint64Uint64Entry_DoNotUse::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapUint64Uint64Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapUint64Uint64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapSint32Sint32Entry_DoNotUse::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse() {}
TestArenaMapLite_MapSint32Sint32Entry_DoNotUse::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapSint32Sint32Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapSint32Sint32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapSint64Sint64Entry_DoNotUse::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse() {}
TestArenaMapLite_MapSint64Sint64Entry_DoNotUse::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapSint64Sint64Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapSint64Sint64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse() {}
TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse() {}
TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse() {}
TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse() {}
TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse::MergeFrom(const TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32FloatEntry_DoNotUse::TestArenaMapLite_MapInt32FloatEntry_DoNotUse() {}
TestArenaMapLite_MapInt32FloatEntry_DoNotUse::TestArenaMapLite_MapInt32FloatEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32FloatEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32FloatEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32DoubleEntry_DoNotUse::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse() {}
TestArenaMapLite_MapInt32DoubleEntry_DoNotUse::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32DoubleEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32DoubleEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapBoolBoolEntry_DoNotUse::TestArenaMapLite_MapBoolBoolEntry_DoNotUse() {}
TestArenaMapLite_MapBoolBoolEntry_DoNotUse::TestArenaMapLite_MapBoolBoolEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapBoolBoolEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapBoolBoolEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapStringStringEntry_DoNotUse::TestArenaMapLite_MapStringStringEntry_DoNotUse() {}
TestArenaMapLite_MapStringStringEntry_DoNotUse::TestArenaMapLite_MapStringStringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapStringStringEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapStringStringEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32BytesEntry_DoNotUse::TestArenaMapLite_MapInt32BytesEntry_DoNotUse() {}
TestArenaMapLite_MapInt32BytesEntry_DoNotUse::TestArenaMapLite_MapInt32BytesEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32BytesEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32BytesEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32EnumEntry_DoNotUse::TestArenaMapLite_MapInt32EnumEntry_DoNotUse() {}
TestArenaMapLite_MapInt32EnumEntry_DoNotUse::TestArenaMapLite_MapInt32EnumEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32EnumEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32EnumEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse() {}
TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse() {}
TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse::MergeFrom(const TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

void TestArenaMapLite::InitAsDefaultInstance() {
}
void TestArenaMapLite::clear_map_int32_foreign_message_no_arena() {
  map_int32_foreign_message_no_arena_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestArenaMapLite::kMapInt32Int32FieldNumber;
const int TestArenaMapLite::kMapInt64Int64FieldNumber;
const int TestArenaMapLite::kMapUint32Uint32FieldNumber;
const int TestArenaMapLite::kMapUint64Uint64FieldNumber;
const int TestArenaMapLite::kMapSint32Sint32FieldNumber;
const int TestArenaMapLite::kMapSint64Sint64FieldNumber;
const int TestArenaMapLite::kMapFixed32Fixed32FieldNumber;
const int TestArenaMapLite::kMapFixed64Fixed64FieldNumber;
const int TestArenaMapLite::kMapSfixed32Sfixed32FieldNumber;
const int TestArenaMapLite::kMapSfixed64Sfixed64FieldNumber;
const int TestArenaMapLite::kMapInt32FloatFieldNumber;
const int TestArenaMapLite::kMapInt32DoubleFieldNumber;
const int TestArenaMapLite::kMapBoolBoolFieldNumber;
const int TestArenaMapLite::kMapStringStringFieldNumber;
const int TestArenaMapLite::kMapInt32BytesFieldNumber;
const int TestArenaMapLite::kMapInt32EnumFieldNumber;
const int TestArenaMapLite::kMapInt32ForeignMessageFieldNumber;
const int TestArenaMapLite::kMapInt32ForeignMessageNoArenaFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestArenaMapLite::TestArenaMapLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestArenaMapLite)
}
TestArenaMapLite::TestArenaMapLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  map_int32_int32_(arena),
  map_int64_int64_(arena),
  map_uint32_uint32_(arena),
  map_uint64_uint64_(arena),
  map_sint32_sint32_(arena),
  map_sint64_sint64_(arena),
  map_fixed32_fixed32_(arena),
  map_fixed64_fixed64_(arena),
  map_sfixed32_sfixed32_(arena),
  map_sfixed64_sfixed64_(arena),
  map_int32_float_(arena),
  map_int32_double_(arena),
  map_bool_bool_(arena),
  map_string_string_(arena),
  map_int32_bytes_(arena),
  map_int32_enum_(arena),
  map_int32_foreign_message_(arena),
  map_int32_foreign_message_no_arena_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestArenaMapLite)
}
TestArenaMapLite::TestArenaMapLite(const TestArenaMapLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.MergeFrom(from.map_int32_foreign_message_no_arena_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestArenaMapLite)
}

void TestArenaMapLite::SharedCtor() {
}

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

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

void TestArenaMapLite::ArenaDtor(void* object) {
  TestArenaMapLite* _this = reinterpret_cast< TestArenaMapLite* >(object);
  (void)_this;
}
void TestArenaMapLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestArenaMapLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestArenaMapLite& TestArenaMapLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestArenaMapLite.base);
  return *internal_default_instance();
}


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

  map_int32_int32_.Clear();
  map_int64_int64_.Clear();
  map_uint32_uint32_.Clear();
  map_uint64_uint64_.Clear();
  map_sint32_sint32_.Clear();
  map_sint64_sint64_.Clear();
  map_fixed32_fixed32_.Clear();
  map_fixed64_fixed64_.Clear();
  map_sfixed32_sfixed32_.Clear();
  map_sfixed64_sfixed64_.Clear();
  map_int32_float_.Clear();
  map_int32_double_.Clear();
  map_bool_bool_.Clear();
  map_string_string_.Clear();
  map_int32_bytes_.Clear();
  map_int32_enum_.Clear();
  map_int32_foreign_message_.Clear();
  map_int32_foreign_message_no_arena_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestArenaMapLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestArenaMapLite)
  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, int32> map_int32_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestArenaMapLite_MapInt32Int32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32Int32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_int32_int32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int64, int64> map_int64_int64 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          TestArenaMapLite_MapInt64Int64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt64Int64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_int64_int64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint32, uint32> map_uint32_uint32 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          TestArenaMapLite_MapUint32Uint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapUint32Uint32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_uint32_uint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<uint64, uint64> map_uint64_uint64 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          TestArenaMapLite_MapUint64Uint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapUint64Uint64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_uint64_uint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint32, sint32> map_sint32_sint32 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          TestArenaMapLite_MapSint32Sint32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapSint32Sint32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sint32_sint32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sint64, sint64> map_sint64_sint64 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          TestArenaMapLite_MapSint64Sint64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapSint64Sint64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SINT64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sint64_sint64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed32, fixed32> map_fixed32_fixed32 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse,
              ::google::protobuf::uint32, ::google::protobuf::uint32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 > > parser(&map_fixed32_fixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<fixed64, fixed64> map_fixed64_fixed64 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse,
              ::google::protobuf::uint64, ::google::protobuf::uint64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 > > parser(&map_fixed64_fixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse,
              ::google::protobuf::int32, ::google::protobuf::int32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 > > parser(&map_sfixed32_sfixed32_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse,
              ::google::protobuf::int64, ::google::protobuf::int64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 > > parser(&map_sfixed64_sfixed64_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, float> map_int32_float = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          TestArenaMapLite_MapInt32FloatEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32FloatEntry_DoNotUse,
              ::google::protobuf::int32, float,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, float > > parser(&map_int32_float_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, double> map_int32_double = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          TestArenaMapLite_MapInt32DoubleEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32DoubleEntry_DoNotUse,
              ::google::protobuf::int32, double,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, double > > parser(&map_int32_double_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<bool, bool> map_bool_bool = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
          TestArenaMapLite_MapBoolBoolEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapBoolBoolEntry_DoNotUse,
              bool, bool,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
              0 >,
            ::google::protobuf::Map< bool, bool > > parser(&map_bool_bool_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> map_string_string = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          TestArenaMapLite_MapStringStringEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapStringStringEntry_DoNotUse,
              ::std::string, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
              0 >,
            ::google::protobuf::Map< ::std::string, ::std::string > > parser(&map_string_string_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, bytes> map_int32_bytes = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          TestArenaMapLite_MapInt32BytesEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32BytesEntry_DoNotUse,
              ::google::protobuf::int32, ::std::string,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_BYTES,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::std::string > > parser(&map_int32_bytes_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.MapEnumLite> map_int32_enum = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
          ::std::unique_ptr<TestArenaMapLite_MapInt32EnumEntry_DoNotUse> entry(map_int32_enum_.NewEntry());
          {
            ::std::string data;
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(input, &data));
            DO_(entry->ParseFromString(data));
            if (::protobuf_unittest::MapEnumLite_IsValid(*entry->mutable_value())) {
              (*mutable_map_int32_enum())[entry->key()] =
                  static_cast< ::protobuf_unittest::MapEnumLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(130u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.ForeignMessageArenaLite> map_int32_foreign_message = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
          TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageArenaLite,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageArenaLite > > parser(&map_int32_foreign_message_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest_no_arena.ForeignMessageLite> map_int32_foreign_message_no_arena = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessageLite,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessageLite > > parser(&map_int32_foreign_message_no_arena_);
          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::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestArenaMapLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestArenaMapLite)
  return false;
#undef DO_
}

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

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_int64_int64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_int64_int64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_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<TestArenaMapLite_MapInt64Int64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapInt64Int64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_int64_int64().begin();
          it != this->map_int64_int64().end(); ++it) {
        entry.reset(map_int64_int64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            2, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint32_uint32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint32_uint32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_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<TestArenaMapLite_MapUint32Uint32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapUint32Uint32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_uint32_uint32().begin();
          it != this->map_uint32_uint32().end(); ++it) {
        entry.reset(map_uint32_uint32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            3, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_uint64_uint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_uint64_uint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_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<TestArenaMapLite_MapUint64Uint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapUint64Uint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_uint64_uint64().begin();
          it != this->map_uint64_uint64().end(); ++it) {
        entry.reset(map_uint64_uint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            4, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_sint64_sint64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sint64_sint64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_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<TestArenaMapLite_MapSint64Sint64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapSint64Sint64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sint64_sint64().begin();
          it != this->map_sint64_sint64().end(); ++it) {
        entry.reset(map_sint64_sint64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            6, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed32_fixed32().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed32_fixed32().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_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<TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
          it = this->map_fixed32_fixed32().begin();
          it != this->map_fixed32_fixed32().end(); ++it) {
        entry.reset(map_fixed32_fixed32_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            7, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

    if (output->IsSerializationDeterministic() &&
        this->map_fixed64_fixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_fixed64_fixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_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<TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
          it = this->map_fixed64_fixed64().begin();
          it != this->map_fixed64_fixed64().end(); ++it) {
        entry.reset(map_fixed64_fixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            8, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_sfixed64_sfixed64().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_sfixed64_sfixed64().size()]);
      typedef ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_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<TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
          it = this->map_sfixed64_sfixed64().begin();
          it != this->map_sfixed64_sfixed64().end(); ++it) {
        entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            10, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

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

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

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

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

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

    if (output->IsSerializationDeterministic() &&
        this->map_bool_bool().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_bool_bool().size()]);
      typedef ::google::protobuf::Map< bool, bool >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_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<TestArenaMapLite_MapBoolBoolEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)].second->first, items[static_cast<ptrdiff_t>(i)].second->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapBoolBoolEntry_DoNotUse> entry;
      for (::google::protobuf::Map< bool, bool >::const_iterator
          it = this->map_bool_bool().begin();
          it != this->map_bool_bool().end(); ++it) {
        entry.reset(map_bool_bool_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            13, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<string, string> map_string_string = 14;
  if (!this->map_string_string().empty()) {
    typedef ::google::protobuf::Map< ::std::string, ::std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::google::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
      }
    };

    if (output->IsSerializationDeterministic() &&
        this->map_string_string().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->map_string_string().size()]);
      typedef ::google::protobuf::Map< ::std::string, ::std::string >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_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<TestArenaMapLite_MapStringStringEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(map_string_string_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestArenaMapLite_MapStringStringEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->map_string_string().begin();
          it != this->map_string_string().end(); ++it) {
        entry.reset(map_string_string_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            14, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
        Utf8Check::Check(&*it);
      }
    }
  }

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

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

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

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

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

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

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

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

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestArenaMapLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, int32> map_int32_int32 = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_int32_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32Int32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_int32_int32().begin();
        it != this->map_int32_int32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_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, int64> map_int64_int64 = 2;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int64_int64_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt64Int64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_int64_int64().begin();
        it != this->map_int64_int64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int64_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, uint32> map_uint32_uint32 = 3;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint32_uint32_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapUint32Uint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_uint32_uint32().begin();
        it != this->map_uint32_uint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint32_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, uint64> map_uint64_uint64 = 4;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_uint64_uint64_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapUint64Uint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_uint64_uint64().begin();
        it != this->map_uint64_uint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_uint64_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, sint32> map_sint32_sint32 = 5;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint32_sint32_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapSint32Sint32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sint32_sint32().begin();
        it != this->map_sint32_sint32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint32_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, sint64> map_sint64_sint64 = 6;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sint64_sint64_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapSint64Sint64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sint64_sint64().begin();
        it != this->map_sint64_sint64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sint64_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, fixed32> map_fixed32_fixed32 = 7;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed32_fixed32_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::uint32 >::const_iterator
        it = this->map_fixed32_fixed32().begin();
        it != this->map_fixed32_fixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed32_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, fixed64> map_fixed64_fixed64 = 8;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_fixed64_fixed64_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::uint64 >::const_iterator
        it = this->map_fixed64_fixed64().begin();
        it != this->map_fixed64_fixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_fixed64_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, sfixed32> map_sfixed32_sfixed32 = 9;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed32_sfixed32_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >::const_iterator
        it = this->map_sfixed32_sfixed32().begin();
        it != this->map_sfixed32_sfixed32().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed32_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, sfixed64> map_sfixed64_sfixed64 = 10;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_sfixed64_sfixed64_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int64 >::const_iterator
        it = this->map_sfixed64_sfixed64().begin();
        it != this->map_sfixed64_sfixed64().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_sfixed64_sfixed64_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, float> map_int32_float = 11;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_float_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32FloatEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, float >::const_iterator
        it = this->map_int32_float().begin();
        it != this->map_int32_float().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_float_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, double> map_int32_double = 12;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_double_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32DoubleEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, double >::const_iterator
        it = this->map_int32_double().begin();
        it != this->map_int32_double().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_double_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<bool, bool> map_bool_bool = 13;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_bool_bool_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapBoolBoolEntry_DoNotUse> entry;
    for (::google::protobuf::Map< bool, bool >::const_iterator
        it = this->map_bool_bool().begin();
        it != this->map_bool_bool().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_bool_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, string> map_string_string = 14;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_string_string_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapStringStringEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->map_string_string().begin();
        it != this->map_string_string().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_string_string_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
    if (entry.get() != NULL && entry->GetArena() != NULL) {
      entry.release();
    }
  }

  // map<int32, bytes> map_int32_bytes = 15;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_bytes_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32BytesEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::std::string >::const_iterator
        it = this->map_int32_bytes().begin();
        it != this->map_int32_bytes().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_bytes_.NewEntryWrapper(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.MapEnumLite> map_int32_enum = 16;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_enum_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32EnumEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::MapEnumLite >::const_iterator
        it = this->map_int32_enum().begin();
        it != this->map_int32_enum().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_enum_.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.ForeignMessageArenaLite> map_int32_foreign_message = 17;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::ForeignMessageArenaLite >::const_iterator
        it = this->map_int32_foreign_message().begin();
        it != this->map_int32_foreign_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_.NewEntryWrapper(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_no_arena.ForeignMessageLite> map_int32_foreign_message_no_arena = 18;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_foreign_message_no_arena_size());
  {
    ::std::unique_ptr<TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest_no_arena::ForeignMessageLite >::const_iterator
        it = this->map_int32_foreign_message_no_arena().begin();
        it != this->map_int32_foreign_message_no_arena().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_foreign_message_no_arena_.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 TestArenaMapLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestArenaMapLite*>(&from));
}

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

  map_int32_int32_.MergeFrom(from.map_int32_int32_);
  map_int64_int64_.MergeFrom(from.map_int64_int64_);
  map_uint32_uint32_.MergeFrom(from.map_uint32_uint32_);
  map_uint64_uint64_.MergeFrom(from.map_uint64_uint64_);
  map_sint32_sint32_.MergeFrom(from.map_sint32_sint32_);
  map_sint64_sint64_.MergeFrom(from.map_sint64_sint64_);
  map_fixed32_fixed32_.MergeFrom(from.map_fixed32_fixed32_);
  map_fixed64_fixed64_.MergeFrom(from.map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.MergeFrom(from.map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.MergeFrom(from.map_sfixed64_sfixed64_);
  map_int32_float_.MergeFrom(from.map_int32_float_);
  map_int32_double_.MergeFrom(from.map_int32_double_);
  map_bool_bool_.MergeFrom(from.map_bool_bool_);
  map_string_string_.MergeFrom(from.map_string_string_);
  map_int32_bytes_.MergeFrom(from.map_int32_bytes_);
  map_int32_enum_.MergeFrom(from.map_int32_enum_);
  map_int32_foreign_message_.MergeFrom(from.map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.MergeFrom(from.map_int32_foreign_message_no_arena_);
}

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

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

void TestArenaMapLite::Swap(TestArenaMapLite* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestArenaMapLite* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestArenaMapLite::UnsafeArenaSwap(TestArenaMapLite* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestArenaMapLite::InternalSwap(TestArenaMapLite* other) {
  using std::swap;
  map_int32_int32_.Swap(&other->map_int32_int32_);
  map_int64_int64_.Swap(&other->map_int64_int64_);
  map_uint32_uint32_.Swap(&other->map_uint32_uint32_);
  map_uint64_uint64_.Swap(&other->map_uint64_uint64_);
  map_sint32_sint32_.Swap(&other->map_sint32_sint32_);
  map_sint64_sint64_.Swap(&other->map_sint64_sint64_);
  map_fixed32_fixed32_.Swap(&other->map_fixed32_fixed32_);
  map_fixed64_fixed64_.Swap(&other->map_fixed64_fixed64_);
  map_sfixed32_sfixed32_.Swap(&other->map_sfixed32_sfixed32_);
  map_sfixed64_sfixed64_.Swap(&other->map_sfixed64_sfixed64_);
  map_int32_float_.Swap(&other->map_int32_float_);
  map_int32_double_.Swap(&other->map_int32_double_);
  map_bool_bool_.Swap(&other->map_bool_bool_);
  map_string_string_.Swap(&other->map_string_string_);
  map_int32_bytes_.Swap(&other->map_int32_bytes_);
  map_int32_enum_.Swap(&other->map_int32_enum_);
  map_int32_foreign_message_.Swap(&other->map_int32_foreign_message_);
  map_int32_foreign_message_no_arena_.Swap(&other->map_int32_foreign_message_no_arena_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestArenaMapLite::GetTypeName() const {
  return "protobuf_unittest.TestArenaMapLite";
}


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

TestRequiredMessageMapLite_MapFieldEntry_DoNotUse::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse() {}
TestRequiredMessageMapLite_MapFieldEntry_DoNotUse::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestRequiredMessageMapLite_MapFieldEntry_DoNotUse::MergeFrom(const TestRequiredMessageMapLite_MapFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

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

TestRequiredMessageMapLite::TestRequiredMessageMapLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredMessageMapLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestRequiredMessageMapLite)
}
TestRequiredMessageMapLite::TestRequiredMessageMapLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredMessageMapLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestRequiredMessageMapLite)
}
TestRequiredMessageMapLite::TestRequiredMessageMapLite(const TestRequiredMessageMapLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_field_.MergeFrom(from.map_field_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestRequiredMessageMapLite)
}

void TestRequiredMessageMapLite::SharedCtor() {
}

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

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

void TestRequiredMessageMapLite::ArenaDtor(void* object) {
  TestRequiredMessageMapLite* _this = reinterpret_cast< TestRequiredMessageMapLite* >(object);
  (void)_this;
}
void TestRequiredMessageMapLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestRequiredMessageMapLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestRequiredMessageMapLite& TestRequiredMessageMapLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredMessageMapLite.base);
  return *internal_default_instance();
}


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

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

bool TestRequiredMessageMapLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestRequiredMessageMapLite)
  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.TestRequiredLite> map_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestRequiredMessageMapLite_MapFieldEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestRequiredMessageMapLite_MapFieldEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::TestRequiredLite,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequiredLite > > parser(&map_field_);
          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::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestRequiredMessageMapLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestRequiredMessageMapLite)
  return false;
#undef DO_
}

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

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

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

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestRequiredMessageMapLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, .protobuf_unittest.TestRequiredLite> map_field = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_field_size());
  {
    ::std::unique_ptr<TestRequiredMessageMapLite_MapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestRequiredLite >::const_iterator
        it = this->map_field().begin();
        it != this->map_field().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_field_.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 TestRequiredMessageMapLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestRequiredMessageMapLite*>(&from));
}

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

  map_field_.MergeFrom(from.map_field_);
}

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

bool TestRequiredMessageMapLite::IsInitialized() const {
  if (!::google::protobuf::internal::AllAreInitialized(this->map_field())) return false;
  return true;
}

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

::std::string TestRequiredMessageMapLite::GetTypeName() const {
  return "protobuf_unittest.TestRequiredMessageMapLite";
}


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

TestEnumMapLite_KnownMapFieldEntry_DoNotUse::TestEnumMapLite_KnownMapFieldEntry_DoNotUse() {}
TestEnumMapLite_KnownMapFieldEntry_DoNotUse::TestEnumMapLite_KnownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestEnumMapLite_KnownMapFieldEntry_DoNotUse::MergeFrom(const TestEnumMapLite_KnownMapFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestEnumMapLite_UnknownMapFieldEntry_DoNotUse::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse() {}
TestEnumMapLite_UnknownMapFieldEntry_DoNotUse::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestEnumMapLite_UnknownMapFieldEntry_DoNotUse::MergeFrom(const TestEnumMapLite_UnknownMapFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

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

TestEnumMapLite::TestEnumMapLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEnumMapLite)
}
TestEnumMapLite::TestEnumMapLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  known_map_field_(arena),
  unknown_map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestEnumMapLite)
}
TestEnumMapLite::TestEnumMapLite(const TestEnumMapLite& from)
  : ::google::protobuf::MessageLite(),
      _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.TestEnumMapLite)
}

void TestEnumMapLite::SharedCtor() {
}

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

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

void TestEnumMapLite::ArenaDtor(void* object) {
  TestEnumMapLite* _this = reinterpret_cast< TestEnumMapLite* >(object);
  (void)_this;
}
void TestEnumMapLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestEnumMapLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestEnumMapLite& TestEnumMapLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapLite.base);
  return *internal_default_instance();
}


void TestEnumMapLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.TestEnumMapLite)
  ::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 TestEnumMapLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestEnumMapLite)
  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.Proto2MapEnumLite> known_map_field = 101;
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapLite_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::Proto2MapEnumLite_IsValid(*entry->mutable_value())) {
              (*mutable_known_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(810u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.Proto2MapEnumLite> unknown_map_field = 102;
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapLite_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::Proto2MapEnumLite_IsValid(*entry->mutable_value())) {
              (*mutable_unknown_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(818u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // map<int32, .protobuf_unittest.Proto2MapEnumLite> known_map_field = 101;
  if (!this->known_map_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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::Proto2MapEnumLite >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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<TestEnumMapLite_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::WriteMessage(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapLite_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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::WriteMessage(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<int32, .protobuf_unittest.Proto2MapEnumLite> unknown_map_field = 102;
  if (!this->unknown_map_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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::Proto2MapEnumLite >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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<TestEnumMapLite_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::WriteMessage(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapLite_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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::WriteMessage(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestEnumMapLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, .protobuf_unittest.Proto2MapEnumLite> known_map_field = 101;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->known_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapLite_KnownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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.Proto2MapEnumLite> unknown_map_field = 102;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->unknown_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapLite_UnknownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumLite >::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 TestEnumMapLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestEnumMapLite*>(&from));
}

void TestEnumMapLite::MergeFrom(const TestEnumMapLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestEnumMapLite)
  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 TestEnumMapLite::CopyFrom(const TestEnumMapLite& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.TestEnumMapLite)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void TestEnumMapLite::Swap(TestEnumMapLite* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestEnumMapLite* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestEnumMapLite::UnsafeArenaSwap(TestEnumMapLite* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestEnumMapLite::InternalSwap(TestEnumMapLite* 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_);
}

::std::string TestEnumMapLite::GetTypeName() const {
  return "protobuf_unittest.TestEnumMapLite";
}


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

TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse() {}
TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse::MergeFrom(const TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse() {}
TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse::MergeFrom(const TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

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

TestEnumMapPlusExtraLite::TestEnumMapPlusExtraLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapPlusExtraLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEnumMapPlusExtraLite)
}
TestEnumMapPlusExtraLite::TestEnumMapPlusExtraLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  known_map_field_(arena),
  unknown_map_field_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapPlusExtraLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestEnumMapPlusExtraLite)
}
TestEnumMapPlusExtraLite::TestEnumMapPlusExtraLite(const TestEnumMapPlusExtraLite& from)
  : ::google::protobuf::MessageLite(),
      _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.TestEnumMapPlusExtraLite)
}

void TestEnumMapPlusExtraLite::SharedCtor() {
}

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

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

void TestEnumMapPlusExtraLite::ArenaDtor(void* object) {
  TestEnumMapPlusExtraLite* _this = reinterpret_cast< TestEnumMapPlusExtraLite* >(object);
  (void)_this;
}
void TestEnumMapPlusExtraLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestEnumMapPlusExtraLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestEnumMapPlusExtraLite& TestEnumMapPlusExtraLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestEnumMapPlusExtraLite.base);
  return *internal_default_instance();
}


void TestEnumMapPlusExtraLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.TestEnumMapPlusExtraLite)
  ::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 TestEnumMapPlusExtraLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestEnumMapPlusExtraLite)
  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.Proto2MapEnumPlusExtraLite> known_map_field = 101;
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapPlusExtraLite_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::Proto2MapEnumPlusExtraLite_IsValid(*entry->mutable_value())) {
              (*mutable_known_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumPlusExtraLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(810u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtraLite> unknown_map_field = 102;
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          ::std::unique_ptr<TestEnumMapPlusExtraLite_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::Proto2MapEnumPlusExtraLite_IsValid(*entry->mutable_value())) {
              (*mutable_unknown_map_field())[entry->key()] =
                  static_cast< ::protobuf_unittest::Proto2MapEnumPlusExtraLite >(*entry->mutable_value());
            } else {
              unknown_fields_stream.WriteVarint32(818u);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(data.size()));
              unknown_fields_stream.WriteString(data);
            }
          }
          if (entry->GetArena() != NULL) entry.release();
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtraLite> known_map_field = 101;
  if (!this->known_map_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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::Proto2MapEnumPlusExtraLite >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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<TestEnumMapPlusExtraLite_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::WriteMessage(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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::WriteMessage(
            101, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtraLite> unknown_map_field = 102;
  if (!this->unknown_map_field().empty()) {
    typedef ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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::Proto2MapEnumPlusExtraLite >::size_type size_type;
      size_type n = 0;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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<TestEnumMapPlusExtraLite_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::WriteMessage(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    } else {
      ::std::unique_ptr<TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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::WriteMessage(
            102, *entry, output);
        if (entry->GetArena() != NULL) {
          entry.release();
        }
      }
    }
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestEnumMapPlusExtraLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, .protobuf_unittest.Proto2MapEnumPlusExtraLite> known_map_field = 101;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->known_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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.Proto2MapEnumPlusExtraLite> unknown_map_field = 102;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->unknown_map_field_size());
  {
    ::std::unique_ptr<TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::Proto2MapEnumPlusExtraLite >::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 TestEnumMapPlusExtraLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestEnumMapPlusExtraLite*>(&from));
}

void TestEnumMapPlusExtraLite::MergeFrom(const TestEnumMapPlusExtraLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestEnumMapPlusExtraLite)
  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 TestEnumMapPlusExtraLite::CopyFrom(const TestEnumMapPlusExtraLite& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:protobuf_unittest.TestEnumMapPlusExtraLite)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void TestEnumMapPlusExtraLite::Swap(TestEnumMapPlusExtraLite* other) {
  if (other == this) return;
  if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
    InternalSwap(other);
  } else {
    TestEnumMapPlusExtraLite* temp = New(GetArenaNoVirtual());
    temp->MergeFrom(*other);
    other->CopyFrom(*this);
    InternalSwap(temp);
    if (GetArenaNoVirtual() == NULL) {
      delete temp;
    }
  }
}
void TestEnumMapPlusExtraLite::UnsafeArenaSwap(TestEnumMapPlusExtraLite* other) {
  if (other == this) return;
  GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
  InternalSwap(other);
}
void TestEnumMapPlusExtraLite::InternalSwap(TestEnumMapPlusExtraLite* 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_);
}

::std::string TestEnumMapPlusExtraLite::GetTypeName() const {
  return "protobuf_unittest.TestEnumMapPlusExtraLite";
}


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

TestMessageMapLite_MapInt32MessageEntry_DoNotUse::TestMessageMapLite_MapInt32MessageEntry_DoNotUse() {}
TestMessageMapLite_MapInt32MessageEntry_DoNotUse::TestMessageMapLite_MapInt32MessageEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
void TestMessageMapLite_MapInt32MessageEntry_DoNotUse::MergeFrom(const TestMessageMapLite_MapInt32MessageEntry_DoNotUse& other) {
  MergeFromInternal(other);
}

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

void TestMessageMapLite::InitAsDefaultInstance() {
}
void TestMessageMapLite::clear_map_int32_message() {
  map_int32_message_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestMessageMapLite::kMapInt32MessageFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestMessageMapLite::TestMessageMapLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMessageMapLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestMessageMapLite)
}
TestMessageMapLite::TestMessageMapLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena),
  map_int32_message_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMessageMapLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestMessageMapLite)
}
TestMessageMapLite::TestMessageMapLite(const TestMessageMapLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  map_int32_message_.MergeFrom(from.map_int32_message_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestMessageMapLite)
}

void TestMessageMapLite::SharedCtor() {
}

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

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

void TestMessageMapLite::ArenaDtor(void* object) {
  TestMessageMapLite* _this = reinterpret_cast< TestMessageMapLite* >(object);
  (void)_this;
}
void TestMessageMapLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestMessageMapLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestMessageMapLite& TestMessageMapLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestMessageMapLite.base);
  return *internal_default_instance();
}


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

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

bool TestMessageMapLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestMessageMapLite)
  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.TestAllTypesLite> map_int32_message = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          TestMessageMapLite_MapInt32MessageEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestMessageMapLite_MapInt32MessageEntry_DoNotUse,
              ::google::protobuf::int32, ::protobuf_unittest::TestAllTypesLite,
              ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
              ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
              0 >,
            ::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypesLite > > parser(&map_int32_message_);
          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::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestMessageMapLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestMessageMapLite)
  return false;
#undef DO_
}

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

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

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

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestMessageMapLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // map<int32, .protobuf_unittest.TestAllTypesLite> map_int32_message = 1;
  total_size += 1 *
      ::google::protobuf::internal::FromIntSize(this->map_int32_message_size());
  {
    ::std::unique_ptr<TestMessageMapLite_MapInt32MessageEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::google::protobuf::int32, ::protobuf_unittest::TestAllTypesLite >::const_iterator
        it = this->map_int32_message().begin();
        it != this->map_int32_message().end(); ++it) {
      if (entry.get() != NULL && entry->GetArena() != NULL) {
        entry.release();
      }
      entry.reset(map_int32_message_.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 TestMessageMapLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestMessageMapLite*>(&from));
}

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

  map_int32_message_.MergeFrom(from.map_int32_message_);
}

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

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

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

::std::string TestMessageMapLite::GetTypeName() const {
  return "protobuf_unittest.TestMessageMapLite";
}


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

void TestRequiredLite::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestRequiredLite::kAFieldNumber;
const int TestRequiredLite::kBFieldNumber;
const int TestRequiredLite::kCFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestRequiredLite::TestRequiredLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestRequiredLite)
}
TestRequiredLite::TestRequiredLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.TestRequiredLite)
}
TestRequiredLite::TestRequiredLite(const TestRequiredLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&a_, &from.a_,
    static_cast<size_t>(reinterpret_cast<char*>(&c_) -
    reinterpret_cast<char*>(&a_)) + sizeof(c_));
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestRequiredLite)
}

void TestRequiredLite::SharedCtor() {
  ::memset(&a_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&c_) -
      reinterpret_cast<char*>(&a_)) + sizeof(c_));
}

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

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

void TestRequiredLite::ArenaDtor(void* object) {
  TestRequiredLite* _this = reinterpret_cast< TestRequiredLite* >(object);
  (void)_this;
}
void TestRequiredLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void TestRequiredLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestRequiredLite& TestRequiredLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_TestRequiredLite.base);
  return *internal_default_instance();
}


void TestRequiredLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.TestRequiredLite)
  ::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 & 7u) {
    ::memset(&a_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&c_) -
        reinterpret_cast<char*>(&a_)) + sizeof(c_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestRequiredLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.TestRequiredLite)
  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)) {
      // required int32 a = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_a();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &a_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // required int32 b = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          set_has_b();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &b_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // required int32 c = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
          set_has_c();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &c_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // required int32 a = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->a(), output);
  }

  // required int32 b = 2;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->b(), output);
  }

  // required int32 c = 3;
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->c(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestRequiredLite)
}

size_t TestRequiredLite::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:protobuf_unittest.TestRequiredLite)
  size_t total_size = 0;

  if (has_a()) {
    // required int32 a = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->a());
  }

  if (has_b()) {
    // required int32 b = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->b());
  }

  if (has_c()) {
    // required int32 c = 3;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->c());
  }

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

  total_size += _internal_metadata_.unknown_fields().size();

  if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
    // required int32 a = 1;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->a());

    // required int32 b = 2;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->b());

    // required int32 c = 3;
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->c());

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void TestRequiredLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TestRequiredLite*>(&from));
}

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

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 7u) {
    if (cached_has_bits & 0x00000001u) {
      a_ = from.a_;
    }
    if (cached_has_bits & 0x00000002u) {
      b_ = from.b_;
    }
    if (cached_has_bits & 0x00000004u) {
      c_ = from.c_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

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

bool TestRequiredLite::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
  return true;
}

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

::std::string TestRequiredLite::GetTypeName() const {
  return "protobuf_unittest.TestRequiredLite";
}


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

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

ForeignMessageArenaLite::ForeignMessageArenaLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_ForeignMessageArenaLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.ForeignMessageArenaLite)
}
ForeignMessageArenaLite::ForeignMessageArenaLite(::google::protobuf::Arena* arena)
  : ::google::protobuf::MessageLite(),
  _internal_metadata_(arena) {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_ForeignMessageArenaLite.base);
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:protobuf_unittest.ForeignMessageArenaLite)
}
ForeignMessageArenaLite::ForeignMessageArenaLite(const ForeignMessageArenaLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  c_ = from.c_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.ForeignMessageArenaLite)
}

void ForeignMessageArenaLite::SharedCtor() {
  c_ = 0;
}

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

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

void ForeignMessageArenaLite::ArenaDtor(void* object) {
  ForeignMessageArenaLite* _this = reinterpret_cast< ForeignMessageArenaLite* >(object);
  (void)_this;
}
void ForeignMessageArenaLite::RegisterArenaDtor(::google::protobuf::Arena* arena) {
}
void ForeignMessageArenaLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ForeignMessageArenaLite& ForeignMessageArenaLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2fmap_5flite_5funittest_2eproto::scc_info_ForeignMessageArenaLite.base);
  return *internal_default_instance();
}


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

  c_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool ForeignMessageArenaLite::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  ::google::protobuf::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::google::protobuf::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:protobuf_unittest.ForeignMessageArenaLite)
  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 int32 c = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_c();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &c_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // optional int32 c = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->c(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.ForeignMessageArenaLite)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

  // optional int32 c = 1;
  if (has_c()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->c());
  }

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

void ForeignMessageArenaLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ForeignMessageArenaLite*>(&from));
}

void ForeignMessageArenaLite::MergeFrom(const ForeignMessageArenaLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.ForeignMessageArenaLite)
  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_c()) {
    set_c(from.c());
  }
}

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

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

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

::std::string ForeignMessageArenaLite::GetTypeName() const {
  return "protobuf_unittest.ForeignMessageArenaLite";
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32Int32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32Int32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32Int32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt64Int64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt64Int64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt64Int64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapUint32Uint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapUint32Uint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapUint32Uint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapUint64Uint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapUint64Uint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapUint64Uint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapSint32Sint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapSint32Sint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapSint32Sint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapSint64Sint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapSint64Sint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapSint64Sint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapFixed32Fixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapFixed32Fixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapFixed32Fixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapFixed64Fixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapFixed64Fixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapFixed64Fixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapSfixed32Sfixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapSfixed64Sfixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32FloatEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32FloatEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32FloatEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32DoubleEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32DoubleEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32DoubleEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapBoolBoolEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapBoolBoolEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapBoolBoolEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapStringStringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapStringStringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapStringStringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32BytesEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32BytesEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32BytesEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32EnumEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32EnumEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32EnumEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_MapInt32ForeignMessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite_TeboringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite_TeboringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite_TeboringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMapLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMapLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMapLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32Int32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32Int32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32Int32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt64Int64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt64Int64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt64Int64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapUint32Uint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapUint64Uint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapSint32Sint32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapSint64Sint64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapFixed32Fixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapFixed64Fixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapSfixed32Sfixed32Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapSfixed64Sfixed64Entry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32FloatEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32FloatEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32FloatEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32DoubleEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapBoolBoolEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapBoolBoolEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapBoolBoolEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapStringStringEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapStringStringEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapStringStringEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32BytesEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32BytesEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32BytesEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32EnumEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32EnumEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32EnumEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite_MapInt32ForeignMessageNoArenaEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestArenaMapLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestArenaMapLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestArenaMapLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRequiredMessageMapLite_MapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRequiredMessageMapLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRequiredMessageMapLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRequiredMessageMapLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapLite_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapLite_KnownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapLite_KnownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapLite_UnknownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtraLite_KnownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtraLite_UnknownMapFieldEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEnumMapPlusExtraLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEnumMapPlusExtraLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestEnumMapPlusExtraLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMessageMapLite_MapInt32MessageEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMessageMapLite_MapInt32MessageEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMessageMapLite_MapInt32MessageEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestMessageMapLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestMessageMapLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestMessageMapLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestRequiredLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestRequiredLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::TestRequiredLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::ForeignMessageArenaLite* Arena::CreateMaybeMessage< ::protobuf_unittest::ForeignMessageArenaLite >(Arena* arena) {
  return Arena::CreateMessageInternal< ::protobuf_unittest::ForeignMessageArenaLite >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
