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

#include <google/protobuf/unittest_lite.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_2funittest_5fimport_5flite_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fimport_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ImportMessageLite;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fimport_5flite_2eproto
namespace protobuf_google_2fprotobuf_2funittest_5fimport_5fpublic_5flite_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5fimport_5fpublic_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PublicImportMessageLite;
}  // namespace protobuf_google_2fprotobuf_2funittest_5fimport_5fpublic_5flite_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<0> scc_info_OptionalGroup_extension_lite;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_RepeatedGroup_extension_lite;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestAllTypesLite_NestedMessage;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestAllTypesLite_OptionalGroup;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestAllTypesLite_RepeatedGroup;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestHugeFieldNumbersLite_OptionalGroup;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestParsingMergeLite_OptionalGroup;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group1;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group2;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2funittest_5flite_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TestParsingMergeLite_RepeatedGroup;
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_unittest {
class TestAllTypesLite_NestedMessageDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestAllTypesLite_NestedMessage>
      _instance;
} _TestAllTypesLite_NestedMessage_default_instance_;
class TestAllTypesLite_OptionalGroupDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestAllTypesLite_OptionalGroup>
      _instance;
} _TestAllTypesLite_OptionalGroup_default_instance_;
class TestAllTypesLite_RepeatedGroupDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestAllTypesLite_RepeatedGroup>
      _instance;
} _TestAllTypesLite_RepeatedGroup_default_instance_;
class TestAllTypesLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestAllTypesLite>
      _instance;
  ::google::protobuf::uint32 oneof_uint32_;
  const ::protobuf_unittest::TestAllTypesLite_NestedMessage* oneof_nested_message_;
  ::google::protobuf::internal::ArenaStringPtr oneof_string_;
  ::google::protobuf::internal::ArenaStringPtr oneof_bytes_;
  const ::protobuf_unittest::TestAllTypesLite_NestedMessage* oneof_lazy_nested_message_;
} _TestAllTypesLite_default_instance_;
class ForeignMessageLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<ForeignMessageLite>
      _instance;
} _ForeignMessageLite_default_instance_;
class TestPackedTypesLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestPackedTypesLite>
      _instance;
} _TestPackedTypesLite_default_instance_;
class TestAllExtensionsLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestAllExtensionsLite>
      _instance;
} _TestAllExtensionsLite_default_instance_;
class OptionalGroup_extension_liteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<OptionalGroup_extension_lite>
      _instance;
} _OptionalGroup_extension_lite_default_instance_;
class RepeatedGroup_extension_liteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<RepeatedGroup_extension_lite>
      _instance;
} _RepeatedGroup_extension_lite_default_instance_;
class TestPackedExtensionsLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestPackedExtensionsLite>
      _instance;
} _TestPackedExtensionsLite_default_instance_;
class TestNestedExtensionLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestNestedExtensionLite>
      _instance;
} _TestNestedExtensionLite_default_instance_;
class TestDeprecatedLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestDeprecatedLite>
      _instance;
} _TestDeprecatedLite_default_instance_;
class TestParsingMergeLite_RepeatedFieldsGenerator_Group1DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite_RepeatedFieldsGenerator_Group1>
      _instance;
} _TestParsingMergeLite_RepeatedFieldsGenerator_Group1_default_instance_;
class TestParsingMergeLite_RepeatedFieldsGenerator_Group2DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite_RepeatedFieldsGenerator_Group2>
      _instance;
} _TestParsingMergeLite_RepeatedFieldsGenerator_Group2_default_instance_;
class TestParsingMergeLite_RepeatedFieldsGeneratorDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite_RepeatedFieldsGenerator>
      _instance;
} _TestParsingMergeLite_RepeatedFieldsGenerator_default_instance_;
class TestParsingMergeLite_OptionalGroupDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite_OptionalGroup>
      _instance;
} _TestParsingMergeLite_OptionalGroup_default_instance_;
class TestParsingMergeLite_RepeatedGroupDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite_RepeatedGroup>
      _instance;
} _TestParsingMergeLite_RepeatedGroup_default_instance_;
class TestParsingMergeLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestParsingMergeLite>
      _instance;
} _TestParsingMergeLite_default_instance_;
class TestEmptyMessageLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEmptyMessageLite>
      _instance;
} _TestEmptyMessageLite_default_instance_;
class TestEmptyMessageWithExtensionsLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestEmptyMessageWithExtensionsLite>
      _instance;
} _TestEmptyMessageWithExtensionsLite_default_instance_;
class V1MessageLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<V1MessageLite>
      _instance;
} _V1MessageLite_default_instance_;
class V2MessageLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<V2MessageLite>
      _instance;
} _V2MessageLite_default_instance_;
class TestHugeFieldNumbersLite_OptionalGroupDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestHugeFieldNumbersLite_OptionalGroup>
      _instance;
} _TestHugeFieldNumbersLite_OptionalGroup_default_instance_;
class TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUseDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse>
      _instance;
} _TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse_default_instance_;
class TestHugeFieldNumbersLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestHugeFieldNumbersLite>
      _instance;
  ::google::protobuf::uint32 oneof_uint32_;
  const ::protobuf_unittest::TestAllTypesLite* oneof_test_all_types_;
  ::google::protobuf::internal::ArenaStringPtr oneof_string_;
  ::google::protobuf::internal::ArenaStringPtr oneof_bytes_;
} _TestHugeFieldNumbersLite_default_instance_;
class TestOneofParsingLiteDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TestOneofParsingLite>
      _instance;
  ::google::protobuf::int32 oneof_int32_;
  const ::protobuf_unittest::TestAllTypesLite* oneof_submessage_;
  ::google::protobuf::internal::ArenaStringPtr oneof_string_;
  ::google::protobuf::internal::ArenaStringPtr oneof_bytes_;
  ::google::protobuf::internal::ArenaStringPtr oneof_string_cord_;
  ::google::protobuf::internal::ArenaStringPtr oneof_bytes_cord_;
  ::google::protobuf::internal::ArenaStringPtr oneof_string_string_piece_;
  ::google::protobuf::internal::ArenaStringPtr oneof_bytes_string_piece_;
  int oneof_enum_;
} _TestOneofParsingLite_default_instance_;
class PackedInt32DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<PackedInt32>
      _instance;
} _PackedInt32_default_instance_;
class NonPackedInt32DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<NonPackedInt32>
      _instance;
} _NonPackedInt32_default_instance_;
class PackedFixed32DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<PackedFixed32>
      _instance;
} _PackedFixed32_default_instance_;
class NonPackedFixed32DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<NonPackedFixed32>
      _instance;
} _NonPackedFixed32_default_instance_;
}  // namespace protobuf_unittest
namespace protobuf_google_2fprotobuf_2funittest_5flite_2eproto {
static void InitDefaultsTestAllTypesLite_NestedMessage() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestAllTypesLite_OptionalGroup() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestAllTypesLite_RepeatedGroup() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestAllTypesLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.DefaultConstruct();
  *::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get_mutable() = ::std::string("hello", 5);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get_mutable());
  ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.DefaultConstruct();
  *::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get_mutable() = ::std::string("world", 5);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get_mutable());
  ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.DefaultConstruct();
  *::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get_mutable() = ::std::string("abc", 3);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get_mutable());
  ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.DefaultConstruct();
  *::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get_mutable() = ::std::string("123", 3);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get_mutable());
  {
    void* ptr = &::protobuf_unittest::_TestAllTypesLite_default_instance_;
    new (ptr) ::protobuf_unittest::TestAllTypesLite();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::TestAllTypesLite::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<6> scc_info_TestAllTypesLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 6, InitDefaultsTestAllTypesLite}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_OptionalGroup.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_NestedMessage.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_ForeignMessageLite.base,
      &protobuf_google_2fprotobuf_2funittest_5fimport_5flite_2eproto::scc_info_ImportMessageLite.base,
      &protobuf_google_2fprotobuf_2funittest_5fimport_5fpublic_5flite_2eproto::scc_info_PublicImportMessageLite.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_RepeatedGroup.base,}};

static void InitDefaultsForeignMessageLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestPackedTypesLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestAllExtensionsLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsOptionalGroup_extension_lite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsRepeatedGroup_extension_lite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestPackedExtensionsLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestNestedExtensionLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestDeprecatedLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestParsingMergeLite_RepeatedFieldsGenerator_Group1() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestParsingMergeLite_RepeatedFieldsGenerator_Group2() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestParsingMergeLite_RepeatedFieldsGenerator() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<3> scc_info_TestParsingMergeLite_RepeatedFieldsGenerator =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsTestParsingMergeLite_RepeatedFieldsGenerator}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group1.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group2.base,}};

static void InitDefaultsTestParsingMergeLite_OptionalGroup() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestParsingMergeLite_RepeatedGroup() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestParsingMergeLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<3> scc_info_TestParsingMergeLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsTestParsingMergeLite}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_OptionalGroup.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedGroup.base,}};

static void InitDefaultsTestEmptyMessageLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestEmptyMessageWithExtensionsLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsV1MessageLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsV2MessageLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestHugeFieldNumbersLite_OptionalGroup() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsTestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::protobuf_unittest::_TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse_default_instance_;
    new (ptr) ::protobuf_unittest::TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse();
  }
  ::protobuf_unittest::TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse::InitAsDefaultInstance();
}

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

static void InitDefaultsTestHugeFieldNumbersLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

::google::protobuf::internal::SCCInfo<4> scc_info_TestHugeFieldNumbersLite =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsTestHugeFieldNumbersLite}, {
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_ForeignMessageLite.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite_OptionalGroup.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse.base,
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base,}};

static void InitDefaultsTestOneofParsingLite() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_.DefaultConstruct();
  *::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_.get_mutable() = ::std::string("default bytes", 13);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_.get_mutable());
  ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_string_cord_.DefaultConstruct();
  *::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_string_cord_.get_mutable() = ::std::string("default Cord", 12);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_string_cord_.get_mutable());
  ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_string_piece_.DefaultConstruct();
  *::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_string_piece_.get_mutable() = ::std::string("default StringPiece", 19);
  ::google::protobuf::internal::OnShutdownDestroyString(
      ::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_string_piece_.get_mutable());
  {
    void* ptr = &::protobuf_unittest::_TestOneofParsingLite_default_instance_;
    new (ptr) ::protobuf_unittest::TestOneofParsingLite();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::protobuf_unittest::TestOneofParsingLite::InitAsDefaultInstance();
}

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

static void InitDefaultsPackedInt32() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsNonPackedInt32() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsPackedFixed32() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

static void InitDefaultsNonPackedFixed32() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

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

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

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TestAllTypesLite_NestedMessage.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestAllTypesLite_OptionalGroup.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestAllTypesLite_RepeatedGroup.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestAllTypesLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_ForeignMessageLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestPackedTypesLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestAllExtensionsLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_OptionalGroup_extension_lite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_RepeatedGroup_extension_lite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestPackedExtensionsLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestNestedExtensionLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestDeprecatedLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group1.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group2.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite_RepeatedFieldsGenerator.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite_OptionalGroup.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite_RepeatedGroup.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestParsingMergeLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEmptyMessageLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestEmptyMessageWithExtensionsLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_V1MessageLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_V2MessageLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestHugeFieldNumbersLite_OptionalGroup.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestHugeFieldNumbersLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TestOneofParsingLite.base);
  ::google::protobuf::internal::InitSCC(&scc_info_PackedInt32.base);
  ::google::protobuf::internal::InitSCC(&scc_info_NonPackedInt32.base);
  ::google::protobuf::internal::InitSCC(&scc_info_PackedFixed32.base);
  ::google::protobuf::internal::InitSCC(&scc_info_NonPackedFixed32.base);
}

}  // namespace protobuf_google_2fprotobuf_2funittest_5flite_2eproto
namespace protobuf_unittest {
bool TestAllTypesLite_NestedEnum_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const TestAllTypesLite_NestedEnum TestAllTypesLite::FOO;
const TestAllTypesLite_NestedEnum TestAllTypesLite::BAR;
const TestAllTypesLite_NestedEnum TestAllTypesLite::BAZ;
const TestAllTypesLite_NestedEnum TestAllTypesLite::NestedEnum_MIN;
const TestAllTypesLite_NestedEnum TestAllTypesLite::NestedEnum_MAX;
const int TestAllTypesLite::NestedEnum_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
bool ForeignEnumLite_IsValid(int value) {
  switch (value) {
    case 4:
    case 5:
    case 6:
      return true;
    default:
      return false;
  }
}

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

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


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

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

TestAllTypesLite_NestedMessage::TestAllTypesLite_NestedMessage()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_NestedMessage.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestAllTypesLite.NestedMessage)
}
TestAllTypesLite_NestedMessage::TestAllTypesLite_NestedMessage(const TestAllTypesLite_NestedMessage& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&cc_, &from.cc_,
    static_cast<size_t>(reinterpret_cast<char*>(&bb_) -
    reinterpret_cast<char*>(&cc_)) + sizeof(bb_));
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestAllTypesLite.NestedMessage)
}

void TestAllTypesLite_NestedMessage::SharedCtor() {
  ::memset(&cc_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&bb_) -
      reinterpret_cast<char*>(&cc_)) + sizeof(bb_));
}

TestAllTypesLite_NestedMessage::~TestAllTypesLite_NestedMessage() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestAllTypesLite.NestedMessage)
  SharedDtor();
}

void TestAllTypesLite_NestedMessage::SharedDtor() {
}

void TestAllTypesLite_NestedMessage::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestAllTypesLite_NestedMessage& TestAllTypesLite_NestedMessage::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_NestedMessage.base);
  return *internal_default_instance();
}


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

bool TestAllTypesLite_NestedMessage::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.TestAllTypesLite.NestedMessage)
  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 bb = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_bb();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &bb_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 cc = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          set_has_cc();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &cc_)));
        } 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.TestAllTypesLite.NestedMessage)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestAllTypesLite.NestedMessage)
  return false;
#undef DO_
}

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

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

  // optional int64 cc = 2;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->cc(), output);
  }

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

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

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

  if (_has_bits_[0 / 32] & 3u) {
    // optional int64 cc = 2;
    if (has_cc()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->cc());
    }

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

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

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

void TestAllTypesLite_NestedMessage::MergeFrom(const TestAllTypesLite_NestedMessage& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestAllTypesLite.NestedMessage)
  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 & 3u) {
    if (cached_has_bits & 0x00000001u) {
      cc_ = from.cc_;
    }
    if (cached_has_bits & 0x00000002u) {
      bb_ = from.bb_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

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

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

void TestAllTypesLite_NestedMessage::Swap(TestAllTypesLite_NestedMessage* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestAllTypesLite_NestedMessage::InternalSwap(TestAllTypesLite_NestedMessage* other) {
  using std::swap;
  swap(cc_, other->cc_);
  swap(bb_, other->bb_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestAllTypesLite_NestedMessage::GetTypeName() const {
  return "protobuf_unittest.TestAllTypesLite.NestedMessage";
}


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

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

TestAllTypesLite_OptionalGroup::TestAllTypesLite_OptionalGroup()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_OptionalGroup.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestAllTypesLite.OptionalGroup)
}
TestAllTypesLite_OptionalGroup::TestAllTypesLite_OptionalGroup(const TestAllTypesLite_OptionalGroup& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  a_ = from.a_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestAllTypesLite.OptionalGroup)
}

void TestAllTypesLite_OptionalGroup::SharedCtor() {
  a_ = 0;
}

TestAllTypesLite_OptionalGroup::~TestAllTypesLite_OptionalGroup() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestAllTypesLite.OptionalGroup)
  SharedDtor();
}

void TestAllTypesLite_OptionalGroup::SharedDtor() {
}

void TestAllTypesLite_OptionalGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestAllTypesLite_OptionalGroup& TestAllTypesLite_OptionalGroup::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_OptionalGroup.base);
  return *internal_default_instance();
}


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

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

bool TestAllTypesLite_OptionalGroup::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.TestAllTypesLite.OptionalGroup)
  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)) {
      // optional int32 a = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(136u /* 136 & 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;
      }

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

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

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

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

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

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

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

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

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

void TestAllTypesLite_OptionalGroup::MergeFrom(const TestAllTypesLite_OptionalGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestAllTypesLite.OptionalGroup)
  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_a()) {
    set_a(from.a());
  }
}

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

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

void TestAllTypesLite_OptionalGroup::Swap(TestAllTypesLite_OptionalGroup* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestAllTypesLite_OptionalGroup::InternalSwap(TestAllTypesLite_OptionalGroup* other) {
  using std::swap;
  swap(a_, other->a_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestAllTypesLite_OptionalGroup::GetTypeName() const {
  return "protobuf_unittest.TestAllTypesLite.OptionalGroup";
}


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

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

TestAllTypesLite_RepeatedGroup::TestAllTypesLite_RepeatedGroup()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_RepeatedGroup.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestAllTypesLite.RepeatedGroup)
}
TestAllTypesLite_RepeatedGroup::TestAllTypesLite_RepeatedGroup(const TestAllTypesLite_RepeatedGroup& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  a_ = from.a_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestAllTypesLite.RepeatedGroup)
}

void TestAllTypesLite_RepeatedGroup::SharedCtor() {
  a_ = 0;
}

TestAllTypesLite_RepeatedGroup::~TestAllTypesLite_RepeatedGroup() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestAllTypesLite.RepeatedGroup)
  SharedDtor();
}

void TestAllTypesLite_RepeatedGroup::SharedDtor() {
}

void TestAllTypesLite_RepeatedGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestAllTypesLite_RepeatedGroup& TestAllTypesLite_RepeatedGroup::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite_RepeatedGroup.base);
  return *internal_default_instance();
}


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

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

bool TestAllTypesLite_RepeatedGroup::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.TestAllTypesLite.RepeatedGroup)
  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)) {
      // optional int32 a = 47;
      case 47: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(120u /* 376 & 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;
      }

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

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

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

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

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

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

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

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

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

void TestAllTypesLite_RepeatedGroup::MergeFrom(const TestAllTypesLite_RepeatedGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestAllTypesLite.RepeatedGroup)
  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_a()) {
    set_a(from.a());
  }
}

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

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

void TestAllTypesLite_RepeatedGroup::Swap(TestAllTypesLite_RepeatedGroup* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestAllTypesLite_RepeatedGroup::InternalSwap(TestAllTypesLite_RepeatedGroup* other) {
  using std::swap;
  swap(a_, other->a_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestAllTypesLite_RepeatedGroup::GetTypeName() const {
  return "protobuf_unittest.TestAllTypesLite.RepeatedGroup";
}


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

void TestAllTypesLite::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optionalgroup_ = const_cast< ::protobuf_unittest::TestAllTypesLite_OptionalGroup*>(
      ::protobuf_unittest::TestAllTypesLite_OptionalGroup::internal_default_instance());
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optional_nested_message_ = const_cast< ::protobuf_unittest::TestAllTypesLite_NestedMessage*>(
      ::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optional_foreign_message_ = const_cast< ::protobuf_unittest::ForeignMessageLite*>(
      ::protobuf_unittest::ForeignMessageLite::internal_default_instance());
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optional_import_message_ = const_cast< ::protobuf_unittest_import::ImportMessageLite*>(
      ::protobuf_unittest_import::ImportMessageLite::internal_default_instance());
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optional_public_import_message_ = const_cast< ::protobuf_unittest_import::PublicImportMessageLite*>(
      ::protobuf_unittest_import::PublicImportMessageLite::internal_default_instance());
  ::protobuf_unittest::_TestAllTypesLite_default_instance_._instance.get_mutable()->optional_lazy_message_ = const_cast< ::protobuf_unittest::TestAllTypesLite_NestedMessage*>(
      ::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
}
void TestAllTypesLite::clear_optional_import_message() {
  if (optional_import_message_ != NULL) optional_import_message_->Clear();
  clear_has_optional_import_message();
}
void TestAllTypesLite::clear_optional_public_import_message() {
  if (optional_public_import_message_ != NULL) optional_public_import_message_->Clear();
  clear_has_optional_public_import_message();
}
void TestAllTypesLite::clear_repeated_import_message() {
  repeated_import_message_.Clear();
}
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_;
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_;
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_;
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_;
void TestAllTypesLite::set_allocated_oneof_nested_message(::protobuf_unittest::TestAllTypesLite_NestedMessage* oneof_nested_message) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (oneof_nested_message) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      oneof_nested_message = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, oneof_nested_message, submessage_arena);
    }
    set_has_oneof_nested_message();
    oneof_field_.oneof_nested_message_ = oneof_nested_message;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestAllTypesLite.oneof_nested_message)
}
void TestAllTypesLite::set_allocated_oneof_lazy_nested_message(::protobuf_unittest::TestAllTypesLite_NestedMessage* oneof_lazy_nested_message) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (oneof_lazy_nested_message) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      oneof_lazy_nested_message = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, oneof_lazy_nested_message, submessage_arena);
    }
    set_has_oneof_lazy_nested_message();
    oneof_field_.oneof_lazy_nested_message_ = oneof_lazy_nested_message;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestAllTypesLite.oneof_lazy_nested_message)
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestAllTypesLite::kOptionalInt32FieldNumber;
const int TestAllTypesLite::kOptionalInt64FieldNumber;
const int TestAllTypesLite::kOptionalUint32FieldNumber;
const int TestAllTypesLite::kOptionalUint64FieldNumber;
const int TestAllTypesLite::kOptionalSint32FieldNumber;
const int TestAllTypesLite::kOptionalSint64FieldNumber;
const int TestAllTypesLite::kOptionalFixed32FieldNumber;
const int TestAllTypesLite::kOptionalFixed64FieldNumber;
const int TestAllTypesLite::kOptionalSfixed32FieldNumber;
const int TestAllTypesLite::kOptionalSfixed64FieldNumber;
const int TestAllTypesLite::kOptionalFloatFieldNumber;
const int TestAllTypesLite::kOptionalDoubleFieldNumber;
const int TestAllTypesLite::kOptionalBoolFieldNumber;
const int TestAllTypesLite::kOptionalStringFieldNumber;
const int TestAllTypesLite::kOptionalBytesFieldNumber;
const int TestAllTypesLite::kOptionalgroupFieldNumber;
const int TestAllTypesLite::kOptionalNestedMessageFieldNumber;
const int TestAllTypesLite::kOptionalForeignMessageFieldNumber;
const int TestAllTypesLite::kOptionalImportMessageFieldNumber;
const int TestAllTypesLite::kOptionalNestedEnumFieldNumber;
const int TestAllTypesLite::kOptionalForeignEnumFieldNumber;
const int TestAllTypesLite::kOptionalImportEnumFieldNumber;
const int TestAllTypesLite::kOptionalStringPieceFieldNumber;
const int TestAllTypesLite::kOptionalCordFieldNumber;
const int TestAllTypesLite::kOptionalPublicImportMessageFieldNumber;
const int TestAllTypesLite::kOptionalLazyMessageFieldNumber;
const int TestAllTypesLite::kRepeatedInt32FieldNumber;
const int TestAllTypesLite::kRepeatedInt64FieldNumber;
const int TestAllTypesLite::kRepeatedUint32FieldNumber;
const int TestAllTypesLite::kRepeatedUint64FieldNumber;
const int TestAllTypesLite::kRepeatedSint32FieldNumber;
const int TestAllTypesLite::kRepeatedSint64FieldNumber;
const int TestAllTypesLite::kRepeatedFixed32FieldNumber;
const int TestAllTypesLite::kRepeatedFixed64FieldNumber;
const int TestAllTypesLite::kRepeatedSfixed32FieldNumber;
const int TestAllTypesLite::kRepeatedSfixed64FieldNumber;
const int TestAllTypesLite::kRepeatedFloatFieldNumber;
const int TestAllTypesLite::kRepeatedDoubleFieldNumber;
const int TestAllTypesLite::kRepeatedBoolFieldNumber;
const int TestAllTypesLite::kRepeatedStringFieldNumber;
const int TestAllTypesLite::kRepeatedBytesFieldNumber;
const int TestAllTypesLite::kRepeatedgroupFieldNumber;
const int TestAllTypesLite::kRepeatedNestedMessageFieldNumber;
const int TestAllTypesLite::kRepeatedForeignMessageFieldNumber;
const int TestAllTypesLite::kRepeatedImportMessageFieldNumber;
const int TestAllTypesLite::kRepeatedNestedEnumFieldNumber;
const int TestAllTypesLite::kRepeatedForeignEnumFieldNumber;
const int TestAllTypesLite::kRepeatedImportEnumFieldNumber;
const int TestAllTypesLite::kRepeatedStringPieceFieldNumber;
const int TestAllTypesLite::kRepeatedCordFieldNumber;
const int TestAllTypesLite::kRepeatedLazyMessageFieldNumber;
const int TestAllTypesLite::kDefaultInt32FieldNumber;
const int TestAllTypesLite::kDefaultInt64FieldNumber;
const int TestAllTypesLite::kDefaultUint32FieldNumber;
const int TestAllTypesLite::kDefaultUint64FieldNumber;
const int TestAllTypesLite::kDefaultSint32FieldNumber;
const int TestAllTypesLite::kDefaultSint64FieldNumber;
const int TestAllTypesLite::kDefaultFixed32FieldNumber;
const int TestAllTypesLite::kDefaultFixed64FieldNumber;
const int TestAllTypesLite::kDefaultSfixed32FieldNumber;
const int TestAllTypesLite::kDefaultSfixed64FieldNumber;
const int TestAllTypesLite::kDefaultFloatFieldNumber;
const int TestAllTypesLite::kDefaultDoubleFieldNumber;
const int TestAllTypesLite::kDefaultBoolFieldNumber;
const int TestAllTypesLite::kDefaultStringFieldNumber;
const int TestAllTypesLite::kDefaultBytesFieldNumber;
const int TestAllTypesLite::kDefaultNestedEnumFieldNumber;
const int TestAllTypesLite::kDefaultForeignEnumFieldNumber;
const int TestAllTypesLite::kDefaultImportEnumFieldNumber;
const int TestAllTypesLite::kDefaultStringPieceFieldNumber;
const int TestAllTypesLite::kDefaultCordFieldNumber;
const int TestAllTypesLite::kOneofUint32FieldNumber;
const int TestAllTypesLite::kOneofNestedMessageFieldNumber;
const int TestAllTypesLite::kOneofStringFieldNumber;
const int TestAllTypesLite::kOneofBytesFieldNumber;
const int TestAllTypesLite::kOneofLazyNestedMessageFieldNumber;
const int TestAllTypesLite::kDeceptivelyNamedListFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestAllTypesLite::TestAllTypesLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestAllTypesLite)
}
TestAllTypesLite::TestAllTypesLite(const TestAllTypesLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_int32_(from.repeated_int32_),
      repeated_int64_(from.repeated_int64_),
      repeated_uint32_(from.repeated_uint32_),
      repeated_uint64_(from.repeated_uint64_),
      repeated_sint32_(from.repeated_sint32_),
      repeated_sint64_(from.repeated_sint64_),
      repeated_fixed32_(from.repeated_fixed32_),
      repeated_fixed64_(from.repeated_fixed64_),
      repeated_sfixed32_(from.repeated_sfixed32_),
      repeated_sfixed64_(from.repeated_sfixed64_),
      repeated_float_(from.repeated_float_),
      repeated_double_(from.repeated_double_),
      repeated_bool_(from.repeated_bool_),
      repeated_string_(from.repeated_string_),
      repeated_bytes_(from.repeated_bytes_),
      repeatedgroup_(from.repeatedgroup_),
      repeated_nested_message_(from.repeated_nested_message_),
      repeated_foreign_message_(from.repeated_foreign_message_),
      repeated_import_message_(from.repeated_import_message_),
      repeated_nested_enum_(from.repeated_nested_enum_),
      repeated_foreign_enum_(from.repeated_foreign_enum_),
      repeated_import_enum_(from.repeated_import_enum_),
      repeated_string_piece_(from.repeated_string_piece_),
      repeated_cord_(from.repeated_cord_),
      repeated_lazy_message_(from.repeated_lazy_message_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  optional_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_string()) {
    optional_string_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_);
  }
  optional_bytes_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_bytes()) {
    optional_bytes_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_bytes_);
  }
  optional_string_piece_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_string_piece()) {
    optional_string_piece_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_piece_);
  }
  optional_cord_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_cord()) {
    optional_cord_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_cord_);
  }
  default_string_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get());
  if (from.has_default_string()) {
    default_string_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get(), from.default_string_);
  }
  default_bytes_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get());
  if (from.has_default_bytes()) {
    default_bytes_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get(), from.default_bytes_);
  }
  default_string_piece_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get());
  if (from.has_default_string_piece()) {
    default_string_piece_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get(), from.default_string_piece_);
  }
  default_cord_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get());
  if (from.has_default_cord()) {
    default_cord_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get(), from.default_cord_);
  }
  if (from.has_optionalgroup()) {
    optionalgroup_ = new ::protobuf_unittest::TestAllTypesLite_OptionalGroup(*from.optionalgroup_);
  } else {
    optionalgroup_ = NULL;
  }
  if (from.has_optional_nested_message()) {
    optional_nested_message_ = new ::protobuf_unittest::TestAllTypesLite_NestedMessage(*from.optional_nested_message_);
  } else {
    optional_nested_message_ = NULL;
  }
  if (from.has_optional_foreign_message()) {
    optional_foreign_message_ = new ::protobuf_unittest::ForeignMessageLite(*from.optional_foreign_message_);
  } else {
    optional_foreign_message_ = NULL;
  }
  if (from.has_optional_import_message()) {
    optional_import_message_ = new ::protobuf_unittest_import::ImportMessageLite(*from.optional_import_message_);
  } else {
    optional_import_message_ = NULL;
  }
  if (from.has_optional_public_import_message()) {
    optional_public_import_message_ = new ::protobuf_unittest_import::PublicImportMessageLite(*from.optional_public_import_message_);
  } else {
    optional_public_import_message_ = NULL;
  }
  if (from.has_optional_lazy_message()) {
    optional_lazy_message_ = new ::protobuf_unittest::TestAllTypesLite_NestedMessage(*from.optional_lazy_message_);
  } else {
    optional_lazy_message_ = NULL;
  }
  ::memcpy(&optional_int64_, &from.optional_int64_,
    static_cast<size_t>(reinterpret_cast<char*>(&default_foreign_enum_) -
    reinterpret_cast<char*>(&optional_int64_)) + sizeof(default_foreign_enum_));
  clear_has_oneof_field();
  switch (from.oneof_field_case()) {
    case kOneofUint32: {
      set_oneof_uint32(from.oneof_uint32());
      break;
    }
    case kOneofNestedMessage: {
      mutable_oneof_nested_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.oneof_nested_message());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case kOneofLazyNestedMessage: {
      mutable_oneof_lazy_nested_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.oneof_lazy_nested_message());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestAllTypesLite)
}

void TestAllTypesLite::SharedCtor() {
  optional_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_bytes_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_string_piece_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_cord_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  default_string_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get());
  default_bytes_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get());
  default_string_piece_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get());
  default_cord_.UnsafeSetDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get());
  ::memset(&optionalgroup_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&deceptively_named_list_) -
      reinterpret_cast<char*>(&optionalgroup_)) + sizeof(deceptively_named_list_));
  default_import_enum_ = 8;
  optional_nested_enum_ = 1;
  optional_foreign_enum_ = 4;
  optional_import_enum_ = 7;
  default_int32_ = 41;
  default_int64_ = GOOGLE_LONGLONG(42);
  default_uint64_ = GOOGLE_ULONGLONG(44);
  default_uint32_ = 43u;
  default_sint32_ = -45;
  default_sint64_ = GOOGLE_LONGLONG(46);
  default_fixed64_ = GOOGLE_ULONGLONG(48);
  default_fixed32_ = 47u;
  default_sfixed32_ = 49;
  default_sfixed64_ = GOOGLE_LONGLONG(-50);
  default_double_ = 52000;
  default_float_ = 51.5f;
  default_bool_ = true;
  default_nested_enum_ = 2;
  default_foreign_enum_ = 5;
  clear_has_oneof_field();
}

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

void TestAllTypesLite::SharedDtor() {
  optional_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_bytes_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_string_piece_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_cord_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  default_string_.DestroyNoArena(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get());
  default_bytes_.DestroyNoArena(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get());
  default_string_piece_.DestroyNoArena(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get());
  default_cord_.DestroyNoArena(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get());
  if (this != internal_default_instance()) delete optionalgroup_;
  if (this != internal_default_instance()) delete optional_nested_message_;
  if (this != internal_default_instance()) delete optional_foreign_message_;
  if (this != internal_default_instance()) delete optional_import_message_;
  if (this != internal_default_instance()) delete optional_public_import_message_;
  if (this != internal_default_instance()) delete optional_lazy_message_;
  if (has_oneof_field()) {
    clear_oneof_field();
  }
}

void TestAllTypesLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestAllTypesLite& TestAllTypesLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllTypesLite.base);
  return *internal_default_instance();
}


void TestAllTypesLite::clear_oneof_field() {
// @@protoc_insertion_point(one_of_clear_start:protobuf_unittest.TestAllTypesLite)
  switch (oneof_field_case()) {
    case kOneofUint32: {
      // No need to clear
      break;
    }
    case kOneofNestedMessage: {
      delete oneof_field_.oneof_nested_message_;
      break;
    }
    case kOneofString: {
      oneof_field_.oneof_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofBytes: {
      oneof_field_.oneof_bytes_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofLazyNestedMessage: {
      delete oneof_field_.oneof_lazy_nested_message_;
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = ONEOF_FIELD_NOT_SET;
}


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

  repeated_int32_.Clear();
  repeated_int64_.Clear();
  repeated_uint32_.Clear();
  repeated_uint64_.Clear();
  repeated_sint32_.Clear();
  repeated_sint64_.Clear();
  repeated_fixed32_.Clear();
  repeated_fixed64_.Clear();
  repeated_sfixed32_.Clear();
  repeated_sfixed64_.Clear();
  repeated_float_.Clear();
  repeated_double_.Clear();
  repeated_bool_.Clear();
  repeated_string_.Clear();
  repeated_bytes_.Clear();
  repeatedgroup_.Clear();
  repeated_nested_message_.Clear();
  repeated_foreign_message_.Clear();
  repeated_import_message_.Clear();
  repeated_nested_enum_.Clear();
  repeated_foreign_enum_.Clear();
  repeated_import_enum_.Clear();
  repeated_string_piece_.Clear();
  repeated_cord_.Clear();
  repeated_lazy_message_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 255u) {
    if (cached_has_bits & 0x00000001u) {
      optional_string_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      optional_bytes_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      optional_string_piece_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000008u) {
      optional_cord_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000010u) {
      default_string_.UnsafeMutablePointer()->assign(*&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get());
    }
    if (cached_has_bits & 0x00000020u) {
      default_bytes_.UnsafeMutablePointer()->assign(*&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get());
    }
    if (cached_has_bits & 0x00000040u) {
      default_string_piece_.UnsafeMutablePointer()->assign(*&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get());
    }
    if (cached_has_bits & 0x00000080u) {
      default_cord_.UnsafeMutablePointer()->assign(*&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get());
    }
  }
  if (cached_has_bits & 16128u) {
    if (cached_has_bits & 0x00000100u) {
      GOOGLE_DCHECK(optionalgroup_ != NULL);
      optionalgroup_->Clear();
    }
    if (cached_has_bits & 0x00000200u) {
      GOOGLE_DCHECK(optional_nested_message_ != NULL);
      optional_nested_message_->Clear();
    }
    if (cached_has_bits & 0x00000400u) {
      GOOGLE_DCHECK(optional_foreign_message_ != NULL);
      optional_foreign_message_->Clear();
    }
    if (cached_has_bits & 0x00000800u) {
      GOOGLE_DCHECK(optional_import_message_ != NULL);
      optional_import_message_->Clear();
    }
    if (cached_has_bits & 0x00001000u) {
      GOOGLE_DCHECK(optional_public_import_message_ != NULL);
      optional_public_import_message_->Clear();
    }
    if (cached_has_bits & 0x00002000u) {
      GOOGLE_DCHECK(optional_lazy_message_ != NULL);
      optional_lazy_message_->Clear();
    }
  }
  if (cached_has_bits & 49152u) {
    ::memset(&optional_int64_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&optional_int32_) -
        reinterpret_cast<char*>(&optional_int64_)) + sizeof(optional_int32_));
  }
  if (cached_has_bits & 16711680u) {
    ::memset(&optional_uint32_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&optional_sfixed32_) -
        reinterpret_cast<char*>(&optional_uint32_)) + sizeof(optional_sfixed32_));
  }
  if (cached_has_bits & 4278190080u) {
    ::memset(&optional_float_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&deceptively_named_list_) -
        reinterpret_cast<char*>(&optional_float_)) + sizeof(deceptively_named_list_));
    default_import_enum_ = 8;
    optional_nested_enum_ = 1;
    optional_foreign_enum_ = 4;
    optional_import_enum_ = 7;
  }
  cached_has_bits = _has_bits_[1];
  if (cached_has_bits & 255u) {
    default_int32_ = 41;
    default_int64_ = GOOGLE_LONGLONG(42);
    default_uint64_ = GOOGLE_ULONGLONG(44);
    default_uint32_ = 43u;
    default_sint32_ = -45;
    default_sint64_ = GOOGLE_LONGLONG(46);
    default_fixed64_ = GOOGLE_ULONGLONG(48);
    default_fixed32_ = 47u;
  }
  if (cached_has_bits & 32512u) {
    default_sfixed32_ = 49;
    default_sfixed64_ = GOOGLE_LONGLONG(-50);
    default_double_ = 52000;
    default_float_ = 51.5f;
    default_bool_ = true;
    default_nested_enum_ = 2;
    default_foreign_enum_ = 5;
  }
  clear_oneof_field();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestAllTypesLite::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.TestAllTypesLite)
  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)) {
      // optional int32 optional_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_optional_int32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &optional_int32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 optional_int64 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          set_has_optional_int64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &optional_int64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 optional_uint32 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
          set_has_optional_uint32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &optional_uint32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint64 optional_uint64 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
          set_has_optional_uint64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &optional_uint64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sint32 optional_sint32 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
          set_has_optional_sint32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, &optional_sint32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sint64 optional_sint64 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
          set_has_optional_sint64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 input, &optional_sint64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 optional_fixed32 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(61u /* 61 & 0xFF */)) {
          set_has_optional_fixed32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &optional_fixed32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed64 optional_fixed64 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(65u /* 65 & 0xFF */)) {
          set_has_optional_fixed64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 input, &optional_fixed64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sfixed32 optional_sfixed32 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(77u /* 77 & 0xFF */)) {
          set_has_optional_sfixed32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 input, &optional_sfixed32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sfixed64 optional_sfixed64 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(81u /* 81 & 0xFF */)) {
          set_has_optional_sfixed64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 input, &optional_sfixed64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional float optional_float = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(93u /* 93 & 0xFF */)) {
          set_has_optional_float();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &optional_float_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double optional_double = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(97u /* 97 & 0xFF */)) {
          set_has_optional_double();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &optional_double_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool optional_bool = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(104u /* 104 & 0xFF */)) {
          set_has_optional_bool();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &optional_bool_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string optional_string = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_optional_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes optional_bytes = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_optional_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional group OptionalGroup = 16 { ... };
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(131u /* 131 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(
                16, input, mutable_optionalgroup()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_nested_message = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_nested_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.ForeignMessageLite optional_foreign_message = 19;
      case 19: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 154 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_foreign_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest_import.ImportMessageLite optional_import_message = 20;
      case 20: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(162u /* 162 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_import_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedEnum optional_nested_enum = 21;
      case 21: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(168u /* 168 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid(value)) {
            set_optional_nested_enum(static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(value));
          } else {
            unknown_fields_stream.WriteVarint32(168u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.ForeignEnumLite optional_foreign_enum = 22;
      case 22: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(176u /* 176 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
            set_optional_foreign_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(176u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest_import.ImportEnumLite optional_import_enum = 23;
      case 23: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(184u /* 184 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest_import::ImportEnumLite_IsValid(value)) {
            set_optional_import_enum(static_cast< ::protobuf_unittest_import::ImportEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(184u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string optional_string_piece = 24 [ctype = STRING_PIECE];
      case 24: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(194u /* 194 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_optional_string_piece()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string optional_cord = 25 [ctype = CORD];
      case 25: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(202u /* 202 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_optional_cord()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest_import.PublicImportMessageLite optional_public_import_message = 26;
      case 26: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(210u /* 210 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_public_import_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_lazy_message = 27 [lazy = true];
      case 27: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(218u /* 218 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_lazy_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int32 repeated_int32 = 31;
      case 31: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(248u /* 248 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 2, 248u, input, this->mutable_repeated_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(250u /* 250 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_repeated_int32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int64 repeated_int64 = 32;
      case 32: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(0u /* 256 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 2, 256u, input, this->mutable_repeated_int64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 258 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, this->mutable_repeated_int64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated uint32 repeated_uint32 = 33;
      case 33: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 264 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 2, 264u, input, this->mutable_repeated_uint32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 266 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, this->mutable_repeated_uint32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated uint64 repeated_uint64 = 34;
      case 34: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 272 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 2, 272u, input, this->mutable_repeated_uint64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 274 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_repeated_uint64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sint32 repeated_sint32 = 35;
      case 35: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 280 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 2, 280u, input, this->mutable_repeated_sint32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 282 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, this->mutable_repeated_sint32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sint64 repeated_sint64 = 36;
      case 36: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 288 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 2, 288u, input, this->mutable_repeated_sint64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 290 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 input, this->mutable_repeated_sint64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated fixed32 repeated_fixed32 = 37;
      case 37: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(45u /* 301 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 2, 301u, input, this->mutable_repeated_fixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 298 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, this->mutable_repeated_fixed32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated fixed64 repeated_fixed64 = 38;
      case 38: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(49u /* 305 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 2, 305u, input, this->mutable_repeated_fixed64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 306 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 input, this->mutable_repeated_fixed64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sfixed32 repeated_sfixed32 = 39;
      case 39: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(61u /* 317 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 2, 317u, input, this->mutable_repeated_sfixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 314 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 input, this->mutable_repeated_sfixed32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sfixed64 repeated_sfixed64 = 40;
      case 40: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(65u /* 321 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 2, 321u, input, this->mutable_repeated_sfixed64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 322 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 input, this->mutable_repeated_sfixed64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated float repeated_float = 41;
      case 41: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(77u /* 333 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 2, 333u, input, this->mutable_repeated_float())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 330 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 input, this->mutable_repeated_float())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated double repeated_double = 42;
      case 42: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(81u /* 337 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 2, 337u, input, this->mutable_repeated_double())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 338 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, this->mutable_repeated_double())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated bool repeated_bool = 43;
      case 43: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(88u /* 344 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 2, 344u, input, this->mutable_repeated_bool())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 346 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, this->mutable_repeated_bool())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated string repeated_string = 44;
      case 44: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 354 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_repeated_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated bytes repeated_bytes = 45;
      case 45: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(106u /* 362 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->add_repeated_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated group RepeatedGroup = 46 { ... };
      case 46: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(115u /* 371 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(46, input, add_repeatedgroup()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_nested_message = 48;
      case 48: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 386 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_repeated_nested_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.ForeignMessageLite repeated_foreign_message = 49;
      case 49: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 394 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_repeated_foreign_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest_import.ImportMessageLite repeated_import_message = 50;
      case 50: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 402 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_repeated_import_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.TestAllTypesLite.NestedEnum repeated_nested_enum = 51;
      case 51: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(152u /* 408 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid(value)) {
            add_repeated_nested_enum(static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(value));
          } else {
            unknown_fields_stream.WriteVarint32(tag);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 410 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumPreserveUnknowns(
                 input,
                 51,
                 ::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid,
                 &unknown_fields_stream,
                 this->mutable_repeated_nested_enum())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.ForeignEnumLite repeated_foreign_enum = 52;
      case 52: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(160u /* 416 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
            add_repeated_foreign_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(tag);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(162u /* 418 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumPreserveUnknowns(
                 input,
                 52,
                 ::protobuf_unittest::ForeignEnumLite_IsValid,
                 &unknown_fields_stream,
                 this->mutable_repeated_foreign_enum())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest_import.ImportEnumLite repeated_import_enum = 53;
      case 53: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(168u /* 424 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest_import::ImportEnumLite_IsValid(value)) {
            add_repeated_import_enum(static_cast< ::protobuf_unittest_import::ImportEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(tag);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(170u /* 426 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumPreserveUnknowns(
                 input,
                 53,
                 ::protobuf_unittest_import::ImportEnumLite_IsValid,
                 &unknown_fields_stream,
                 this->mutable_repeated_import_enum())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated string repeated_string_piece = 54 [ctype = STRING_PIECE];
      case 54: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(178u /* 434 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_repeated_string_piece()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated string repeated_cord = 55 [ctype = CORD];
      case 55: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(186u /* 442 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_repeated_cord()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_lazy_message = 57 [lazy = true];
      case 57: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(202u /* 458 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_repeated_lazy_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 default_int32 = 61 [default = 41];
      case 61: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(232u /* 488 & 0xFF */)) {
          set_has_default_int32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &default_int32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 default_int64 = 62 [default = 42];
      case 62: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(240u /* 496 & 0xFF */)) {
          set_has_default_int64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &default_int64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 default_uint32 = 63 [default = 43];
      case 63: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(248u /* 504 & 0xFF */)) {
          set_has_default_uint32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &default_uint32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint64 default_uint64 = 64 [default = 44];
      case 64: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(0u /* 512 & 0xFF */)) {
          set_has_default_uint64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &default_uint64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sint32 default_sint32 = 65 [default = -45];
      case 65: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 520 & 0xFF */)) {
          set_has_default_sint32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, &default_sint32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sint64 default_sint64 = 66 [default = 46];
      case 66: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 528 & 0xFF */)) {
          set_has_default_sint64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 input, &default_sint64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 default_fixed32 = 67 [default = 47];
      case 67: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(29u /* 541 & 0xFF */)) {
          set_has_default_fixed32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &default_fixed32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed64 default_fixed64 = 68 [default = 48];
      case 68: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(33u /* 545 & 0xFF */)) {
          set_has_default_fixed64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 input, &default_fixed64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sfixed32 default_sfixed32 = 69 [default = 49];
      case 69: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(45u /* 557 & 0xFF */)) {
          set_has_default_sfixed32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 input, &default_sfixed32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional sfixed64 default_sfixed64 = 70 [default = -50];
      case 70: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(49u /* 561 & 0xFF */)) {
          set_has_default_sfixed64();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 input, &default_sfixed64_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional float default_float = 71 [default = 51.5];
      case 71: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(61u /* 573 & 0xFF */)) {
          set_has_default_float();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &default_float_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double default_double = 72 [default = 52000];
      case 72: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(65u /* 577 & 0xFF */)) {
          set_has_default_double();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &default_double_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool default_bool = 73 [default = true];
      case 73: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(72u /* 584 & 0xFF */)) {
          set_has_default_bool();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &default_bool_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string default_string = 74 [default = "hello"];
      case 74: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 594 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_default_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes default_bytes = 75 [default = "world"];
      case 75: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 602 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_default_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedEnum default_nested_enum = 81 [default = BAR];
      case 81: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(136u /* 648 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid(value)) {
            set_default_nested_enum(static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(value));
          } else {
            unknown_fields_stream.WriteVarint32(648u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.ForeignEnumLite default_foreign_enum = 82 [default = FOREIGN_LITE_BAR];
      case 82: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(144u /* 656 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
            set_default_foreign_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(656u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest_import.ImportEnumLite default_import_enum = 83 [default = IMPORT_LITE_BAR];
      case 83: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(152u /* 664 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest_import::ImportEnumLite_IsValid(value)) {
            set_default_import_enum(static_cast< ::protobuf_unittest_import::ImportEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(664u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string default_string_piece = 84 [default = "abc", ctype = STRING_PIECE];
      case 84: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(162u /* 674 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_default_string_piece()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string default_cord = 85 [default = "123", ctype = CORD];
      case 85: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(170u /* 682 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_default_cord()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 oneof_uint32 = 111;
      case 111: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(120u /* 888 & 0xFF */)) {
          clear_oneof_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &oneof_field_.oneof_uint32_)));
          set_has_oneof_uint32();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedMessage oneof_nested_message = 112;
      case 112: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(130u /* 898 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_oneof_nested_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string oneof_string = 113;
      case 113: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(138u /* 906 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oneof_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes oneof_bytes = 114;
      case 114: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 914 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_oneof_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite.NestedMessage oneof_lazy_nested_message = 115 [lazy = true];
      case 115: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 922 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_oneof_lazy_nested_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 deceptively_named_list = 116;
      case 116: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(160u /* 928 & 0xFF */)) {
          set_has_deceptively_named_list();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &deceptively_named_list_)));
        } 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.TestAllTypesLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestAllTypesLite)
  return false;
#undef DO_
}

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

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

  // optional int64 optional_int64 = 2;
  if (cached_has_bits & 0x00004000u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->optional_int64(), output);
  }

  // optional uint32 optional_uint32 = 3;
  if (cached_has_bits & 0x00010000u) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->optional_uint32(), output);
  }

  // optional uint64 optional_uint64 = 4;
  if (cached_has_bits & 0x00020000u) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->optional_uint64(), output);
  }

  // optional sint32 optional_sint32 = 5;
  if (cached_has_bits & 0x00080000u) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(5, this->optional_sint32(), output);
  }

  // optional sint64 optional_sint64 = 6;
  if (cached_has_bits & 0x00040000u) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt64(6, this->optional_sint64(), output);
  }

  // optional fixed32 optional_fixed32 = 7;
  if (cached_has_bits & 0x00100000u) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed32(7, this->optional_fixed32(), output);
  }

  // optional fixed64 optional_fixed64 = 8;
  if (cached_has_bits & 0x00200000u) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed64(8, this->optional_fixed64(), output);
  }

  // optional sfixed32 optional_sfixed32 = 9;
  if (cached_has_bits & 0x00800000u) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed32(9, this->optional_sfixed32(), output);
  }

  // optional sfixed64 optional_sfixed64 = 10;
  if (cached_has_bits & 0x00400000u) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed64(10, this->optional_sfixed64(), output);
  }

  // optional float optional_float = 11;
  if (cached_has_bits & 0x01000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteFloat(11, this->optional_float(), output);
  }

  // optional double optional_double = 12;
  if (cached_has_bits & 0x02000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(12, this->optional_double(), output);
  }

  // optional bool optional_bool = 13;
  if (cached_has_bits & 0x04000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->optional_bool(), output);
  }

  // optional string optional_string = 14;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      14, this->optional_string(), output);
  }

  // optional bytes optional_bytes = 15;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      15, this->optional_bytes(), output);
  }

  // optional group OptionalGroup = 16 { ... };
  if (cached_has_bits & 0x00000100u) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      16, this->_internal_optionalgroup(), output);
  }

  // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_nested_message = 18;
  if (cached_has_bits & 0x00000200u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      18, this->_internal_optional_nested_message(), output);
  }

  // optional .protobuf_unittest.ForeignMessageLite optional_foreign_message = 19;
  if (cached_has_bits & 0x00000400u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      19, this->_internal_optional_foreign_message(), output);
  }

  // optional .protobuf_unittest_import.ImportMessageLite optional_import_message = 20;
  if (cached_has_bits & 0x00000800u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      20, this->_internal_optional_import_message(), output);
  }

  // optional .protobuf_unittest.TestAllTypesLite.NestedEnum optional_nested_enum = 21;
  if (cached_has_bits & 0x20000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      21, this->optional_nested_enum(), output);
  }

  // optional .protobuf_unittest.ForeignEnumLite optional_foreign_enum = 22;
  if (cached_has_bits & 0x40000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      22, this->optional_foreign_enum(), output);
  }

  // optional .protobuf_unittest_import.ImportEnumLite optional_import_enum = 23;
  if (cached_has_bits & 0x80000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      23, this->optional_import_enum(), output);
  }

  // optional string optional_string_piece = 24 [ctype = STRING_PIECE];
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      24, this->optional_string_piece(), output);
  }

  // optional string optional_cord = 25 [ctype = CORD];
  if (cached_has_bits & 0x00000008u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      25, this->optional_cord(), output);
  }

  // optional .protobuf_unittest_import.PublicImportMessageLite optional_public_import_message = 26;
  if (cached_has_bits & 0x00001000u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      26, this->_internal_optional_public_import_message(), output);
  }

  // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_lazy_message = 27 [lazy = true];
  if (cached_has_bits & 0x00002000u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      27, this->_internal_optional_lazy_message(), output);
  }

  // repeated int32 repeated_int32 = 31;
  for (int i = 0, n = this->repeated_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(
      31, this->repeated_int32(i), output);
  }

  // repeated int64 repeated_int64 = 32;
  for (int i = 0, n = this->repeated_int64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(
      32, this->repeated_int64(i), output);
  }

  // repeated uint32 repeated_uint32 = 33;
  for (int i = 0, n = this->repeated_uint32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
      33, this->repeated_uint32(i), output);
  }

  // repeated uint64 repeated_uint64 = 34;
  for (int i = 0, n = this->repeated_uint64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(
      34, this->repeated_uint64(i), output);
  }

  // repeated sint32 repeated_sint32 = 35;
  for (int i = 0, n = this->repeated_sint32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(
      35, this->repeated_sint32(i), output);
  }

  // repeated sint64 repeated_sint64 = 36;
  for (int i = 0, n = this->repeated_sint64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt64(
      36, this->repeated_sint64(i), output);
  }

  // repeated fixed32 repeated_fixed32 = 37;
  for (int i = 0, n = this->repeated_fixed32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed32(
      37, this->repeated_fixed32(i), output);
  }

  // repeated fixed64 repeated_fixed64 = 38;
  for (int i = 0, n = this->repeated_fixed64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed64(
      38, this->repeated_fixed64(i), output);
  }

  // repeated sfixed32 repeated_sfixed32 = 39;
  for (int i = 0, n = this->repeated_sfixed32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed32(
      39, this->repeated_sfixed32(i), output);
  }

  // repeated sfixed64 repeated_sfixed64 = 40;
  for (int i = 0, n = this->repeated_sfixed64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed64(
      40, this->repeated_sfixed64(i), output);
  }

  // repeated float repeated_float = 41;
  for (int i = 0, n = this->repeated_float_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteFloat(
      41, this->repeated_float(i), output);
  }

  // repeated double repeated_double = 42;
  for (int i = 0, n = this->repeated_double_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(
      42, this->repeated_double(i), output);
  }

  // repeated bool repeated_bool = 43;
  for (int i = 0, n = this->repeated_bool_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(
      43, this->repeated_bool(i), output);
  }

  // repeated string repeated_string = 44;
  for (int i = 0, n = this->repeated_string_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      44, this->repeated_string(i), output);
  }

  // repeated bytes repeated_bytes = 45;
  for (int i = 0, n = this->repeated_bytes_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      45, this->repeated_bytes(i), output);
  }

  // repeated group RepeatedGroup = 46 { ... };
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeatedgroup_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      46,
      this->repeatedgroup(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_nested_message = 48;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeated_nested_message_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      48,
      this->repeated_nested_message(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.ForeignMessageLite repeated_foreign_message = 49;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeated_foreign_message_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      49,
      this->repeated_foreign_message(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest_import.ImportMessageLite repeated_import_message = 50;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeated_import_message_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      50,
      this->repeated_import_message(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedEnum repeated_nested_enum = 51;
  for (int i = 0, n = this->repeated_nested_enum_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      51, this->repeated_nested_enum(i), output);
  }

  // repeated .protobuf_unittest.ForeignEnumLite repeated_foreign_enum = 52;
  for (int i = 0, n = this->repeated_foreign_enum_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      52, this->repeated_foreign_enum(i), output);
  }

  // repeated .protobuf_unittest_import.ImportEnumLite repeated_import_enum = 53;
  for (int i = 0, n = this->repeated_import_enum_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      53, this->repeated_import_enum(i), output);
  }

  // repeated string repeated_string_piece = 54 [ctype = STRING_PIECE];
  for (int i = 0, n = this->repeated_string_piece_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      54, this->repeated_string_piece(i), output);
  }

  // repeated string repeated_cord = 55 [ctype = CORD];
  for (int i = 0, n = this->repeated_cord_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      55, this->repeated_cord(i), output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_lazy_message = 57 [lazy = true];
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeated_lazy_message_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      57,
      this->repeated_lazy_message(static_cast<int>(i)),
      output);
  }

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

  // optional int64 default_int64 = 62 [default = 42];
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(62, this->default_int64(), output);
  }

  // optional uint32 default_uint32 = 63 [default = 43];
  if (cached_has_bits & 0x00000008u) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(63, this->default_uint32(), output);
  }

  // optional uint64 default_uint64 = 64 [default = 44];
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(64, this->default_uint64(), output);
  }

  // optional sint32 default_sint32 = 65 [default = -45];
  if (cached_has_bits & 0x00000010u) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(65, this->default_sint32(), output);
  }

  // optional sint64 default_sint64 = 66 [default = 46];
  if (cached_has_bits & 0x00000020u) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt64(66, this->default_sint64(), output);
  }

  // optional fixed32 default_fixed32 = 67 [default = 47];
  if (cached_has_bits & 0x00000080u) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed32(67, this->default_fixed32(), output);
  }

  // optional fixed64 default_fixed64 = 68 [default = 48];
  if (cached_has_bits & 0x00000040u) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed64(68, this->default_fixed64(), output);
  }

  // optional sfixed32 default_sfixed32 = 69 [default = 49];
  if (cached_has_bits & 0x00000100u) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed32(69, this->default_sfixed32(), output);
  }

  // optional sfixed64 default_sfixed64 = 70 [default = -50];
  if (cached_has_bits & 0x00000200u) {
    ::google::protobuf::internal::WireFormatLite::WriteSFixed64(70, this->default_sfixed64(), output);
  }

  // optional float default_float = 71 [default = 51.5];
  if (cached_has_bits & 0x00000800u) {
    ::google::protobuf::internal::WireFormatLite::WriteFloat(71, this->default_float(), output);
  }

  // optional double default_double = 72 [default = 52000];
  if (cached_has_bits & 0x00000400u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(72, this->default_double(), output);
  }

  // optional bool default_bool = 73 [default = true];
  if (cached_has_bits & 0x00001000u) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(73, this->default_bool(), output);
  }

  cached_has_bits = _has_bits_[0];
  // optional string default_string = 74 [default = "hello"];
  if (cached_has_bits & 0x00000010u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      74, this->default_string(), output);
  }

  // optional bytes default_bytes = 75 [default = "world"];
  if (cached_has_bits & 0x00000020u) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      75, this->default_bytes(), output);
  }

  cached_has_bits = _has_bits_[1];
  // optional .protobuf_unittest.TestAllTypesLite.NestedEnum default_nested_enum = 81 [default = BAR];
  if (cached_has_bits & 0x00002000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      81, this->default_nested_enum(), output);
  }

  // optional .protobuf_unittest.ForeignEnumLite default_foreign_enum = 82 [default = FOREIGN_LITE_BAR];
  if (cached_has_bits & 0x00004000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      82, this->default_foreign_enum(), output);
  }

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest_import.ImportEnumLite default_import_enum = 83 [default = IMPORT_LITE_BAR];
  if (cached_has_bits & 0x10000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      83, this->default_import_enum(), output);
  }

  // optional string default_string_piece = 84 [default = "abc", ctype = STRING_PIECE];
  if (cached_has_bits & 0x00000040u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      84, this->default_string_piece(), output);
  }

  // optional string default_cord = 85 [default = "123", ctype = CORD];
  if (cached_has_bits & 0x00000080u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      85, this->default_cord(), output);
  }

  switch (oneof_field_case()) {
    case kOneofUint32:
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(111, this->oneof_uint32(), output);
      break;
    case kOneofNestedMessage:
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        112, this->_internal_oneof_nested_message(), output);
      break;
    case kOneofString:
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        113, this->oneof_string(), output);
      break;
    case kOneofBytes:
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        114, this->oneof_bytes(), output);
      break;
    case kOneofLazyNestedMessage:
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        115, this->_internal_oneof_lazy_nested_message(), output);
      break;
    default: ;
  }
  // optional int32 deceptively_named_list = 116;
  if (cached_has_bits & 0x08000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(116, this->deceptively_named_list(), output);
  }

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

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

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

  // repeated int32 repeated_int32 = 31;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->repeated_int32_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_int32_size());
    total_size += data_size;
  }

  // repeated int64 repeated_int64 = 32;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int64Size(this->repeated_int64_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_int64_size());
    total_size += data_size;
  }

  // repeated uint32 repeated_uint32 = 33;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      UInt32Size(this->repeated_uint32_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_uint32_size());
    total_size += data_size;
  }

  // repeated uint64 repeated_uint64 = 34;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      UInt64Size(this->repeated_uint64_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_uint64_size());
    total_size += data_size;
  }

  // repeated sint32 repeated_sint32 = 35;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      SInt32Size(this->repeated_sint32_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_sint32_size());
    total_size += data_size;
  }

  // repeated sint64 repeated_sint64 = 36;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      SInt64Size(this->repeated_sint64_);
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_sint64_size());
    total_size += data_size;
  }

  // repeated fixed32 repeated_fixed32 = 37;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_fixed32_size());
    size_t data_size = 4UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_fixed32_size());
    total_size += data_size;
  }

  // repeated fixed64 repeated_fixed64 = 38;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_fixed64_size());
    size_t data_size = 8UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_fixed64_size());
    total_size += data_size;
  }

  // repeated sfixed32 repeated_sfixed32 = 39;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_sfixed32_size());
    size_t data_size = 4UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_sfixed32_size());
    total_size += data_size;
  }

  // repeated sfixed64 repeated_sfixed64 = 40;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_sfixed64_size());
    size_t data_size = 8UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_sfixed64_size());
    total_size += data_size;
  }

  // repeated float repeated_float = 41;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_float_size());
    size_t data_size = 4UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_float_size());
    total_size += data_size;
  }

  // repeated double repeated_double = 42;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_double_size());
    size_t data_size = 8UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_double_size());
    total_size += data_size;
  }

  // repeated bool repeated_bool = 43;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_bool_size());
    size_t data_size = 1UL * count;
    total_size += 2 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_bool_size());
    total_size += data_size;
  }

  // repeated string repeated_string = 44;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->repeated_string_size());
  for (int i = 0, n = this->repeated_string_size(); i < n; i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->repeated_string(i));
  }

  // repeated bytes repeated_bytes = 45;
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->repeated_bytes_size());
  for (int i = 0, n = this->repeated_bytes_size(); i < n; i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
      this->repeated_bytes(i));
  }

  // repeated group RepeatedGroup = 46 { ... };
  {
    unsigned int count = static_cast<unsigned int>(this->repeatedgroup_size());
    total_size += 4UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          this->repeatedgroup(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_nested_message = 48;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_nested_message_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->repeated_nested_message(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.ForeignMessageLite repeated_foreign_message = 49;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_foreign_message_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->repeated_foreign_message(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest_import.ImportMessageLite repeated_import_message = 50;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_import_message_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->repeated_import_message(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedEnum repeated_nested_enum = 51;
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->repeated_nested_enum_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
        this->repeated_nested_enum(static_cast<int>(i)));
    }
    total_size += (2UL * count) + data_size;
  }

  // repeated .protobuf_unittest.ForeignEnumLite repeated_foreign_enum = 52;
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->repeated_foreign_enum_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
        this->repeated_foreign_enum(static_cast<int>(i)));
    }
    total_size += (2UL * count) + data_size;
  }

  // repeated .protobuf_unittest_import.ImportEnumLite repeated_import_enum = 53;
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->repeated_import_enum_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
        this->repeated_import_enum(static_cast<int>(i)));
    }
    total_size += (2UL * count) + data_size;
  }

  // repeated string repeated_string_piece = 54 [ctype = STRING_PIECE];
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->repeated_string_piece_size());
  for (int i = 0, n = this->repeated_string_piece_size(); i < n; i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->repeated_string_piece(i));
  }

  // repeated string repeated_cord = 55 [ctype = CORD];
  total_size += 2 *
      ::google::protobuf::internal::FromIntSize(this->repeated_cord_size());
  for (int i = 0, n = this->repeated_cord_size(); i < n; i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->repeated_cord(i));
  }

  // repeated .protobuf_unittest.TestAllTypesLite.NestedMessage repeated_lazy_message = 57 [lazy = true];
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_lazy_message_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->repeated_lazy_message(static_cast<int>(i)));
    }
  }

  if (_has_bits_[0 / 32] & 255u) {
    // optional string optional_string = 14;
    if (has_optional_string()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->optional_string());
    }

    // optional bytes optional_bytes = 15;
    if (has_optional_bytes()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->optional_bytes());
    }

    // optional string optional_string_piece = 24 [ctype = STRING_PIECE];
    if (has_optional_string_piece()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->optional_string_piece());
    }

    // optional string optional_cord = 25 [ctype = CORD];
    if (has_optional_cord()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->optional_cord());
    }

    // optional string default_string = 74 [default = "hello"];
    if (has_default_string()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->default_string());
    }

    // optional bytes default_bytes = 75 [default = "world"];
    if (has_default_bytes()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->default_bytes());
    }

    // optional string default_string_piece = 84 [default = "abc", ctype = STRING_PIECE];
    if (has_default_string_piece()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->default_string_piece());
    }

    // optional string default_cord = 85 [default = "123", ctype = CORD];
    if (has_default_cord()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->default_cord());
    }

  }
  if (_has_bits_[8 / 32] & 65280u) {
    // optional group OptionalGroup = 16 { ... };
    if (has_optionalgroup()) {
      total_size += 4 +
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          *optionalgroup_);
    }

    // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_nested_message = 18;
    if (has_optional_nested_message()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_nested_message_);
    }

    // optional .protobuf_unittest.ForeignMessageLite optional_foreign_message = 19;
    if (has_optional_foreign_message()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_foreign_message_);
    }

    // optional .protobuf_unittest_import.ImportMessageLite optional_import_message = 20;
    if (has_optional_import_message()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_import_message_);
    }

    // optional .protobuf_unittest_import.PublicImportMessageLite optional_public_import_message = 26;
    if (has_optional_public_import_message()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_public_import_message_);
    }

    // optional .protobuf_unittest.TestAllTypesLite.NestedMessage optional_lazy_message = 27 [lazy = true];
    if (has_optional_lazy_message()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_lazy_message_);
    }

    // optional int64 optional_int64 = 2;
    if (has_optional_int64()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->optional_int64());
    }

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

  }
  if (_has_bits_[16 / 32] & 16711680u) {
    // optional uint32 optional_uint32 = 3;
    if (has_optional_uint32()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->optional_uint32());
    }

    // optional uint64 optional_uint64 = 4;
    if (has_optional_uint64()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->optional_uint64());
    }

    // optional sint64 optional_sint64 = 6;
    if (has_optional_sint64()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::SInt64Size(
          this->optional_sint64());
    }

    // optional sint32 optional_sint32 = 5;
    if (has_optional_sint32()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::SInt32Size(
          this->optional_sint32());
    }

    // optional fixed32 optional_fixed32 = 7;
    if (has_optional_fixed32()) {
      total_size += 1 + 4;
    }

    // optional fixed64 optional_fixed64 = 8;
    if (has_optional_fixed64()) {
      total_size += 1 + 8;
    }

    // optional sfixed64 optional_sfixed64 = 10;
    if (has_optional_sfixed64()) {
      total_size += 1 + 8;
    }

    // optional sfixed32 optional_sfixed32 = 9;
    if (has_optional_sfixed32()) {
      total_size += 1 + 4;
    }

  }
  if (_has_bits_[24 / 32] & 4278190080u) {
    // optional float optional_float = 11;
    if (has_optional_float()) {
      total_size += 1 + 4;
    }

    // optional double optional_double = 12;
    if (has_optional_double()) {
      total_size += 1 + 8;
    }

    // optional bool optional_bool = 13;
    if (has_optional_bool()) {
      total_size += 1 + 1;
    }

    // optional int32 deceptively_named_list = 116;
    if (has_deceptively_named_list()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->deceptively_named_list());
    }

    // optional .protobuf_unittest_import.ImportEnumLite default_import_enum = 83 [default = IMPORT_LITE_BAR];
    if (has_default_import_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->default_import_enum());
    }

    // optional .protobuf_unittest.TestAllTypesLite.NestedEnum optional_nested_enum = 21;
    if (has_optional_nested_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->optional_nested_enum());
    }

    // optional .protobuf_unittest.ForeignEnumLite optional_foreign_enum = 22;
    if (has_optional_foreign_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->optional_foreign_enum());
    }

    // optional .protobuf_unittest_import.ImportEnumLite optional_import_enum = 23;
    if (has_optional_import_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->optional_import_enum());
    }

  }
  if (_has_bits_[32 / 32] & 255u) {
    // optional int32 default_int32 = 61 [default = 41];
    if (has_default_int32()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->default_int32());
    }

    // optional int64 default_int64 = 62 [default = 42];
    if (has_default_int64()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->default_int64());
    }

    // optional uint64 default_uint64 = 64 [default = 44];
    if (has_default_uint64()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->default_uint64());
    }

    // optional uint32 default_uint32 = 63 [default = 43];
    if (has_default_uint32()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->default_uint32());
    }

    // optional sint32 default_sint32 = 65 [default = -45];
    if (has_default_sint32()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::SInt32Size(
          this->default_sint32());
    }

    // optional sint64 default_sint64 = 66 [default = 46];
    if (has_default_sint64()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::SInt64Size(
          this->default_sint64());
    }

    // optional fixed64 default_fixed64 = 68 [default = 48];
    if (has_default_fixed64()) {
      total_size += 2 + 8;
    }

    // optional fixed32 default_fixed32 = 67 [default = 47];
    if (has_default_fixed32()) {
      total_size += 2 + 4;
    }

  }
  if (_has_bits_[40 / 32] & 32512u) {
    // optional sfixed32 default_sfixed32 = 69 [default = 49];
    if (has_default_sfixed32()) {
      total_size += 2 + 4;
    }

    // optional sfixed64 default_sfixed64 = 70 [default = -50];
    if (has_default_sfixed64()) {
      total_size += 2 + 8;
    }

    // optional double default_double = 72 [default = 52000];
    if (has_default_double()) {
      total_size += 2 + 8;
    }

    // optional float default_float = 71 [default = 51.5];
    if (has_default_float()) {
      total_size += 2 + 4;
    }

    // optional bool default_bool = 73 [default = true];
    if (has_default_bool()) {
      total_size += 2 + 1;
    }

    // optional .protobuf_unittest.TestAllTypesLite.NestedEnum default_nested_enum = 81 [default = BAR];
    if (has_default_nested_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->default_nested_enum());
    }

    // optional .protobuf_unittest.ForeignEnumLite default_foreign_enum = 82 [default = FOREIGN_LITE_BAR];
    if (has_default_foreign_enum()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->default_foreign_enum());
    }

  }
  switch (oneof_field_case()) {
    // optional uint32 oneof_uint32 = 111;
    case kOneofUint32: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->oneof_uint32());
      break;
    }
    // optional .protobuf_unittest.TestAllTypesLite.NestedMessage oneof_nested_message = 112;
    case kOneofNestedMessage: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.oneof_nested_message_);
      break;
    }
    // optional string oneof_string = 113;
    case kOneofString: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->oneof_string());
      break;
    }
    // optional bytes oneof_bytes = 114;
    case kOneofBytes: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->oneof_bytes());
      break;
    }
    // optional .protobuf_unittest.TestAllTypesLite.NestedMessage oneof_lazy_nested_message = 115 [lazy = true];
    case kOneofLazyNestedMessage: {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.oneof_lazy_nested_message_);
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

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

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

  repeated_int32_.MergeFrom(from.repeated_int32_);
  repeated_int64_.MergeFrom(from.repeated_int64_);
  repeated_uint32_.MergeFrom(from.repeated_uint32_);
  repeated_uint64_.MergeFrom(from.repeated_uint64_);
  repeated_sint32_.MergeFrom(from.repeated_sint32_);
  repeated_sint64_.MergeFrom(from.repeated_sint64_);
  repeated_fixed32_.MergeFrom(from.repeated_fixed32_);
  repeated_fixed64_.MergeFrom(from.repeated_fixed64_);
  repeated_sfixed32_.MergeFrom(from.repeated_sfixed32_);
  repeated_sfixed64_.MergeFrom(from.repeated_sfixed64_);
  repeated_float_.MergeFrom(from.repeated_float_);
  repeated_double_.MergeFrom(from.repeated_double_);
  repeated_bool_.MergeFrom(from.repeated_bool_);
  repeated_string_.MergeFrom(from.repeated_string_);
  repeated_bytes_.MergeFrom(from.repeated_bytes_);
  repeatedgroup_.MergeFrom(from.repeatedgroup_);
  repeated_nested_message_.MergeFrom(from.repeated_nested_message_);
  repeated_foreign_message_.MergeFrom(from.repeated_foreign_message_);
  repeated_import_message_.MergeFrom(from.repeated_import_message_);
  repeated_nested_enum_.MergeFrom(from.repeated_nested_enum_);
  repeated_foreign_enum_.MergeFrom(from.repeated_foreign_enum_);
  repeated_import_enum_.MergeFrom(from.repeated_import_enum_);
  repeated_string_piece_.MergeFrom(from.repeated_string_piece_);
  repeated_cord_.MergeFrom(from.repeated_cord_);
  repeated_lazy_message_.MergeFrom(from.repeated_lazy_message_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 255u) {
    if (cached_has_bits & 0x00000001u) {
      set_has_optional_string();
      optional_string_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_);
    }
    if (cached_has_bits & 0x00000002u) {
      set_has_optional_bytes();
      optional_bytes_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_bytes_);
    }
    if (cached_has_bits & 0x00000004u) {
      set_has_optional_string_piece();
      optional_string_piece_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_piece_);
    }
    if (cached_has_bits & 0x00000008u) {
      set_has_optional_cord();
      optional_cord_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_cord_);
    }
    if (cached_has_bits & 0x00000010u) {
      set_has_default_string();
      default_string_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get(), from.default_string_);
    }
    if (cached_has_bits & 0x00000020u) {
      set_has_default_bytes();
      default_bytes_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get(), from.default_bytes_);
    }
    if (cached_has_bits & 0x00000040u) {
      set_has_default_string_piece();
      default_string_piece_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get(), from.default_string_piece_);
    }
    if (cached_has_bits & 0x00000080u) {
      set_has_default_cord();
      default_cord_.AssignWithDefault(&::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get(), from.default_cord_);
    }
  }
  if (cached_has_bits & 65280u) {
    if (cached_has_bits & 0x00000100u) {
      mutable_optionalgroup()->::protobuf_unittest::TestAllTypesLite_OptionalGroup::MergeFrom(from.optionalgroup());
    }
    if (cached_has_bits & 0x00000200u) {
      mutable_optional_nested_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.optional_nested_message());
    }
    if (cached_has_bits & 0x00000400u) {
      mutable_optional_foreign_message()->::protobuf_unittest::ForeignMessageLite::MergeFrom(from.optional_foreign_message());
    }
    if (cached_has_bits & 0x00000800u) {
      mutable_optional_import_message()->::protobuf_unittest_import::ImportMessageLite::MergeFrom(from.optional_import_message());
    }
    if (cached_has_bits & 0x00001000u) {
      mutable_optional_public_import_message()->::protobuf_unittest_import::PublicImportMessageLite::MergeFrom(from.optional_public_import_message());
    }
    if (cached_has_bits & 0x00002000u) {
      mutable_optional_lazy_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.optional_lazy_message());
    }
    if (cached_has_bits & 0x00004000u) {
      optional_int64_ = from.optional_int64_;
    }
    if (cached_has_bits & 0x00008000u) {
      optional_int32_ = from.optional_int32_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 16711680u) {
    if (cached_has_bits & 0x00010000u) {
      optional_uint32_ = from.optional_uint32_;
    }
    if (cached_has_bits & 0x00020000u) {
      optional_uint64_ = from.optional_uint64_;
    }
    if (cached_has_bits & 0x00040000u) {
      optional_sint64_ = from.optional_sint64_;
    }
    if (cached_has_bits & 0x00080000u) {
      optional_sint32_ = from.optional_sint32_;
    }
    if (cached_has_bits & 0x00100000u) {
      optional_fixed32_ = from.optional_fixed32_;
    }
    if (cached_has_bits & 0x00200000u) {
      optional_fixed64_ = from.optional_fixed64_;
    }
    if (cached_has_bits & 0x00400000u) {
      optional_sfixed64_ = from.optional_sfixed64_;
    }
    if (cached_has_bits & 0x00800000u) {
      optional_sfixed32_ = from.optional_sfixed32_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 4278190080u) {
    if (cached_has_bits & 0x01000000u) {
      optional_float_ = from.optional_float_;
    }
    if (cached_has_bits & 0x02000000u) {
      optional_double_ = from.optional_double_;
    }
    if (cached_has_bits & 0x04000000u) {
      optional_bool_ = from.optional_bool_;
    }
    if (cached_has_bits & 0x08000000u) {
      deceptively_named_list_ = from.deceptively_named_list_;
    }
    if (cached_has_bits & 0x10000000u) {
      default_import_enum_ = from.default_import_enum_;
    }
    if (cached_has_bits & 0x20000000u) {
      optional_nested_enum_ = from.optional_nested_enum_;
    }
    if (cached_has_bits & 0x40000000u) {
      optional_foreign_enum_ = from.optional_foreign_enum_;
    }
    if (cached_has_bits & 0x80000000u) {
      optional_import_enum_ = from.optional_import_enum_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  cached_has_bits = from._has_bits_[1];
  if (cached_has_bits & 255u) {
    if (cached_has_bits & 0x00000001u) {
      default_int32_ = from.default_int32_;
    }
    if (cached_has_bits & 0x00000002u) {
      default_int64_ = from.default_int64_;
    }
    if (cached_has_bits & 0x00000004u) {
      default_uint64_ = from.default_uint64_;
    }
    if (cached_has_bits & 0x00000008u) {
      default_uint32_ = from.default_uint32_;
    }
    if (cached_has_bits & 0x00000010u) {
      default_sint32_ = from.default_sint32_;
    }
    if (cached_has_bits & 0x00000020u) {
      default_sint64_ = from.default_sint64_;
    }
    if (cached_has_bits & 0x00000040u) {
      default_fixed64_ = from.default_fixed64_;
    }
    if (cached_has_bits & 0x00000080u) {
      default_fixed32_ = from.default_fixed32_;
    }
    _has_bits_[1] |= cached_has_bits;
  }
  if (cached_has_bits & 32512u) {
    if (cached_has_bits & 0x00000100u) {
      default_sfixed32_ = from.default_sfixed32_;
    }
    if (cached_has_bits & 0x00000200u) {
      default_sfixed64_ = from.default_sfixed64_;
    }
    if (cached_has_bits & 0x00000400u) {
      default_double_ = from.default_double_;
    }
    if (cached_has_bits & 0x00000800u) {
      default_float_ = from.default_float_;
    }
    if (cached_has_bits & 0x00001000u) {
      default_bool_ = from.default_bool_;
    }
    if (cached_has_bits & 0x00002000u) {
      default_nested_enum_ = from.default_nested_enum_;
    }
    if (cached_has_bits & 0x00004000u) {
      default_foreign_enum_ = from.default_foreign_enum_;
    }
    _has_bits_[1] |= cached_has_bits;
  }
  switch (from.oneof_field_case()) {
    case kOneofUint32: {
      set_oneof_uint32(from.oneof_uint32());
      break;
    }
    case kOneofNestedMessage: {
      mutable_oneof_nested_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.oneof_nested_message());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case kOneofLazyNestedMessage: {
      mutable_oneof_lazy_nested_message()->::protobuf_unittest::TestAllTypesLite_NestedMessage::MergeFrom(from.oneof_lazy_nested_message());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
}

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

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

void TestAllTypesLite::Swap(TestAllTypesLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestAllTypesLite::InternalSwap(TestAllTypesLite* other) {
  using std::swap;
  repeated_int32_.InternalSwap(&other->repeated_int32_);
  repeated_int64_.InternalSwap(&other->repeated_int64_);
  repeated_uint32_.InternalSwap(&other->repeated_uint32_);
  repeated_uint64_.InternalSwap(&other->repeated_uint64_);
  repeated_sint32_.InternalSwap(&other->repeated_sint32_);
  repeated_sint64_.InternalSwap(&other->repeated_sint64_);
  repeated_fixed32_.InternalSwap(&other->repeated_fixed32_);
  repeated_fixed64_.InternalSwap(&other->repeated_fixed64_);
  repeated_sfixed32_.InternalSwap(&other->repeated_sfixed32_);
  repeated_sfixed64_.InternalSwap(&other->repeated_sfixed64_);
  repeated_float_.InternalSwap(&other->repeated_float_);
  repeated_double_.InternalSwap(&other->repeated_double_);
  repeated_bool_.InternalSwap(&other->repeated_bool_);
  repeated_string_.InternalSwap(CastToBase(&other->repeated_string_));
  repeated_bytes_.InternalSwap(CastToBase(&other->repeated_bytes_));
  CastToBase(&repeatedgroup_)->InternalSwap(CastToBase(&other->repeatedgroup_));
  CastToBase(&repeated_nested_message_)->InternalSwap(CastToBase(&other->repeated_nested_message_));
  CastToBase(&repeated_foreign_message_)->InternalSwap(CastToBase(&other->repeated_foreign_message_));
  CastToBase(&repeated_import_message_)->InternalSwap(CastToBase(&other->repeated_import_message_));
  repeated_nested_enum_.InternalSwap(&other->repeated_nested_enum_);
  repeated_foreign_enum_.InternalSwap(&other->repeated_foreign_enum_);
  repeated_import_enum_.InternalSwap(&other->repeated_import_enum_);
  repeated_string_piece_.InternalSwap(CastToBase(&other->repeated_string_piece_));
  repeated_cord_.InternalSwap(CastToBase(&other->repeated_cord_));
  CastToBase(&repeated_lazy_message_)->InternalSwap(CastToBase(&other->repeated_lazy_message_));
  optional_string_.Swap(&other->optional_string_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  optional_bytes_.Swap(&other->optional_bytes_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  optional_string_piece_.Swap(&other->optional_string_piece_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  optional_cord_.Swap(&other->optional_cord_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  default_string_.Swap(&other->default_string_, &::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_.get(),
    GetArenaNoVirtual());
  default_bytes_.Swap(&other->default_bytes_, &::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_bytes_.get(),
    GetArenaNoVirtual());
  default_string_piece_.Swap(&other->default_string_piece_, &::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_string_piece_.get(),
    GetArenaNoVirtual());
  default_cord_.Swap(&other->default_cord_, &::protobuf_unittest::TestAllTypesLite::_i_give_permission_to_break_this_code_default_default_cord_.get(),
    GetArenaNoVirtual());
  swap(optionalgroup_, other->optionalgroup_);
  swap(optional_nested_message_, other->optional_nested_message_);
  swap(optional_foreign_message_, other->optional_foreign_message_);
  swap(optional_import_message_, other->optional_import_message_);
  swap(optional_public_import_message_, other->optional_public_import_message_);
  swap(optional_lazy_message_, other->optional_lazy_message_);
  swap(optional_int64_, other->optional_int64_);
  swap(optional_int32_, other->optional_int32_);
  swap(optional_uint32_, other->optional_uint32_);
  swap(optional_uint64_, other->optional_uint64_);
  swap(optional_sint64_, other->optional_sint64_);
  swap(optional_sint32_, other->optional_sint32_);
  swap(optional_fixed32_, other->optional_fixed32_);
  swap(optional_fixed64_, other->optional_fixed64_);
  swap(optional_sfixed64_, other->optional_sfixed64_);
  swap(optional_sfixed32_, other->optional_sfixed32_);
  swap(optional_float_, other->optional_float_);
  swap(optional_double_, other->optional_double_);
  swap(optional_bool_, other->optional_bool_);
  swap(deceptively_named_list_, other->deceptively_named_list_);
  swap(default_import_enum_, other->default_import_enum_);
  swap(optional_nested_enum_, other->optional_nested_enum_);
  swap(optional_foreign_enum_, other->optional_foreign_enum_);
  swap(optional_import_enum_, other->optional_import_enum_);
  swap(default_int32_, other->default_int32_);
  swap(default_int64_, other->default_int64_);
  swap(default_uint64_, other->default_uint64_);
  swap(default_uint32_, other->default_uint32_);
  swap(default_sint32_, other->default_sint32_);
  swap(default_sint64_, other->default_sint64_);
  swap(default_fixed64_, other->default_fixed64_);
  swap(default_fixed32_, other->default_fixed32_);
  swap(default_sfixed32_, other->default_sfixed32_);
  swap(default_sfixed64_, other->default_sfixed64_);
  swap(default_double_, other->default_double_);
  swap(default_float_, other->default_float_);
  swap(default_bool_, other->default_bool_);
  swap(default_nested_enum_, other->default_nested_enum_);
  swap(default_foreign_enum_, other->default_foreign_enum_);
  swap(oneof_field_, other->oneof_field_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(_has_bits_[1], other->_has_bits_[1]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

ForeignMessageLite::ForeignMessageLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_ForeignMessageLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.ForeignMessageLite)
}
ForeignMessageLite::ForeignMessageLite(const ForeignMessageLite& 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.ForeignMessageLite)
}

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

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

void ForeignMessageLite::SharedDtor() {
}

void ForeignMessageLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ForeignMessageLite& ForeignMessageLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_ForeignMessageLite.base);
  return *internal_default_instance();
}


void ForeignMessageLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.ForeignMessageLite)
  ::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 ForeignMessageLite::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.ForeignMessageLite)
  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.ForeignMessageLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.ForeignMessageLite)
  return false;
#undef DO_
}

void ForeignMessageLite::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:protobuf_unittest.ForeignMessageLite)
  ::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.ForeignMessageLite)
}

size_t ForeignMessageLite::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.ForeignMessageLite)
  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 ForeignMessageLite::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ForeignMessageLite*>(&from));
}

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

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

void ForeignMessageLite::Swap(ForeignMessageLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ForeignMessageLite::InternalSwap(ForeignMessageLite* other) {
  using std::swap;
  swap(c_, other->c_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void TestPackedTypesLite::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestPackedTypesLite::kPackedInt32FieldNumber;
const int TestPackedTypesLite::kPackedInt64FieldNumber;
const int TestPackedTypesLite::kPackedUint32FieldNumber;
const int TestPackedTypesLite::kPackedUint64FieldNumber;
const int TestPackedTypesLite::kPackedSint32FieldNumber;
const int TestPackedTypesLite::kPackedSint64FieldNumber;
const int TestPackedTypesLite::kPackedFixed32FieldNumber;
const int TestPackedTypesLite::kPackedFixed64FieldNumber;
const int TestPackedTypesLite::kPackedSfixed32FieldNumber;
const int TestPackedTypesLite::kPackedSfixed64FieldNumber;
const int TestPackedTypesLite::kPackedFloatFieldNumber;
const int TestPackedTypesLite::kPackedDoubleFieldNumber;
const int TestPackedTypesLite::kPackedBoolFieldNumber;
const int TestPackedTypesLite::kPackedEnumFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestPackedTypesLite::TestPackedTypesLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestPackedTypesLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestPackedTypesLite)
}
TestPackedTypesLite::TestPackedTypesLite(const TestPackedTypesLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      packed_int32_(from.packed_int32_),
      packed_int64_(from.packed_int64_),
      packed_uint32_(from.packed_uint32_),
      packed_uint64_(from.packed_uint64_),
      packed_sint32_(from.packed_sint32_),
      packed_sint64_(from.packed_sint64_),
      packed_fixed32_(from.packed_fixed32_),
      packed_fixed64_(from.packed_fixed64_),
      packed_sfixed32_(from.packed_sfixed32_),
      packed_sfixed64_(from.packed_sfixed64_),
      packed_float_(from.packed_float_),
      packed_double_(from.packed_double_),
      packed_bool_(from.packed_bool_),
      packed_enum_(from.packed_enum_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestPackedTypesLite)
}

void TestPackedTypesLite::SharedCtor() {
}

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

void TestPackedTypesLite::SharedDtor() {
}

void TestPackedTypesLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestPackedTypesLite& TestPackedTypesLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestPackedTypesLite.base);
  return *internal_default_instance();
}


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

  packed_int32_.Clear();
  packed_int64_.Clear();
  packed_uint32_.Clear();
  packed_uint64_.Clear();
  packed_sint32_.Clear();
  packed_sint64_.Clear();
  packed_fixed32_.Clear();
  packed_fixed64_.Clear();
  packed_sfixed32_.Clear();
  packed_sfixed64_.Clear();
  packed_float_.Clear();
  packed_double_.Clear();
  packed_bool_.Clear();
  packed_enum_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestPackedTypesLite::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.TestPackedTypesLite)
  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)) {
      // repeated int32 packed_int32 = 90 [packed = true];
      case 90: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(210u /* 722 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_packed_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(208u /* 720 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 2, 722u, input, this->mutable_packed_int32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int64 packed_int64 = 91 [packed = true];
      case 91: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(218u /* 730 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, this->mutable_packed_int64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(216u /* 728 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 2, 730u, input, this->mutable_packed_int64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated uint32 packed_uint32 = 92 [packed = true];
      case 92: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(226u /* 738 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, this->mutable_packed_uint32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(224u /* 736 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 2, 738u, input, this->mutable_packed_uint32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated uint64 packed_uint64 = 93 [packed = true];
      case 93: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(234u /* 746 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, this->mutable_packed_uint64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(232u /* 744 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 2, 746u, input, this->mutable_packed_uint64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sint32 packed_sint32 = 94 [packed = true];
      case 94: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(242u /* 754 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, this->mutable_packed_sint32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(240u /* 752 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 2, 754u, input, this->mutable_packed_sint32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sint64 packed_sint64 = 95 [packed = true];
      case 95: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(250u /* 762 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 input, this->mutable_packed_sint64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(248u /* 760 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
                 2, 762u, input, this->mutable_packed_sint64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated fixed32 packed_fixed32 = 96 [packed = true];
      case 96: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 770 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, this->mutable_packed_fixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(5u /* 773 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 2, 770u, input, this->mutable_packed_fixed32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated fixed64 packed_fixed64 = 97 [packed = true];
      case 97: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 778 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 input, this->mutable_packed_fixed64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(9u /* 777 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED64>(
                 2, 778u, input, this->mutable_packed_fixed64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sfixed32 packed_sfixed32 = 98 [packed = true];
      case 98: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 786 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 input, this->mutable_packed_sfixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(21u /* 789 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED32>(
                 2, 786u, input, this->mutable_packed_sfixed32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated sfixed64 packed_sfixed64 = 99 [packed = true];
      case 99: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 794 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 input, this->mutable_packed_sfixed64())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(25u /* 793 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SFIXED64>(
                 2, 794u, input, this->mutable_packed_sfixed64())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated float packed_float = 100 [packed = true];
      case 100: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 802 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 input, this->mutable_packed_float())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(37u /* 805 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 2, 802u, input, this->mutable_packed_float())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated double packed_double = 101 [packed = true];
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, this->mutable_packed_double())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(41u /* 809 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 2, 810u, input, this->mutable_packed_double())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated bool packed_bool = 102 [packed = true];
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, this->mutable_packed_bool())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(48u /* 816 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 2, 818u, input, this->mutable_packed_bool())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.ForeignEnumLite packed_enum = 103 [packed = true];
      case 103: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 826 & 0xFF */)) {
          ::google::protobuf::uint32 length;
          DO_(input->ReadVarint32(&length));
          ::google::protobuf::io::CodedInputStream::Limit limit = input->PushLimit(static_cast<int>(length));
          while (input->BytesUntilLimit() > 0) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
            if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
              add_packed_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
            } else {
              unknown_fields_stream.WriteVarint32(tag);
              unknown_fields_stream.WriteVarint32(
                  static_cast< ::google::protobuf::uint32>(value));
            }
          }
          input->PopLimit(limit);
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(56u /* 824 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
            add_packed_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(tag);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } 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.TestPackedTypesLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestPackedTypesLite)
  return false;
#undef DO_
}

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

  // repeated int32 packed_int32 = 90 [packed = true];
  if (this->packed_int32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(90, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_int32_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
      this->packed_int32(i), output);
  }

  // repeated int64 packed_int64 = 91 [packed = true];
  if (this->packed_int64_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(91, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_int64_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_int64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
      this->packed_int64(i), output);
  }

  // repeated uint32 packed_uint32 = 92 [packed = true];
  if (this->packed_uint32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(92, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_uint32_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_uint32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
      this->packed_uint32(i), output);
  }

  // repeated uint64 packed_uint64 = 93 [packed = true];
  if (this->packed_uint64_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(93, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_uint64_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_uint64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64NoTag(
      this->packed_uint64(i), output);
  }

  // repeated sint32 packed_sint32 = 94 [packed = true];
  if (this->packed_sint32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(94, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_sint32_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_sint32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
      this->packed_sint32(i), output);
  }

  // repeated sint64 packed_sint64 = 95 [packed = true];
  if (this->packed_sint64_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(95, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_sint64_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_sint64_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag(
      this->packed_sint64(i), output);
  }

  // repeated fixed32 packed_fixed32 = 96 [packed = true];
  if (this->packed_fixed32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(96, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_fixed32_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteFixed32Array(
      this->packed_fixed32().data(), this->packed_fixed32_size(), output);
  }

  // repeated fixed64 packed_fixed64 = 97 [packed = true];
  if (this->packed_fixed64_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(97, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_fixed64_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteFixed64Array(
      this->packed_fixed64().data(), this->packed_fixed64_size(), output);
  }

  // repeated sfixed32 packed_sfixed32 = 98 [packed = true];
  if (this->packed_sfixed32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(98, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_sfixed32_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteSFixed32Array(
      this->packed_sfixed32().data(), this->packed_sfixed32_size(), output);
  }

  // repeated sfixed64 packed_sfixed64 = 99 [packed = true];
  if (this->packed_sfixed64_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(99, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_sfixed64_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteSFixed64Array(
      this->packed_sfixed64().data(), this->packed_sfixed64_size(), output);
  }

  // repeated float packed_float = 100 [packed = true];
  if (this->packed_float_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(100, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_float_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteFloatArray(
      this->packed_float().data(), this->packed_float_size(), output);
  }

  // repeated double packed_double = 101 [packed = true];
  if (this->packed_double_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(101, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_double_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
      this->packed_double().data(), this->packed_double_size(), output);
  }

  // repeated bool packed_bool = 102 [packed = true];
  if (this->packed_bool_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(102, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_bool_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteBoolArray(
      this->packed_bool().data(), this->packed_bool_size(), output);
  }

  // repeated .protobuf_unittest.ForeignEnumLite packed_enum = 103 [packed = true];
  if (this->packed_enum_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(
      103,
      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
      output);
    output->WriteVarint32(
        static_cast< ::google::protobuf::uint32>(_packed_enum_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_enum_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteEnumNoTag(
      this->packed_enum(i), output);
  }

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

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

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

  // repeated int32 packed_int32 = 90 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->packed_int32_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_int32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated int64 packed_int64 = 91 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int64Size(this->packed_int64_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_int64_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated uint32 packed_uint32 = 92 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      UInt32Size(this->packed_uint32_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_uint32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated uint64 packed_uint64 = 93 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      UInt64Size(this->packed_uint64_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_uint64_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated sint32 packed_sint32 = 94 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      SInt32Size(this->packed_sint32_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_sint32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated sint64 packed_sint64 = 95 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      SInt64Size(this->packed_sint64_);
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_sint64_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated fixed32 packed_fixed32 = 96 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_fixed32_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_fixed32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated fixed64 packed_fixed64 = 97 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_fixed64_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_fixed64_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated sfixed32 packed_sfixed32 = 98 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_sfixed32_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_sfixed32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated sfixed64 packed_sfixed64 = 99 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_sfixed64_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_sfixed64_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated float packed_float = 100 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_float_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_float_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated double packed_double = 101 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_double_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_double_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated bool packed_bool = 102 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->packed_bool_size());
    size_t data_size = 1UL * count;
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_bool_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // repeated .protobuf_unittest.ForeignEnumLite packed_enum = 103 [packed = true];
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->packed_enum_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
        this->packed_enum(static_cast<int>(i)));
    }
    if (data_size > 0) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_enum_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

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

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

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

  packed_int32_.MergeFrom(from.packed_int32_);
  packed_int64_.MergeFrom(from.packed_int64_);
  packed_uint32_.MergeFrom(from.packed_uint32_);
  packed_uint64_.MergeFrom(from.packed_uint64_);
  packed_sint32_.MergeFrom(from.packed_sint32_);
  packed_sint64_.MergeFrom(from.packed_sint64_);
  packed_fixed32_.MergeFrom(from.packed_fixed32_);
  packed_fixed64_.MergeFrom(from.packed_fixed64_);
  packed_sfixed32_.MergeFrom(from.packed_sfixed32_);
  packed_sfixed64_.MergeFrom(from.packed_sfixed64_);
  packed_float_.MergeFrom(from.packed_float_);
  packed_double_.MergeFrom(from.packed_double_);
  packed_bool_.MergeFrom(from.packed_bool_);
  packed_enum_.MergeFrom(from.packed_enum_);
}

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

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

void TestPackedTypesLite::Swap(TestPackedTypesLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestPackedTypesLite::InternalSwap(TestPackedTypesLite* other) {
  using std::swap;
  packed_int32_.InternalSwap(&other->packed_int32_);
  packed_int64_.InternalSwap(&other->packed_int64_);
  packed_uint32_.InternalSwap(&other->packed_uint32_);
  packed_uint64_.InternalSwap(&other->packed_uint64_);
  packed_sint32_.InternalSwap(&other->packed_sint32_);
  packed_sint64_.InternalSwap(&other->packed_sint64_);
  packed_fixed32_.InternalSwap(&other->packed_fixed32_);
  packed_fixed64_.InternalSwap(&other->packed_fixed64_);
  packed_sfixed32_.InternalSwap(&other->packed_sfixed32_);
  packed_sfixed64_.InternalSwap(&other->packed_sfixed64_);
  packed_float_.InternalSwap(&other->packed_float_);
  packed_double_.InternalSwap(&other->packed_double_);
  packed_bool_.InternalSwap(&other->packed_bool_);
  packed_enum_.InternalSwap(&other->packed_enum_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

TestAllExtensionsLite::TestAllExtensionsLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllExtensionsLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestAllExtensionsLite)
}
TestAllExtensionsLite::TestAllExtensionsLite(const TestAllExtensionsLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestAllExtensionsLite)
}

void TestAllExtensionsLite::SharedCtor() {
}

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

void TestAllExtensionsLite::SharedDtor() {
}

void TestAllExtensionsLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestAllExtensionsLite& TestAllExtensionsLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestAllExtensionsLite.base);
  return *internal_default_instance();
}


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

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

bool TestAllExtensionsLite::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.TestAllExtensionsLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    if ((8u <= tag)) {
      DO_(_extensions_.ParseField(tag, input,
          internal_default_instance(),
          &unknown_fields_stream));
      continue;
    }
    DO_(::google::protobuf::internal::WireFormatLite::SkipField(
        input, tag, &unknown_fields_stream));
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestAllExtensionsLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestAllExtensionsLite)
  return false;
#undef DO_
}

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

  // Extension range [1, 536870912)
  _extensions_.SerializeWithCachedSizes(
      1, 536870912, output);

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

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

  total_size += _extensions_.ByteSize();

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

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

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

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

}

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

bool TestAllExtensionsLite::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  return true;
}

void TestAllExtensionsLite::Swap(TestAllExtensionsLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestAllExtensionsLite::InternalSwap(TestAllExtensionsLite* other) {
  using std::swap;
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  _extensions_.Swap(&other->_extensions_);
}

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


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

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

OptionalGroup_extension_lite::OptionalGroup_extension_lite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_OptionalGroup_extension_lite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.OptionalGroup_extension_lite)
}
OptionalGroup_extension_lite::OptionalGroup_extension_lite(const OptionalGroup_extension_lite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  a_ = from.a_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.OptionalGroup_extension_lite)
}

void OptionalGroup_extension_lite::SharedCtor() {
  a_ = 0;
}

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

void OptionalGroup_extension_lite::SharedDtor() {
}

void OptionalGroup_extension_lite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const OptionalGroup_extension_lite& OptionalGroup_extension_lite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_OptionalGroup_extension_lite.base);
  return *internal_default_instance();
}


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

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

bool OptionalGroup_extension_lite::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.OptionalGroup_extension_lite)
  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)) {
      // optional int32 a = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(136u /* 136 & 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;
      }

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

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

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

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

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

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

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

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

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

void OptionalGroup_extension_lite::MergeFrom(const OptionalGroup_extension_lite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.OptionalGroup_extension_lite)
  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_a()) {
    set_a(from.a());
  }
}

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

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

void OptionalGroup_extension_lite::Swap(OptionalGroup_extension_lite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void OptionalGroup_extension_lite::InternalSwap(OptionalGroup_extension_lite* other) {
  using std::swap;
  swap(a_, other->a_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

RepeatedGroup_extension_lite::RepeatedGroup_extension_lite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_RepeatedGroup_extension_lite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.RepeatedGroup_extension_lite)
}
RepeatedGroup_extension_lite::RepeatedGroup_extension_lite(const RepeatedGroup_extension_lite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  a_ = from.a_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.RepeatedGroup_extension_lite)
}

void RepeatedGroup_extension_lite::SharedCtor() {
  a_ = 0;
}

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

void RepeatedGroup_extension_lite::SharedDtor() {
}

void RepeatedGroup_extension_lite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const RepeatedGroup_extension_lite& RepeatedGroup_extension_lite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_RepeatedGroup_extension_lite.base);
  return *internal_default_instance();
}


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

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

bool RepeatedGroup_extension_lite::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.RepeatedGroup_extension_lite)
  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)) {
      // optional int32 a = 47;
      case 47: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(120u /* 376 & 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;
      }

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

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

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

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

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

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

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

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

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

void RepeatedGroup_extension_lite::MergeFrom(const RepeatedGroup_extension_lite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.RepeatedGroup_extension_lite)
  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_a()) {
    set_a(from.a());
  }
}

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

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

void RepeatedGroup_extension_lite::Swap(RepeatedGroup_extension_lite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void RepeatedGroup_extension_lite::InternalSwap(RepeatedGroup_extension_lite* other) {
  using std::swap;
  swap(a_, other->a_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

TestPackedExtensionsLite::TestPackedExtensionsLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestPackedExtensionsLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestPackedExtensionsLite)
}
TestPackedExtensionsLite::TestPackedExtensionsLite(const TestPackedExtensionsLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestPackedExtensionsLite)
}

void TestPackedExtensionsLite::SharedCtor() {
}

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

void TestPackedExtensionsLite::SharedDtor() {
}

void TestPackedExtensionsLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestPackedExtensionsLite& TestPackedExtensionsLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestPackedExtensionsLite.base);
  return *internal_default_instance();
}


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

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

bool TestPackedExtensionsLite::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.TestPackedExtensionsLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    if ((8u <= tag)) {
      DO_(_extensions_.ParseField(tag, input,
          internal_default_instance(),
          &unknown_fields_stream));
      continue;
    }
    DO_(::google::protobuf::internal::WireFormatLite::SkipField(
        input, tag, &unknown_fields_stream));
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestPackedExtensionsLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestPackedExtensionsLite)
  return false;
#undef DO_
}

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

  // Extension range [1, 536870912)
  _extensions_.SerializeWithCachedSizes(
      1, 536870912, output);

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

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

  total_size += _extensions_.ByteSize();

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

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

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

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

}

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

bool TestPackedExtensionsLite::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  return true;
}

void TestPackedExtensionsLite::Swap(TestPackedExtensionsLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestPackedExtensionsLite::InternalSwap(TestPackedExtensionsLite* other) {
  using std::swap;
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  _extensions_.Swap(&other->_extensions_);
}

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


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

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

TestNestedExtensionLite::TestNestedExtensionLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestNestedExtensionLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestNestedExtensionLite)
}
TestNestedExtensionLite::TestNestedExtensionLite(const TestNestedExtensionLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestNestedExtensionLite)
}

void TestNestedExtensionLite::SharedCtor() {
}

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

void TestNestedExtensionLite::SharedDtor() {
}

void TestNestedExtensionLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestNestedExtensionLite& TestNestedExtensionLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestNestedExtensionLite.base);
  return *internal_default_instance();
}


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

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

bool TestNestedExtensionLite::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.TestNestedExtensionLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    DO_(::google::protobuf::internal::WireFormatLite::SkipField(
        input, tag, &unknown_fields_stream));
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestNestedExtensionLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestNestedExtensionLite)
  return false;
#undef DO_
}

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

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

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

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

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

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

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

}

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

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

void TestNestedExtensionLite::Swap(TestNestedExtensionLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestNestedExtensionLite::InternalSwap(TestNestedExtensionLite* other) {
  using std::swap;
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

TestDeprecatedLite::TestDeprecatedLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestDeprecatedLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestDeprecatedLite)
}
TestDeprecatedLite::TestDeprecatedLite(const TestDeprecatedLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  deprecated_field_ = from.deprecated_field_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestDeprecatedLite)
}

void TestDeprecatedLite::SharedCtor() {
  deprecated_field_ = 0;
}

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

void TestDeprecatedLite::SharedDtor() {
}

void TestDeprecatedLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestDeprecatedLite& TestDeprecatedLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestDeprecatedLite.base);
  return *internal_default_instance();
}


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

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

bool TestDeprecatedLite::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.TestDeprecatedLite)
  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 deprecated_field = 1 [deprecated = true];
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_deprecated_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &deprecated_field_)));
        } 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.TestDeprecatedLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestDeprecatedLite)
  return false;
#undef DO_
}

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

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

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

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

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

  // optional int32 deprecated_field = 1 [deprecated = true];
  if (has_deprecated_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->deprecated_field());
  }

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

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

void TestDeprecatedLite::MergeFrom(const TestDeprecatedLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestDeprecatedLite)
  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_deprecated_field()) {
    set_deprecated_field(from.deprecated_field());
  }
}

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

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

void TestDeprecatedLite::Swap(TestDeprecatedLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestDeprecatedLite::InternalSwap(TestDeprecatedLite* other) {
  using std::swap;
  swap(deprecated_field_, other->deprecated_field_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestParsingMergeLite_RepeatedFieldsGenerator_Group1_default_instance_._instance.get_mutable()->field1_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite_RepeatedFieldsGenerator_Group1::kField1FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite_RepeatedFieldsGenerator_Group1::TestParsingMergeLite_RepeatedFieldsGenerator_Group1()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group1.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
}
TestParsingMergeLite_RepeatedFieldsGenerator_Group1::TestParsingMergeLite_RepeatedFieldsGenerator_Group1(const TestParsingMergeLite_RepeatedFieldsGenerator_Group1& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_field1()) {
    field1_ = new ::protobuf_unittest::TestAllTypesLite(*from.field1_);
  } else {
    field1_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::SharedCtor() {
  field1_ = NULL;
}

TestParsingMergeLite_RepeatedFieldsGenerator_Group1::~TestParsingMergeLite_RepeatedFieldsGenerator_Group1() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  SharedDtor();
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::SharedDtor() {
  if (this != internal_default_instance()) delete field1_;
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite_RepeatedFieldsGenerator_Group1& TestParsingMergeLite_RepeatedFieldsGenerator_Group1::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group1.base);
  return *internal_default_instance();
}


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

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

bool TestParsingMergeLite_RepeatedFieldsGenerator_Group1::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.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .protobuf_unittest.TestAllTypesLite field1 = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_field1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          input->SetLastTag(tag);
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  return false;
#undef DO_
}

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestAllTypesLite field1 = 11;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      11, this->_internal_field1(), output);
  }

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

size_t TestParsingMergeLite_RepeatedFieldsGenerator_Group1::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  size_t total_size = 0;

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

  // optional .protobuf_unittest.TestAllTypesLite field1 = 11;
  if (has_field1()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *field1_);
  }

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

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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::MergeFrom(const TestParsingMergeLite_RepeatedFieldsGenerator_Group1& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1)
  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_field1()) {
    mutable_field1()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.field1());
  }
}

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

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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::Swap(TestParsingMergeLite_RepeatedFieldsGenerator_Group1* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite_RepeatedFieldsGenerator_Group1::InternalSwap(TestParsingMergeLite_RepeatedFieldsGenerator_Group1* other) {
  using std::swap;
  swap(field1_, other->field1_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestParsingMergeLite_RepeatedFieldsGenerator_Group1::GetTypeName() const {
  return "protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1";
}


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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestParsingMergeLite_RepeatedFieldsGenerator_Group2_default_instance_._instance.get_mutable()->field1_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite_RepeatedFieldsGenerator_Group2::kField1FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite_RepeatedFieldsGenerator_Group2::TestParsingMergeLite_RepeatedFieldsGenerator_Group2()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group2.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
}
TestParsingMergeLite_RepeatedFieldsGenerator_Group2::TestParsingMergeLite_RepeatedFieldsGenerator_Group2(const TestParsingMergeLite_RepeatedFieldsGenerator_Group2& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_field1()) {
    field1_ = new ::protobuf_unittest::TestAllTypesLite(*from.field1_);
  } else {
    field1_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::SharedCtor() {
  field1_ = NULL;
}

TestParsingMergeLite_RepeatedFieldsGenerator_Group2::~TestParsingMergeLite_RepeatedFieldsGenerator_Group2() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  SharedDtor();
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::SharedDtor() {
  if (this != internal_default_instance()) delete field1_;
}

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite_RepeatedFieldsGenerator_Group2& TestParsingMergeLite_RepeatedFieldsGenerator_Group2::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator_Group2.base);
  return *internal_default_instance();
}


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

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

bool TestParsingMergeLite_RepeatedFieldsGenerator_Group2::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.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  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)) {
      // optional .protobuf_unittest.TestAllTypesLite field1 = 21;
      case 21: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(170u /* 170 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_field1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0 ||
            ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          input->SetLastTag(tag);
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  return false;
#undef DO_
}

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestAllTypesLite field1 = 21;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      21, this->_internal_field1(), output);
  }

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

size_t TestParsingMergeLite_RepeatedFieldsGenerator_Group2::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  size_t total_size = 0;

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

  // optional .protobuf_unittest.TestAllTypesLite field1 = 21;
  if (has_field1()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *field1_);
  }

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

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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::MergeFrom(const TestParsingMergeLite_RepeatedFieldsGenerator_Group2& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2)
  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_field1()) {
    mutable_field1()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.field1());
  }
}

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

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

void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::Swap(TestParsingMergeLite_RepeatedFieldsGenerator_Group2* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite_RepeatedFieldsGenerator_Group2::InternalSwap(TestParsingMergeLite_RepeatedFieldsGenerator_Group2* other) {
  using std::swap;
  swap(field1_, other->field1_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestParsingMergeLite_RepeatedFieldsGenerator_Group2::GetTypeName() const {
  return "protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2";
}


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

void TestParsingMergeLite_RepeatedFieldsGenerator::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite_RepeatedFieldsGenerator::kField1FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kField2FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kField3FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kGroup1FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kGroup2FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kExt1FieldNumber;
const int TestParsingMergeLite_RepeatedFieldsGenerator::kExt2FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite_RepeatedFieldsGenerator::TestParsingMergeLite_RepeatedFieldsGenerator()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator)
}
TestParsingMergeLite_RepeatedFieldsGenerator::TestParsingMergeLite_RepeatedFieldsGenerator(const TestParsingMergeLite_RepeatedFieldsGenerator& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      field1_(from.field1_),
      field2_(from.field2_),
      field3_(from.field3_),
      group1_(from.group1_),
      group2_(from.group2_),
      ext1_(from.ext1_),
      ext2_(from.ext2_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator)
}

void TestParsingMergeLite_RepeatedFieldsGenerator::SharedCtor() {
}

TestParsingMergeLite_RepeatedFieldsGenerator::~TestParsingMergeLite_RepeatedFieldsGenerator() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator)
  SharedDtor();
}

void TestParsingMergeLite_RepeatedFieldsGenerator::SharedDtor() {
}

void TestParsingMergeLite_RepeatedFieldsGenerator::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite_RepeatedFieldsGenerator& TestParsingMergeLite_RepeatedFieldsGenerator::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedFieldsGenerator.base);
  return *internal_default_instance();
}


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

  field1_.Clear();
  field2_.Clear();
  field3_.Clear();
  group1_.Clear();
  group2_.Clear();
  ext1_.Clear();
  ext2_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestParsingMergeLite_RepeatedFieldsGenerator::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.TestParsingMergeLite.RepeatedFieldsGenerator)
  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)) {
      // repeated .protobuf_unittest.TestAllTypesLite field1 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_field1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

      // repeated group Group1 = 10 { ... };
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(83u /* 83 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(10, input, add_group1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated group Group2 = 20 { ... };
      case 20: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(163u /* 163 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(20, input, add_group2()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.TestAllTypesLite ext1 = 1000;
      case 1000: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 8002 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_ext1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .protobuf_unittest.TestAllTypesLite ext2 = 1001;
      case 1001: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 8010 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_ext2()));
        } 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.TestParsingMergeLite.RepeatedFieldsGenerator)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator)
  return false;
#undef DO_
}

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

  // repeated .protobuf_unittest.TestAllTypesLite field1 = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field1_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1,
      this->field1(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite field2 = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field2_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2,
      this->field2(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite field3 = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field3_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3,
      this->field3(static_cast<int>(i)),
      output);
  }

  // repeated group Group1 = 10 { ... };
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->group1_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      10,
      this->group1(static_cast<int>(i)),
      output);
  }

  // repeated group Group2 = 20 { ... };
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->group2_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      20,
      this->group2(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite ext1 = 1000;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->ext1_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1000,
      this->ext1(static_cast<int>(i)),
      output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite ext2 = 1001;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->ext2_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1001,
      this->ext2(static_cast<int>(i)),
      output);
  }

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

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

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

  // repeated .protobuf_unittest.TestAllTypesLite field1 = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->field1_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->field1(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite field2 = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->field2_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->field2(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite field3 = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->field3_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->field3(static_cast<int>(i)));
    }
  }

  // repeated group Group1 = 10 { ... };
  {
    unsigned int count = static_cast<unsigned int>(this->group1_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          this->group1(static_cast<int>(i)));
    }
  }

  // repeated group Group2 = 20 { ... };
  {
    unsigned int count = static_cast<unsigned int>(this->group2_size());
    total_size += 4UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          this->group2(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite ext1 = 1000;
  {
    unsigned int count = static_cast<unsigned int>(this->ext1_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->ext1(static_cast<int>(i)));
    }
  }

  // repeated .protobuf_unittest.TestAllTypesLite ext2 = 1001;
  {
    unsigned int count = static_cast<unsigned int>(this->ext2_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->ext2(static_cast<int>(i)));
    }
  }

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

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

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

  field1_.MergeFrom(from.field1_);
  field2_.MergeFrom(from.field2_);
  field3_.MergeFrom(from.field3_);
  group1_.MergeFrom(from.group1_);
  group2_.MergeFrom(from.group2_);
  ext1_.MergeFrom(from.ext1_);
  ext2_.MergeFrom(from.ext2_);
}

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

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

void TestParsingMergeLite_RepeatedFieldsGenerator::Swap(TestParsingMergeLite_RepeatedFieldsGenerator* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite_RepeatedFieldsGenerator::InternalSwap(TestParsingMergeLite_RepeatedFieldsGenerator* other) {
  using std::swap;
  CastToBase(&field1_)->InternalSwap(CastToBase(&other->field1_));
  CastToBase(&field2_)->InternalSwap(CastToBase(&other->field2_));
  CastToBase(&field3_)->InternalSwap(CastToBase(&other->field3_));
  CastToBase(&group1_)->InternalSwap(CastToBase(&other->group1_));
  CastToBase(&group2_)->InternalSwap(CastToBase(&other->group2_));
  CastToBase(&ext1_)->InternalSwap(CastToBase(&other->ext1_));
  CastToBase(&ext2_)->InternalSwap(CastToBase(&other->ext2_));
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestParsingMergeLite_RepeatedFieldsGenerator::GetTypeName() const {
  return "protobuf_unittest.TestParsingMergeLite.RepeatedFieldsGenerator";
}


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

void TestParsingMergeLite_OptionalGroup::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestParsingMergeLite_OptionalGroup_default_instance_._instance.get_mutable()->optional_group_all_types_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite_OptionalGroup::kOptionalGroupAllTypesFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite_OptionalGroup::TestParsingMergeLite_OptionalGroup()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_OptionalGroup.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite.OptionalGroup)
}
TestParsingMergeLite_OptionalGroup::TestParsingMergeLite_OptionalGroup(const TestParsingMergeLite_OptionalGroup& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_optional_group_all_types()) {
    optional_group_all_types_ = new ::protobuf_unittest::TestAllTypesLite(*from.optional_group_all_types_);
  } else {
    optional_group_all_types_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite.OptionalGroup)
}

void TestParsingMergeLite_OptionalGroup::SharedCtor() {
  optional_group_all_types_ = NULL;
}

TestParsingMergeLite_OptionalGroup::~TestParsingMergeLite_OptionalGroup() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestParsingMergeLite.OptionalGroup)
  SharedDtor();
}

void TestParsingMergeLite_OptionalGroup::SharedDtor() {
  if (this != internal_default_instance()) delete optional_group_all_types_;
}

void TestParsingMergeLite_OptionalGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite_OptionalGroup& TestParsingMergeLite_OptionalGroup::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_OptionalGroup.base);
  return *internal_default_instance();
}


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

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

bool TestParsingMergeLite_OptionalGroup::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.TestParsingMergeLite.OptionalGroup)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .protobuf_unittest.TestAllTypesLite optional_group_all_types = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_group_all_types()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestAllTypesLite optional_group_all_types = 11;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      11, this->_internal_optional_group_all_types(), output);
  }

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

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

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

  // optional .protobuf_unittest.TestAllTypesLite optional_group_all_types = 11;
  if (has_optional_group_all_types()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *optional_group_all_types_);
  }

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

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

void TestParsingMergeLite_OptionalGroup::MergeFrom(const TestParsingMergeLite_OptionalGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestParsingMergeLite.OptionalGroup)
  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_optional_group_all_types()) {
    mutable_optional_group_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.optional_group_all_types());
  }
}

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

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

void TestParsingMergeLite_OptionalGroup::Swap(TestParsingMergeLite_OptionalGroup* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite_OptionalGroup::InternalSwap(TestParsingMergeLite_OptionalGroup* other) {
  using std::swap;
  swap(optional_group_all_types_, other->optional_group_all_types_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestParsingMergeLite_OptionalGroup::GetTypeName() const {
  return "protobuf_unittest.TestParsingMergeLite.OptionalGroup";
}


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

void TestParsingMergeLite_RepeatedGroup::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestParsingMergeLite_RepeatedGroup_default_instance_._instance.get_mutable()->repeated_group_all_types_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite_RepeatedGroup::kRepeatedGroupAllTypesFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite_RepeatedGroup::TestParsingMergeLite_RepeatedGroup()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedGroup.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite.RepeatedGroup)
}
TestParsingMergeLite_RepeatedGroup::TestParsingMergeLite_RepeatedGroup(const TestParsingMergeLite_RepeatedGroup& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_repeated_group_all_types()) {
    repeated_group_all_types_ = new ::protobuf_unittest::TestAllTypesLite(*from.repeated_group_all_types_);
  } else {
    repeated_group_all_types_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite.RepeatedGroup)
}

void TestParsingMergeLite_RepeatedGroup::SharedCtor() {
  repeated_group_all_types_ = NULL;
}

TestParsingMergeLite_RepeatedGroup::~TestParsingMergeLite_RepeatedGroup() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestParsingMergeLite.RepeatedGroup)
  SharedDtor();
}

void TestParsingMergeLite_RepeatedGroup::SharedDtor() {
  if (this != internal_default_instance()) delete repeated_group_all_types_;
}

void TestParsingMergeLite_RepeatedGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite_RepeatedGroup& TestParsingMergeLite_RepeatedGroup::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite_RepeatedGroup.base);
  return *internal_default_instance();
}


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

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

bool TestParsingMergeLite_RepeatedGroup::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.TestParsingMergeLite.RepeatedGroup)
  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)) {
      // optional .protobuf_unittest.TestAllTypesLite repeated_group_all_types = 21;
      case 21: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(170u /* 170 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_repeated_group_all_types()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // optional .protobuf_unittest.TestAllTypesLite repeated_group_all_types = 21;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      21, this->_internal_repeated_group_all_types(), output);
  }

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

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

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

  // optional .protobuf_unittest.TestAllTypesLite repeated_group_all_types = 21;
  if (has_repeated_group_all_types()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *repeated_group_all_types_);
  }

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

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

void TestParsingMergeLite_RepeatedGroup::MergeFrom(const TestParsingMergeLite_RepeatedGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestParsingMergeLite.RepeatedGroup)
  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_repeated_group_all_types()) {
    mutable_repeated_group_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.repeated_group_all_types());
  }
}

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

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

void TestParsingMergeLite_RepeatedGroup::Swap(TestParsingMergeLite_RepeatedGroup* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite_RepeatedGroup::InternalSwap(TestParsingMergeLite_RepeatedGroup* other) {
  using std::swap;
  swap(repeated_group_all_types_, other->repeated_group_all_types_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestParsingMergeLite_RepeatedGroup::GetTypeName() const {
  return "protobuf_unittest.TestParsingMergeLite.RepeatedGroup";
}


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

void TestParsingMergeLite::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestParsingMergeLite_default_instance_._instance.get_mutable()->required_all_types_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
  ::protobuf_unittest::_TestParsingMergeLite_default_instance_._instance.get_mutable()->optional_all_types_ = const_cast< ::protobuf_unittest::TestAllTypesLite*>(
      ::protobuf_unittest::TestAllTypesLite::internal_default_instance());
  ::protobuf_unittest::_TestParsingMergeLite_default_instance_._instance.get_mutable()->optionalgroup_ = const_cast< ::protobuf_unittest::TestParsingMergeLite_OptionalGroup*>(
      ::protobuf_unittest::TestParsingMergeLite_OptionalGroup::internal_default_instance());
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite::kRequiredAllTypesFieldNumber;
const int TestParsingMergeLite::kOptionalAllTypesFieldNumber;
const int TestParsingMergeLite::kRepeatedAllTypesFieldNumber;
const int TestParsingMergeLite::kOptionalgroupFieldNumber;
const int TestParsingMergeLite::kRepeatedgroupFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestParsingMergeLite::TestParsingMergeLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestParsingMergeLite)
}
TestParsingMergeLite::TestParsingMergeLite(const TestParsingMergeLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_all_types_(from.repeated_all_types_),
      repeatedgroup_(from.repeatedgroup_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  if (from.has_required_all_types()) {
    required_all_types_ = new ::protobuf_unittest::TestAllTypesLite(*from.required_all_types_);
  } else {
    required_all_types_ = NULL;
  }
  if (from.has_optional_all_types()) {
    optional_all_types_ = new ::protobuf_unittest::TestAllTypesLite(*from.optional_all_types_);
  } else {
    optional_all_types_ = NULL;
  }
  if (from.has_optionalgroup()) {
    optionalgroup_ = new ::protobuf_unittest::TestParsingMergeLite_OptionalGroup(*from.optionalgroup_);
  } else {
    optionalgroup_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestParsingMergeLite)
}

void TestParsingMergeLite::SharedCtor() {
  ::memset(&required_all_types_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&optionalgroup_) -
      reinterpret_cast<char*>(&required_all_types_)) + sizeof(optionalgroup_));
}

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

void TestParsingMergeLite::SharedDtor() {
  if (this != internal_default_instance()) delete required_all_types_;
  if (this != internal_default_instance()) delete optional_all_types_;
  if (this != internal_default_instance()) delete optionalgroup_;
}

void TestParsingMergeLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestParsingMergeLite& TestParsingMergeLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestParsingMergeLite.base);
  return *internal_default_instance();
}


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

  _extensions_.Clear();
  repeated_all_types_.Clear();
  repeatedgroup_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 7u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(required_all_types_ != NULL);
      required_all_types_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(optional_all_types_ != NULL);
      optional_all_types_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(optionalgroup_ != NULL);
      optionalgroup_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestParsingMergeLite::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.TestParsingMergeLite)
  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)) {
      // required .protobuf_unittest.TestAllTypesLite required_all_types = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_required_all_types()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite optional_all_types = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_all_types()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

      // optional group OptionalGroup = 10 { ... };
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(83u /* 83 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(
                10, input, mutable_optionalgroup()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated group RepeatedGroup = 20 { ... };
      case 20: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(163u /* 163 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(20, input, add_repeatedgroup()));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

  cached_has_bits = _has_bits_[0];
  // required .protobuf_unittest.TestAllTypesLite required_all_types = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->_internal_required_all_types(), output);
  }

  // optional .protobuf_unittest.TestAllTypesLite optional_all_types = 2;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->_internal_optional_all_types(), output);
  }

  // repeated .protobuf_unittest.TestAllTypesLite repeated_all_types = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeated_all_types_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3,
      this->repeated_all_types(static_cast<int>(i)),
      output);
  }

  // optional group OptionalGroup = 10 { ... };
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      10, this->_internal_optionalgroup(), output);
  }

  // repeated group RepeatedGroup = 20 { ... };
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->repeatedgroup_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      20,
      this->repeatedgroup(static_cast<int>(i)),
      output);
  }

  // Extension range [1000, 536870912)
  _extensions_.SerializeWithCachedSizes(
      1000, 536870912, output);

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

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

  total_size += _extensions_.ByteSize();

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

  // required .protobuf_unittest.TestAllTypesLite required_all_types = 1;
  if (has_required_all_types()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *required_all_types_);
  }
  // repeated .protobuf_unittest.TestAllTypesLite repeated_all_types = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_all_types_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->repeated_all_types(static_cast<int>(i)));
    }
  }

  // repeated group RepeatedGroup = 20 { ... };
  {
    unsigned int count = static_cast<unsigned int>(this->repeatedgroup_size());
    total_size += 4UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          this->repeatedgroup(static_cast<int>(i)));
    }
  }

  if (_has_bits_[0 / 32] & 6u) {
    // optional .protobuf_unittest.TestAllTypesLite optional_all_types = 2;
    if (has_optional_all_types()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_all_types_);
    }

    // optional group OptionalGroup = 10 { ... };
    if (has_optionalgroup()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          *optionalgroup_);
    }

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

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

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

  repeated_all_types_.MergeFrom(from.repeated_all_types_);
  repeatedgroup_.MergeFrom(from.repeatedgroup_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 7u) {
    if (cached_has_bits & 0x00000001u) {
      mutable_required_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.required_all_types());
    }
    if (cached_has_bits & 0x00000002u) {
      mutable_optional_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.optional_all_types());
    }
    if (cached_has_bits & 0x00000004u) {
      mutable_optionalgroup()->::protobuf_unittest::TestParsingMergeLite_OptionalGroup::MergeFrom(from.optionalgroup());
    }
  }
}

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

bool TestParsingMergeLite::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
  return true;
}

void TestParsingMergeLite::Swap(TestParsingMergeLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestParsingMergeLite::InternalSwap(TestParsingMergeLite* other) {
  using std::swap;
  CastToBase(&repeated_all_types_)->InternalSwap(CastToBase(&other->repeated_all_types_));
  CastToBase(&repeatedgroup_)->InternalSwap(CastToBase(&other->repeatedgroup_));
  swap(required_all_types_, other->required_all_types_);
  swap(optional_all_types_, other->optional_all_types_);
  swap(optionalgroup_, other->optionalgroup_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  _extensions_.Swap(&other->_extensions_);
}

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


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

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

TestEmptyMessageLite::TestEmptyMessageLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestEmptyMessageLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEmptyMessageLite)
}
TestEmptyMessageLite::TestEmptyMessageLite(const TestEmptyMessageLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestEmptyMessageLite)
}

void TestEmptyMessageLite::SharedCtor() {
}

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

void TestEmptyMessageLite::SharedDtor() {
}

void TestEmptyMessageLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestEmptyMessageLite& TestEmptyMessageLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestEmptyMessageLite.base);
  return *internal_default_instance();
}


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

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

bool TestEmptyMessageLite::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.TestEmptyMessageLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    DO_(::google::protobuf::internal::WireFormatLite::SkipField(
        input, tag, &unknown_fields_stream));
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestEmptyMessageLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestEmptyMessageLite)
  return false;
#undef DO_
}

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

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

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

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

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

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

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

}

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

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

void TestEmptyMessageLite::Swap(TestEmptyMessageLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestEmptyMessageLite::InternalSwap(TestEmptyMessageLite* other) {
  using std::swap;
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

TestEmptyMessageWithExtensionsLite::TestEmptyMessageWithExtensionsLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestEmptyMessageWithExtensionsLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestEmptyMessageWithExtensionsLite)
}
TestEmptyMessageWithExtensionsLite::TestEmptyMessageWithExtensionsLite(const TestEmptyMessageWithExtensionsLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestEmptyMessageWithExtensionsLite)
}

void TestEmptyMessageWithExtensionsLite::SharedCtor() {
}

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

void TestEmptyMessageWithExtensionsLite::SharedDtor() {
}

void TestEmptyMessageWithExtensionsLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestEmptyMessageWithExtensionsLite& TestEmptyMessageWithExtensionsLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestEmptyMessageWithExtensionsLite.base);
  return *internal_default_instance();
}


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

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

bool TestEmptyMessageWithExtensionsLite::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.TestEmptyMessageWithExtensionsLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    if ((8u <= tag)) {
      DO_(_extensions_.ParseField(tag, input,
          internal_default_instance(),
          &unknown_fields_stream));
      continue;
    }
    DO_(::google::protobuf::internal::WireFormatLite::SkipField(
        input, tag, &unknown_fields_stream));
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestEmptyMessageWithExtensionsLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestEmptyMessageWithExtensionsLite)
  return false;
#undef DO_
}

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

  // Extension range [1, 536870912)
  _extensions_.SerializeWithCachedSizes(
      1, 536870912, output);

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

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

  total_size += _extensions_.ByteSize();

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

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

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

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

}

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

bool TestEmptyMessageWithExtensionsLite::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  return true;
}

void TestEmptyMessageWithExtensionsLite::Swap(TestEmptyMessageWithExtensionsLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestEmptyMessageWithExtensionsLite::InternalSwap(TestEmptyMessageWithExtensionsLite* other) {
  using std::swap;
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  _extensions_.Swap(&other->_extensions_);
}

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


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

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

V1MessageLite::V1MessageLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_V1MessageLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.V1MessageLite)
}
V1MessageLite::V1MessageLite(const V1MessageLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&int_field_, &from.int_field_,
    static_cast<size_t>(reinterpret_cast<char*>(&enum_field_) -
    reinterpret_cast<char*>(&int_field_)) + sizeof(enum_field_));
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.V1MessageLite)
}

void V1MessageLite::SharedCtor() {
  int_field_ = 0;
  enum_field_ = 1;
}

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

void V1MessageLite::SharedDtor() {
}

void V1MessageLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const V1MessageLite& V1MessageLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_V1MessageLite.base);
  return *internal_default_instance();
}


void V1MessageLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.V1MessageLite)
  ::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 & 3u) {
    int_field_ = 0;
    enum_field_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool V1MessageLite::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.V1MessageLite)
  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 int_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_int_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &int_field_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.V1EnumLite enum_field = 2 [default = V1_FIRST];
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::V1EnumLite_IsValid(value)) {
            set_enum_field(static_cast< ::protobuf_unittest::V1EnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(16u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } 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.V1MessageLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.V1MessageLite)
  return false;
#undef DO_
}

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

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

  // optional .protobuf_unittest.V1EnumLite enum_field = 2 [default = V1_FIRST];
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->enum_field(), output);
  }

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

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

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

  // required int32 int_field = 1;
  if (has_int_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->int_field());
  }
  // optional .protobuf_unittest.V1EnumLite enum_field = 2 [default = V1_FIRST];
  if (has_enum_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->enum_field());
  }

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

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

void V1MessageLite::MergeFrom(const V1MessageLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.V1MessageLite)
  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 & 3u) {
    if (cached_has_bits & 0x00000001u) {
      int_field_ = from.int_field_;
    }
    if (cached_has_bits & 0x00000002u) {
      enum_field_ = from.enum_field_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

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

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

void V1MessageLite::Swap(V1MessageLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void V1MessageLite::InternalSwap(V1MessageLite* other) {
  using std::swap;
  swap(int_field_, other->int_field_);
  swap(enum_field_, other->enum_field_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

V2MessageLite::V2MessageLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_V2MessageLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.V2MessageLite)
}
V2MessageLite::V2MessageLite(const V2MessageLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&int_field_, &from.int_field_,
    static_cast<size_t>(reinterpret_cast<char*>(&enum_field_) -
    reinterpret_cast<char*>(&int_field_)) + sizeof(enum_field_));
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.V2MessageLite)
}

void V2MessageLite::SharedCtor() {
  int_field_ = 0;
  enum_field_ = 1;
}

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

void V2MessageLite::SharedDtor() {
}

void V2MessageLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const V2MessageLite& V2MessageLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_V2MessageLite.base);
  return *internal_default_instance();
}


void V2MessageLite::Clear() {
// @@protoc_insertion_point(message_clear_start:protobuf_unittest.V2MessageLite)
  ::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 & 3u) {
    int_field_ = 0;
    enum_field_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool V2MessageLite::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.V2MessageLite)
  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 int_field = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          set_has_int_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &int_field_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.V2EnumLite enum_field = 2 [default = V2_FIRST];
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::V2EnumLite_IsValid(value)) {
            set_enum_field(static_cast< ::protobuf_unittest::V2EnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(16u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } 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.V2MessageLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.V2MessageLite)
  return false;
#undef DO_
}

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

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

  // optional .protobuf_unittest.V2EnumLite enum_field = 2 [default = V2_FIRST];
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->enum_field(), output);
  }

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

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

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

  // required int32 int_field = 1;
  if (has_int_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->int_field());
  }
  // optional .protobuf_unittest.V2EnumLite enum_field = 2 [default = V2_FIRST];
  if (has_enum_field()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->enum_field());
  }

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

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

void V2MessageLite::MergeFrom(const V2MessageLite& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.V2MessageLite)
  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 & 3u) {
    if (cached_has_bits & 0x00000001u) {
      int_field_ = from.int_field_;
    }
    if (cached_has_bits & 0x00000002u) {
      enum_field_ = from.enum_field_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

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

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

void V2MessageLite::Swap(V2MessageLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void V2MessageLite::InternalSwap(V2MessageLite* other) {
  using std::swap;
  swap(int_field_, other->int_field_);
  swap(enum_field_, other->enum_field_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

TestHugeFieldNumbersLite_OptionalGroup::TestHugeFieldNumbersLite_OptionalGroup()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite_OptionalGroup.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestHugeFieldNumbersLite.OptionalGroup)
}
TestHugeFieldNumbersLite_OptionalGroup::TestHugeFieldNumbersLite_OptionalGroup(const TestHugeFieldNumbersLite_OptionalGroup& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  group_a_ = from.group_a_;
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestHugeFieldNumbersLite.OptionalGroup)
}

void TestHugeFieldNumbersLite_OptionalGroup::SharedCtor() {
  group_a_ = 0;
}

TestHugeFieldNumbersLite_OptionalGroup::~TestHugeFieldNumbersLite_OptionalGroup() {
  // @@protoc_insertion_point(destructor:protobuf_unittest.TestHugeFieldNumbersLite.OptionalGroup)
  SharedDtor();
}

void TestHugeFieldNumbersLite_OptionalGroup::SharedDtor() {
}

void TestHugeFieldNumbersLite_OptionalGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestHugeFieldNumbersLite_OptionalGroup& TestHugeFieldNumbersLite_OptionalGroup::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite_OptionalGroup.base);
  return *internal_default_instance();
}


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

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

bool TestHugeFieldNumbersLite_OptionalGroup::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.TestHugeFieldNumbersLite.OptionalGroup)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(4294960077u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int32 group_a = 536870009;
      case 536870009: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(200u /* 4294960072 & 0xFF */)) {
          set_has_group_a();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &group_a_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

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

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

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

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

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

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

  // optional int32 group_a = 536870009;
  if (has_group_a()) {
    total_size += 5 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->group_a());
  }

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

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

void TestHugeFieldNumbersLite_OptionalGroup::MergeFrom(const TestHugeFieldNumbersLite_OptionalGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:protobuf_unittest.TestHugeFieldNumbersLite.OptionalGroup)
  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_group_a()) {
    set_group_a(from.group_a());
  }
}

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

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

void TestHugeFieldNumbersLite_OptionalGroup::Swap(TestHugeFieldNumbersLite_OptionalGroup* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestHugeFieldNumbersLite_OptionalGroup::InternalSwap(TestHugeFieldNumbersLite_OptionalGroup* other) {
  using std::swap;
  swap(group_a_, other->group_a_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::std::string TestHugeFieldNumbersLite_OptionalGroup::GetTypeName() const {
  return "protobuf_unittest.TestHugeFieldNumbersLite.OptionalGroup";
}


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

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

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

void TestHugeFieldNumbersLite::InitAsDefaultInstance() {
  ::protobuf_unittest::_TestHugeFieldNumbersLite_default_instance_._instance.get_mutable()->optional_message_ = const_cast< ::protobuf_unittest::ForeignMessageLite*>(
      ::protobuf_unittest::ForeignMessageLite::internal_default_instance());
  ::protobuf_unittest::_TestHugeFieldNumbersLite_default_instance_._instance.get_mutable()->optionalgroup_ = const_cast< ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup*>(
      ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup::internal_default_instance());
}
void TestHugeFieldNumbersLite::set_allocated_oneof_test_all_types(::protobuf_unittest::TestAllTypesLite* oneof_test_all_types) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (oneof_test_all_types) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      oneof_test_all_types = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, oneof_test_all_types, submessage_arena);
    }
    set_has_oneof_test_all_types();
    oneof_field_.oneof_test_all_types_ = oneof_test_all_types;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestHugeFieldNumbersLite.oneof_test_all_types)
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestHugeFieldNumbersLite::kOptionalInt32FieldNumber;
const int TestHugeFieldNumbersLite::kFixed32FieldNumber;
const int TestHugeFieldNumbersLite::kRepeatedInt32FieldNumber;
const int TestHugeFieldNumbersLite::kPackedInt32FieldNumber;
const int TestHugeFieldNumbersLite::kOptionalEnumFieldNumber;
const int TestHugeFieldNumbersLite::kOptionalStringFieldNumber;
const int TestHugeFieldNumbersLite::kOptionalBytesFieldNumber;
const int TestHugeFieldNumbersLite::kOptionalMessageFieldNumber;
const int TestHugeFieldNumbersLite::kOptionalgroupFieldNumber;
const int TestHugeFieldNumbersLite::kStringStringMapFieldNumber;
const int TestHugeFieldNumbersLite::kOneofUint32FieldNumber;
const int TestHugeFieldNumbersLite::kOneofTestAllTypesFieldNumber;
const int TestHugeFieldNumbersLite::kOneofStringFieldNumber;
const int TestHugeFieldNumbersLite::kOneofBytesFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestHugeFieldNumbersLite::TestHugeFieldNumbersLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestHugeFieldNumbersLite)
}
TestHugeFieldNumbersLite::TestHugeFieldNumbersLite(const TestHugeFieldNumbersLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_int32_(from.repeated_int32_),
      packed_int32_(from.packed_int32_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  string_string_map_.MergeFrom(from.string_string_map_);
  optional_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_string()) {
    optional_string_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_);
  }
  optional_bytes_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_optional_bytes()) {
    optional_bytes_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_bytes_);
  }
  if (from.has_optional_message()) {
    optional_message_ = new ::protobuf_unittest::ForeignMessageLite(*from.optional_message_);
  } else {
    optional_message_ = NULL;
  }
  if (from.has_optionalgroup()) {
    optionalgroup_ = new ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup(*from.optionalgroup_);
  } else {
    optionalgroup_ = NULL;
  }
  ::memcpy(&optional_int32_, &from.optional_int32_,
    static_cast<size_t>(reinterpret_cast<char*>(&optional_enum_) -
    reinterpret_cast<char*>(&optional_int32_)) + sizeof(optional_enum_));
  clear_has_oneof_field();
  switch (from.oneof_field_case()) {
    case kOneofUint32: {
      set_oneof_uint32(from.oneof_uint32());
      break;
    }
    case kOneofTestAllTypes: {
      mutable_oneof_test_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.oneof_test_all_types());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestHugeFieldNumbersLite)
}

void TestHugeFieldNumbersLite::SharedCtor() {
  optional_string_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_bytes_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&optional_message_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&fixed_32_) -
      reinterpret_cast<char*>(&optional_message_)) + sizeof(fixed_32_));
  optional_enum_ = 4;
  clear_has_oneof_field();
}

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

void TestHugeFieldNumbersLite::SharedDtor() {
  optional_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  optional_bytes_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete optional_message_;
  if (this != internal_default_instance()) delete optionalgroup_;
  if (has_oneof_field()) {
    clear_oneof_field();
  }
}

void TestHugeFieldNumbersLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestHugeFieldNumbersLite& TestHugeFieldNumbersLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestHugeFieldNumbersLite.base);
  return *internal_default_instance();
}


void TestHugeFieldNumbersLite::clear_oneof_field() {
// @@protoc_insertion_point(one_of_clear_start:protobuf_unittest.TestHugeFieldNumbersLite)
  switch (oneof_field_case()) {
    case kOneofUint32: {
      // No need to clear
      break;
    }
    case kOneofTestAllTypes: {
      delete oneof_field_.oneof_test_all_types_;
      break;
    }
    case kOneofString: {
      oneof_field_.oneof_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofBytes: {
      oneof_field_.oneof_bytes_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = ONEOF_FIELD_NOT_SET;
}


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

  _extensions_.Clear();
  repeated_int32_.Clear();
  packed_int32_.Clear();
  string_string_map_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 15u) {
    if (cached_has_bits & 0x00000001u) {
      optional_string_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      optional_bytes_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(optional_message_ != NULL);
      optional_message_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(optionalgroup_ != NULL);
      optionalgroup_->Clear();
    }
  }
  if (cached_has_bits & 112u) {
    ::memset(&optional_int32_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&fixed_32_) -
        reinterpret_cast<char*>(&optional_int32_)) + sizeof(fixed_32_));
    optional_enum_ = 4;
  }
  clear_oneof_field();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool TestHugeFieldNumbersLite::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.TestHugeFieldNumbersLite)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(4294960117u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int32 optional_int32 = 536870000;
      case 536870000: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(128u /* 4294960000 & 0xFF */)) {
          set_has_optional_int32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &optional_int32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 fixed_32 = 536870001;
      case 536870001: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(136u /* 4294960008 & 0xFF */)) {
          set_has_fixed_32();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &fixed_32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int32 repeated_int32 = 536870002 [packed = false];
      case 536870002: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(144u /* 4294960016 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 5, 4294960016u, input, this->mutable_repeated_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(146u /* 4294960018 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_repeated_int32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int32 packed_int32 = 536870003 [packed = true];
      case 536870003: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(154u /* 4294960026 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_packed_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(152u /* 4294960024 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 5, 4294960026u, input, this->mutable_packed_int32())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.ForeignEnumLite optional_enum = 536870004;
      case 536870004: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(160u /* 4294960032 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::ForeignEnumLite_IsValid(value)) {
            set_optional_enum(static_cast< ::protobuf_unittest::ForeignEnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(4294960032u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string optional_string = 536870005;
      case 536870005: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(170u /* 4294960042 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_optional_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes optional_bytes = 536870006;
      case 536870006: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(178u /* 4294960050 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_optional_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.ForeignMessageLite optional_message = 536870007;
      case 536870007: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(186u /* 4294960058 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_optional_message()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional group OptionalGroup = 536870008 { ... };
      case 536870008: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(195u /* 4294960067 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadGroup(
                536870008, input, mutable_optionalgroup()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // map<string, string> string_string_map = 536870010;
      case 536870010: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(210u /* 4294960082 & 0xFF */)) {
          TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse::Parser< ::google::protobuf::internal::MapFieldLite<
              TestHugeFieldNumbersLite_StringStringMapEntry_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(&string_string_map_);
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
              input, &parser));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 oneof_uint32 = 536870011;
      case 536870011: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(216u /* 4294960088 & 0xFF */)) {
          clear_oneof_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &oneof_field_.oneof_uint32_)));
          set_has_oneof_uint32();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite oneof_test_all_types = 536870012;
      case 536870012: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(226u /* 4294960098 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_oneof_test_all_types()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string oneof_string = 536870013;
      case 536870013: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(234u /* 4294960106 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oneof_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes oneof_bytes = 536870014;
      case 536870014: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(242u /* 4294960114 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_oneof_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        if ((4294880000u <= tag && tag < 4294960000u)) {
          DO_(_extensions_.ParseField(tag, input,
              internal_default_instance(),
              &unknown_fields_stream));
          continue;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:protobuf_unittest.TestHugeFieldNumbersLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestHugeFieldNumbersLite)
  return false;
#undef DO_
}

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

  // Extension range [536860000, 536870000)
  _extensions_.SerializeWithCachedSizes(
      536860000, 536870000, output);

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

  // optional int32 fixed_32 = 536870001;
  if (cached_has_bits & 0x00000020u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(536870001, this->fixed_32(), output);
  }

  // repeated int32 repeated_int32 = 536870002 [packed = false];
  for (int i = 0, n = this->repeated_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(
      536870002, this->repeated_int32(i), output);
  }

  // repeated int32 packed_int32 = 536870003 [packed = true];
  if (this->packed_int32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(536870003, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _packed_int32_cached_byte_size_));
  }
  for (int i = 0, n = this->packed_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
      this->packed_int32(i), output);
  }

  // optional .protobuf_unittest.ForeignEnumLite optional_enum = 536870004;
  if (cached_has_bits & 0x00000040u) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      536870004, this->optional_enum(), output);
  }

  // optional string optional_string = 536870005;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      536870005, this->optional_string(), output);
  }

  // optional bytes optional_bytes = 536870006;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
      536870006, this->optional_bytes(), output);
  }

  // optional .protobuf_unittest.ForeignMessageLite optional_message = 536870007;
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      536870007, this->_internal_optional_message(), output);
  }

  // optional group OptionalGroup = 536870008 { ... };
  if (cached_has_bits & 0x00000008u) {
    ::google::protobuf::internal::WireFormatLite::WriteGroup(
      536870008, this->_internal_optionalgroup(), output);
  }

  // map<string, string> string_string_map = 536870010;
  if (!this->string_string_map().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->string_string_map().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->string_string_map().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->string_string_map().begin();
          it != this->string_string_map().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      ::std::unique_ptr<TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse> entry;
      for (size_type i = 0; i < n; i++) {
        entry.reset(string_string_map_.NewEntryWrapper(
            items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            536870010, *entry, output);
        Utf8Check::Check(items[static_cast<ptrdiff_t>(i)]);
      }
    } else {
      ::std::unique_ptr<TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse> entry;
      for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
          it = this->string_string_map().begin();
          it != this->string_string_map().end(); ++it) {
        entry.reset(string_string_map_.NewEntryWrapper(
            it->first, it->second));
        ::google::protobuf::internal::WireFormatLite::WriteMessage(
            536870010, *entry, output);
        Utf8Check::Check(&*it);
      }
    }
  }

  switch (oneof_field_case()) {
    case kOneofUint32:
      ::google::protobuf::internal::WireFormatLite::WriteUInt32(536870011, this->oneof_uint32(), output);
      break;
    case kOneofTestAllTypes:
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        536870012, this->_internal_oneof_test_all_types(), output);
      break;
    case kOneofString:
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        536870013, this->oneof_string(), output);
      break;
    case kOneofBytes:
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        536870014, this->oneof_bytes(), output);
      break;
    default: ;
  }
  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestHugeFieldNumbersLite)
}

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

  total_size += _extensions_.ByteSize();

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

  // repeated int32 repeated_int32 = 536870002 [packed = false];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->repeated_int32_);
    total_size += 5 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_int32_size());
    total_size += data_size;
  }

  // repeated int32 packed_int32 = 536870003 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->packed_int32_);
    if (data_size > 0) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _packed_int32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // map<string, string> string_string_map = 536870010;
  total_size += 5 *
      ::google::protobuf::internal::FromIntSize(this->string_string_map_size());
  {
    ::std::unique_ptr<TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse> entry;
    for (::google::protobuf::Map< ::std::string, ::std::string >::const_iterator
        it = this->string_string_map().begin();
        it != this->string_string_map().end(); ++it) {
      entry.reset(string_string_map_.NewEntryWrapper(it->first, it->second));
      total_size += ::google::protobuf::internal::WireFormatLite::
          MessageSizeNoVirtual(*entry);
    }
  }

  if (_has_bits_[0 / 32] & 127u) {
    // optional string optional_string = 536870005;
    if (has_optional_string()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->optional_string());
    }

    // optional bytes optional_bytes = 536870006;
    if (has_optional_bytes()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->optional_bytes());
    }

    // optional .protobuf_unittest.ForeignMessageLite optional_message = 536870007;
    if (has_optional_message()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *optional_message_);
    }

    // optional group OptionalGroup = 536870008 { ... };
    if (has_optionalgroup()) {
      total_size += 10 +
        ::google::protobuf::internal::WireFormatLite::GroupSize(
          *optionalgroup_);
    }

    // optional int32 optional_int32 = 536870000;
    if (has_optional_int32()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->optional_int32());
    }

    // optional int32 fixed_32 = 536870001;
    if (has_fixed_32()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->fixed_32());
    }

    // optional .protobuf_unittest.ForeignEnumLite optional_enum = 536870004;
    if (has_optional_enum()) {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->optional_enum());
    }

  }
  switch (oneof_field_case()) {
    // optional uint32 oneof_uint32 = 536870011;
    case kOneofUint32: {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->oneof_uint32());
      break;
    }
    // optional .protobuf_unittest.TestAllTypesLite oneof_test_all_types = 536870012;
    case kOneofTestAllTypes: {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.oneof_test_all_types_);
      break;
    }
    // optional string oneof_string = 536870013;
    case kOneofString: {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->oneof_string());
      break;
    }
    // optional bytes oneof_bytes = 536870014;
    case kOneofBytes: {
      total_size += 5 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->oneof_bytes());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

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

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

  repeated_int32_.MergeFrom(from.repeated_int32_);
  packed_int32_.MergeFrom(from.packed_int32_);
  string_string_map_.MergeFrom(from.string_string_map_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 127u) {
    if (cached_has_bits & 0x00000001u) {
      set_has_optional_string();
      optional_string_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_string_);
    }
    if (cached_has_bits & 0x00000002u) {
      set_has_optional_bytes();
      optional_bytes_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.optional_bytes_);
    }
    if (cached_has_bits & 0x00000004u) {
      mutable_optional_message()->::protobuf_unittest::ForeignMessageLite::MergeFrom(from.optional_message());
    }
    if (cached_has_bits & 0x00000008u) {
      mutable_optionalgroup()->::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup::MergeFrom(from.optionalgroup());
    }
    if (cached_has_bits & 0x00000010u) {
      optional_int32_ = from.optional_int32_;
    }
    if (cached_has_bits & 0x00000020u) {
      fixed_32_ = from.fixed_32_;
    }
    if (cached_has_bits & 0x00000040u) {
      optional_enum_ = from.optional_enum_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  switch (from.oneof_field_case()) {
    case kOneofUint32: {
      set_oneof_uint32(from.oneof_uint32());
      break;
    }
    case kOneofTestAllTypes: {
      mutable_oneof_test_all_types()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.oneof_test_all_types());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
}

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

bool TestHugeFieldNumbersLite::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  return true;
}

void TestHugeFieldNumbersLite::Swap(TestHugeFieldNumbersLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestHugeFieldNumbersLite::InternalSwap(TestHugeFieldNumbersLite* other) {
  using std::swap;
  repeated_int32_.InternalSwap(&other->repeated_int32_);
  packed_int32_.InternalSwap(&other->packed_int32_);
  string_string_map_.Swap(&other->string_string_map_);
  optional_string_.Swap(&other->optional_string_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  optional_bytes_.Swap(&other->optional_bytes_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(optional_message_, other->optional_message_);
  swap(optionalgroup_, other->optionalgroup_);
  swap(optional_int32_, other->optional_int32_);
  swap(fixed_32_, other->fixed_32_);
  swap(optional_enum_, other->optional_enum_);
  swap(oneof_field_, other->oneof_field_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  _extensions_.Swap(&other->_extensions_);
}

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


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

void TestOneofParsingLite::InitAsDefaultInstance() {
}
void TestOneofParsingLite::set_allocated_oneof_submessage(::protobuf_unittest::TestAllTypesLite* oneof_submessage) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  clear_oneof_field();
  if (oneof_submessage) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      oneof_submessage = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, oneof_submessage, submessage_arena);
    }
    set_has_oneof_submessage();
    oneof_field_.oneof_submessage_ = oneof_submessage;
  }
  // @@protoc_insertion_point(field_set_allocated:protobuf_unittest.TestOneofParsingLite.oneof_submessage)
}
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_;
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_string_cord_;
::google::protobuf::internal::ExplicitlyConstructed<::std::string> TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_string_piece_;
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestOneofParsingLite::kOneofInt32FieldNumber;
const int TestOneofParsingLite::kOneofSubmessageFieldNumber;
const int TestOneofParsingLite::kOneofStringFieldNumber;
const int TestOneofParsingLite::kOneofBytesFieldNumber;
const int TestOneofParsingLite::kOneofStringCordFieldNumber;
const int TestOneofParsingLite::kOneofBytesCordFieldNumber;
const int TestOneofParsingLite::kOneofStringStringPieceFieldNumber;
const int TestOneofParsingLite::kOneofBytesStringPieceFieldNumber;
const int TestOneofParsingLite::kOneofEnumFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TestOneofParsingLite::TestOneofParsingLite()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestOneofParsingLite.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.TestOneofParsingLite)
}
TestOneofParsingLite::TestOneofParsingLite(const TestOneofParsingLite& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  clear_has_oneof_field();
  switch (from.oneof_field_case()) {
    case kOneofInt32: {
      set_oneof_int32(from.oneof_int32());
      break;
    }
    case kOneofSubmessage: {
      mutable_oneof_submessage()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.oneof_submessage());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case kOneofStringCord: {
      set_oneof_string_cord(from.oneof_string_cord());
      break;
    }
    case kOneofBytesCord: {
      set_oneof_bytes_cord(from.oneof_bytes_cord());
      break;
    }
    case kOneofStringStringPiece: {
      set_oneof_string_string_piece(from.oneof_string_string_piece());
      break;
    }
    case kOneofBytesStringPiece: {
      set_oneof_bytes_string_piece(from.oneof_bytes_string_piece());
      break;
    }
    case kOneofEnum: {
      set_oneof_enum(from.oneof_enum());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.TestOneofParsingLite)
}

void TestOneofParsingLite::SharedCtor() {
  clear_has_oneof_field();
}

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

void TestOneofParsingLite::SharedDtor() {
  if (has_oneof_field()) {
    clear_oneof_field();
  }
}

void TestOneofParsingLite::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const TestOneofParsingLite& TestOneofParsingLite::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_TestOneofParsingLite.base);
  return *internal_default_instance();
}


void TestOneofParsingLite::clear_oneof_field() {
// @@protoc_insertion_point(one_of_clear_start:protobuf_unittest.TestOneofParsingLite)
  switch (oneof_field_case()) {
    case kOneofInt32: {
      // No need to clear
      break;
    }
    case kOneofSubmessage: {
      delete oneof_field_.oneof_submessage_;
      break;
    }
    case kOneofString: {
      oneof_field_.oneof_string_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofBytes: {
      oneof_field_.oneof_bytes_.DestroyNoArena(&::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_.get());
      break;
    }
    case kOneofStringCord: {
      oneof_field_.oneof_string_cord_.DestroyNoArena(&::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_string_cord_.get());
      break;
    }
    case kOneofBytesCord: {
      oneof_field_.oneof_bytes_cord_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofStringStringPiece: {
      oneof_field_.oneof_string_string_piece_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
      break;
    }
    case kOneofBytesStringPiece: {
      oneof_field_.oneof_bytes_string_piece_.DestroyNoArena(&::protobuf_unittest::TestOneofParsingLite::_i_give_permission_to_break_this_code_default_oneof_bytes_string_piece_.get());
      break;
    }
    case kOneofEnum: {
      // No need to clear
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = ONEOF_FIELD_NOT_SET;
}


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

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

bool TestOneofParsingLite::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.TestOneofParsingLite)
  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 oneof_int32 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          clear_oneof_field();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &oneof_field_.oneof_int32_)));
          set_has_oneof_int32();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.TestAllTypesLite oneof_submessage = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_oneof_submessage()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string oneof_string = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oneof_string()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes oneof_bytes = 4 [default = "default bytes"];
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_oneof_bytes()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string oneof_string_cord = 5 [default = "default Cord", ctype = CORD];
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oneof_string_cord()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes oneof_bytes_cord = 6 [ctype = CORD];
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_oneof_bytes_cord()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string oneof_string_string_piece = 7 [ctype = STRING_PIECE];
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_oneof_string_string_piece()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bytes oneof_bytes_string_piece = 8 [default = "default StringPiece", ctype = STRING_PIECE];
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_oneof_bytes_string_piece()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .protobuf_unittest.V2EnumLite oneof_enum = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::protobuf_unittest::V2EnumLite_IsValid(value)) {
            set_oneof_enum(static_cast< ::protobuf_unittest::V2EnumLite >(value));
          } else {
            unknown_fields_stream.WriteVarint32(72u);
            unknown_fields_stream.WriteVarint32(
                static_cast< ::google::protobuf::uint32>(value));
          }
        } 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.TestOneofParsingLite)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.TestOneofParsingLite)
  return false;
#undef DO_
}

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

  switch (oneof_field_case()) {
    case kOneofInt32:
      ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->oneof_int32(), output);
      break;
    case kOneofSubmessage:
      ::google::protobuf::internal::WireFormatLite::WriteMessage(
        2, this->_internal_oneof_submessage(), output);
      break;
    case kOneofString:
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->oneof_string(), output);
      break;
    case kOneofBytes:
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        4, this->oneof_bytes(), output);
      break;
    case kOneofStringCord:
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        5, this->oneof_string_cord(), output);
      break;
    case kOneofBytesCord:
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        6, this->oneof_bytes_cord(), output);
      break;
    case kOneofStringStringPiece:
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        7, this->oneof_string_string_piece(), output);
      break;
    case kOneofBytesStringPiece:
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        8, this->oneof_bytes_string_piece(), output);
      break;
    case kOneofEnum:
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        9, this->oneof_enum(), output);
      break;
    default: ;
  }
  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:protobuf_unittest.TestOneofParsingLite)
}

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

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

  switch (oneof_field_case()) {
    // optional int32 oneof_int32 = 1;
    case kOneofInt32: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->oneof_int32());
      break;
    }
    // optional .protobuf_unittest.TestAllTypesLite oneof_submessage = 2;
    case kOneofSubmessage: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          *oneof_field_.oneof_submessage_);
      break;
    }
    // optional string oneof_string = 3;
    case kOneofString: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->oneof_string());
      break;
    }
    // optional bytes oneof_bytes = 4 [default = "default bytes"];
    case kOneofBytes: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->oneof_bytes());
      break;
    }
    // optional string oneof_string_cord = 5 [default = "default Cord", ctype = CORD];
    case kOneofStringCord: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->oneof_string_cord());
      break;
    }
    // optional bytes oneof_bytes_cord = 6 [ctype = CORD];
    case kOneofBytesCord: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->oneof_bytes_cord());
      break;
    }
    // optional string oneof_string_string_piece = 7 [ctype = STRING_PIECE];
    case kOneofStringStringPiece: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->oneof_string_string_piece());
      break;
    }
    // optional bytes oneof_bytes_string_piece = 8 [default = "default StringPiece", ctype = STRING_PIECE];
    case kOneofBytesStringPiece: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->oneof_bytes_string_piece());
      break;
    }
    // optional .protobuf_unittest.V2EnumLite oneof_enum = 9;
    case kOneofEnum: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->oneof_enum());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

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

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

  switch (from.oneof_field_case()) {
    case kOneofInt32: {
      set_oneof_int32(from.oneof_int32());
      break;
    }
    case kOneofSubmessage: {
      mutable_oneof_submessage()->::protobuf_unittest::TestAllTypesLite::MergeFrom(from.oneof_submessage());
      break;
    }
    case kOneofString: {
      set_oneof_string(from.oneof_string());
      break;
    }
    case kOneofBytes: {
      set_oneof_bytes(from.oneof_bytes());
      break;
    }
    case kOneofStringCord: {
      set_oneof_string_cord(from.oneof_string_cord());
      break;
    }
    case kOneofBytesCord: {
      set_oneof_bytes_cord(from.oneof_bytes_cord());
      break;
    }
    case kOneofStringStringPiece: {
      set_oneof_string_string_piece(from.oneof_string_string_piece());
      break;
    }
    case kOneofBytesStringPiece: {
      set_oneof_bytes_string_piece(from.oneof_bytes_string_piece());
      break;
    }
    case kOneofEnum: {
      set_oneof_enum(from.oneof_enum());
      break;
    }
    case ONEOF_FIELD_NOT_SET: {
      break;
    }
  }
}

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

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

void TestOneofParsingLite::Swap(TestOneofParsingLite* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TestOneofParsingLite::InternalSwap(TestOneofParsingLite* other) {
  using std::swap;
  swap(oneof_field_, other->oneof_field_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

PackedInt32::PackedInt32()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_PackedInt32.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.PackedInt32)
}
PackedInt32::PackedInt32(const PackedInt32& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_int32_(from.repeated_int32_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.PackedInt32)
}

void PackedInt32::SharedCtor() {
}

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

void PackedInt32::SharedDtor() {
}

void PackedInt32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const PackedInt32& PackedInt32::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_PackedInt32.base);
  return *internal_default_instance();
}


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

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

bool PackedInt32::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.PackedInt32)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16389u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated int32 repeated_int32 = 2048 [packed = true];
      case 2048: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 16386 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_repeated_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(0u /* 16384 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 3, 16386u, input, this->mutable_repeated_int32())));
        } 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.PackedInt32)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.PackedInt32)
  return false;
#undef DO_
}

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

  // repeated int32 repeated_int32 = 2048 [packed = true];
  if (this->repeated_int32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(2048, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _repeated_int32_cached_byte_size_));
  }
  for (int i = 0, n = this->repeated_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
      this->repeated_int32(i), output);
  }

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

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

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

  // repeated int32 repeated_int32 = 2048 [packed = true];
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->repeated_int32_);
    if (data_size > 0) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _repeated_int32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

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

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

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

  repeated_int32_.MergeFrom(from.repeated_int32_);
}

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

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

void PackedInt32::Swap(PackedInt32* other) {
  if (other == this) return;
  InternalSwap(other);
}
void PackedInt32::InternalSwap(PackedInt32* other) {
  using std::swap;
  repeated_int32_.InternalSwap(&other->repeated_int32_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

NonPackedInt32::NonPackedInt32()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_NonPackedInt32.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.NonPackedInt32)
}
NonPackedInt32::NonPackedInt32(const NonPackedInt32& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_int32_(from.repeated_int32_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.NonPackedInt32)
}

void NonPackedInt32::SharedCtor() {
}

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

void NonPackedInt32::SharedDtor() {
}

void NonPackedInt32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NonPackedInt32& NonPackedInt32::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_NonPackedInt32.base);
  return *internal_default_instance();
}


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

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

bool NonPackedInt32::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.NonPackedInt32)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16389u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated int32 repeated_int32 = 2048;
      case 2048: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(0u /* 16384 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 3, 16384u, input, this->mutable_repeated_int32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 16386 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_repeated_int32())));
        } 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.NonPackedInt32)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.NonPackedInt32)
  return false;
#undef DO_
}

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

  // repeated int32 repeated_int32 = 2048;
  for (int i = 0, n = this->repeated_int32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(
      2048, this->repeated_int32(i), output);
  }

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

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

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

  // repeated int32 repeated_int32 = 2048;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int32Size(this->repeated_int32_);
    total_size += 3 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_int32_size());
    total_size += data_size;
  }

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

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

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

  repeated_int32_.MergeFrom(from.repeated_int32_);
}

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

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

void NonPackedInt32::Swap(NonPackedInt32* other) {
  if (other == this) return;
  InternalSwap(other);
}
void NonPackedInt32::InternalSwap(NonPackedInt32* other) {
  using std::swap;
  repeated_int32_.InternalSwap(&other->repeated_int32_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

PackedFixed32::PackedFixed32()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_PackedFixed32.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.PackedFixed32)
}
PackedFixed32::PackedFixed32(const PackedFixed32& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_fixed32_(from.repeated_fixed32_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.PackedFixed32)
}

void PackedFixed32::SharedCtor() {
}

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

void PackedFixed32::SharedDtor() {
}

void PackedFixed32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const PackedFixed32& PackedFixed32::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_PackedFixed32.base);
  return *internal_default_instance();
}


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

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

bool PackedFixed32::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.PackedFixed32)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16389u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated fixed32 repeated_fixed32 = 2048 [packed = true];
      case 2048: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 16386 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, this->mutable_repeated_fixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(5u /* 16389 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 3, 16386u, input, this->mutable_repeated_fixed32())));
        } 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.PackedFixed32)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.PackedFixed32)
  return false;
#undef DO_
}

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

  // repeated fixed32 repeated_fixed32 = 2048 [packed = true];
  if (this->repeated_fixed32_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(2048, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _repeated_fixed32_cached_byte_size_));
    ::google::protobuf::internal::WireFormatLite::WriteFixed32Array(
      this->repeated_fixed32().data(), this->repeated_fixed32_size(), output);
  }

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

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

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

  // repeated fixed32 repeated_fixed32 = 2048 [packed = true];
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_fixed32_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _repeated_fixed32_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

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

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

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

  repeated_fixed32_.MergeFrom(from.repeated_fixed32_);
}

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

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

void PackedFixed32::Swap(PackedFixed32* other) {
  if (other == this) return;
  InternalSwap(other);
}
void PackedFixed32::InternalSwap(PackedFixed32* other) {
  using std::swap;
  repeated_fixed32_.InternalSwap(&other->repeated_fixed32_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


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

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

NonPackedFixed32::NonPackedFixed32()
  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_NonPackedFixed32.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:protobuf_unittest.NonPackedFixed32)
}
NonPackedFixed32::NonPackedFixed32(const NonPackedFixed32& from)
  : ::google::protobuf::MessageLite(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      repeated_fixed32_(from.repeated_fixed32_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:protobuf_unittest.NonPackedFixed32)
}

void NonPackedFixed32::SharedCtor() {
}

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

void NonPackedFixed32::SharedDtor() {
}

void NonPackedFixed32::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const NonPackedFixed32& NonPackedFixed32::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2funittest_5flite_2eproto::scc_info_NonPackedFixed32.base);
  return *internal_default_instance();
}


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

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

bool NonPackedFixed32::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.NonPackedFixed32)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16389u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated fixed32 repeated_fixed32 = 2048;
      case 2048: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(5u /* 16389 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 3, 16389u, input, this->mutable_repeated_fixed32())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(2u /* 16386 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_FIXED32>(
                 input, this->mutable_repeated_fixed32())));
        } 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.NonPackedFixed32)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:protobuf_unittest.NonPackedFixed32)
  return false;
#undef DO_
}

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

  // repeated fixed32 repeated_fixed32 = 2048;
  for (int i = 0, n = this->repeated_fixed32_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteFixed32(
      2048, this->repeated_fixed32(i), output);
  }

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

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

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

  // repeated fixed32 repeated_fixed32 = 2048;
  {
    unsigned int count = static_cast<unsigned int>(this->repeated_fixed32_size());
    size_t data_size = 4UL * count;
    total_size += 3 *
                  ::google::protobuf::internal::FromIntSize(this->repeated_fixed32_size());
    total_size += data_size;
  }

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

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

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

  repeated_fixed32_.MergeFrom(from.repeated_fixed32_);
}

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

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

void NonPackedFixed32::Swap(NonPackedFixed32* other) {
  if (other == this) return;
  InternalSwap(other);
}
void NonPackedFixed32::InternalSwap(NonPackedFixed32* other) {
  using std::swap;
  repeated_fixed32_.InternalSwap(&other->repeated_fixed32_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestNestedExtensionLite::kNestedExtensionFieldNumber;
#endif
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 5, false >
  TestNestedExtensionLite::nested_extension(kNestedExtensionFieldNumber, 0);
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite::kOptionalExtFieldNumber;
#endif
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestParsingMergeLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::TestAllTypesLite >, 11, false >
  TestParsingMergeLite::optional_ext(kOptionalExtFieldNumber, *::protobuf_unittest::TestAllTypesLite::internal_default_instance());
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TestParsingMergeLite::kRepeatedExtFieldNumber;
#endif
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestParsingMergeLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest::TestAllTypesLite >, 11, false >
  TestParsingMergeLite::repeated_ext(kRepeatedExtFieldNumber, *::protobuf_unittest::TestAllTypesLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 5, false >
  optional_int32_extension_lite(kOptionalInt32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 3, false >
  optional_int64_extension_lite(kOptionalInt64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 13, false >
  optional_uint32_extension_lite(kOptionalUint32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint64 >, 4, false >
  optional_uint64_extension_lite(kOptionalUint64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 17, false >
  optional_sint32_extension_lite(kOptionalSint32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 18, false >
  optional_sint64_extension_lite(kOptionalSint64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 7, false >
  optional_fixed32_extension_lite(kOptionalFixed32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint64 >, 6, false >
  optional_fixed64_extension_lite(kOptionalFixed64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 15, false >
  optional_sfixed32_extension_lite(kOptionalSfixed32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 16, false >
  optional_sfixed64_extension_lite(kOptionalSfixed64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< float >, 2, false >
  optional_float_extension_lite(kOptionalFloatExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< double >, 1, false >
  optional_double_extension_lite(kOptionalDoubleExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< bool >, 8, false >
  optional_bool_extension_lite(kOptionalBoolExtensionLiteFieldNumber, false);
const ::std::string optional_string_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  optional_string_extension_lite(kOptionalStringExtensionLiteFieldNumber, optional_string_extension_lite_default);
const ::std::string optional_bytes_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 12, false >
  optional_bytes_extension_lite(kOptionalBytesExtensionLiteFieldNumber, optional_bytes_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::OptionalGroup_extension_lite >, 10, false >
  optionalgroup_extension_lite(kOptionalgroupExtensionLiteFieldNumber, *::protobuf_unittest::OptionalGroup_extension_lite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedMessage >, 11, false >
  optional_nested_message_extension_lite(kOptionalNestedMessageExtensionLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::ForeignMessageLite >, 11, false >
  optional_foreign_message_extension_lite(kOptionalForeignMessageExtensionLiteFieldNumber, *::protobuf_unittest::ForeignMessageLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest_import::ImportMessageLite >, 11, false >
  optional_import_message_extension_lite(kOptionalImportMessageExtensionLiteFieldNumber, *::protobuf_unittest_import::ImportMessageLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedEnum, ::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid>, 14, false >
  optional_nested_enum_extension_lite(kOptionalNestedEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(1));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest::ForeignEnumLite, ::protobuf_unittest::ForeignEnumLite_IsValid>, 14, false >
  optional_foreign_enum_extension_lite(kOptionalForeignEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::ForeignEnumLite >(4));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest_import::ImportEnumLite, ::protobuf_unittest_import::ImportEnumLite_IsValid>, 14, false >
  optional_import_enum_extension_lite(kOptionalImportEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest_import::ImportEnumLite >(7));
const ::std::string optional_string_piece_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  optional_string_piece_extension_lite(kOptionalStringPieceExtensionLiteFieldNumber, optional_string_piece_extension_lite_default);
const ::std::string optional_cord_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  optional_cord_extension_lite(kOptionalCordExtensionLiteFieldNumber, optional_cord_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest_import::PublicImportMessageLite >, 11, false >
  optional_public_import_message_extension_lite(kOptionalPublicImportMessageExtensionLiteFieldNumber, *::protobuf_unittest_import::PublicImportMessageLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedMessage >, 11, false >
  optional_lazy_message_extension_lite(kOptionalLazyMessageExtensionLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 5, false >
  repeated_int32_extension_lite(kRepeatedInt32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 3, false >
  repeated_int64_extension_lite(kRepeatedInt64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint32 >, 13, false >
  repeated_uint32_extension_lite(kRepeatedUint32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint64 >, 4, false >
  repeated_uint64_extension_lite(kRepeatedUint64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 17, false >
  repeated_sint32_extension_lite(kRepeatedSint32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 18, false >
  repeated_sint64_extension_lite(kRepeatedSint64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint32 >, 7, false >
  repeated_fixed32_extension_lite(kRepeatedFixed32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint64 >, 6, false >
  repeated_fixed64_extension_lite(kRepeatedFixed64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 15, false >
  repeated_sfixed32_extension_lite(kRepeatedSfixed32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 16, false >
  repeated_sfixed64_extension_lite(kRepeatedSfixed64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< float >, 2, false >
  repeated_float_extension_lite(kRepeatedFloatExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< double >, 1, false >
  repeated_double_extension_lite(kRepeatedDoubleExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< bool >, 8, false >
  repeated_bool_extension_lite(kRepeatedBoolExtensionLiteFieldNumber, false);
const ::std::string repeated_string_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedStringTypeTraits, 9, false >
  repeated_string_extension_lite(kRepeatedStringExtensionLiteFieldNumber, repeated_string_extension_lite_default);
const ::std::string repeated_bytes_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedStringTypeTraits, 12, false >
  repeated_bytes_extension_lite(kRepeatedBytesExtensionLiteFieldNumber, repeated_bytes_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest::RepeatedGroup_extension_lite >, 10, false >
  repeatedgroup_extension_lite(kRepeatedgroupExtensionLiteFieldNumber, *::protobuf_unittest::RepeatedGroup_extension_lite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedMessage >, 11, false >
  repeated_nested_message_extension_lite(kRepeatedNestedMessageExtensionLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest::ForeignMessageLite >, 11, false >
  repeated_foreign_message_extension_lite(kRepeatedForeignMessageExtensionLiteFieldNumber, *::protobuf_unittest::ForeignMessageLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest_import::ImportMessageLite >, 11, false >
  repeated_import_message_extension_lite(kRepeatedImportMessageExtensionLiteFieldNumber, *::protobuf_unittest_import::ImportMessageLite::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedEnumTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedEnum, ::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid>, 14, false >
  repeated_nested_enum_extension_lite(kRepeatedNestedEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(1));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedEnumTypeTraits< ::protobuf_unittest::ForeignEnumLite, ::protobuf_unittest::ForeignEnumLite_IsValid>, 14, false >
  repeated_foreign_enum_extension_lite(kRepeatedForeignEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::ForeignEnumLite >(4));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedEnumTypeTraits< ::protobuf_unittest_import::ImportEnumLite, ::protobuf_unittest_import::ImportEnumLite_IsValid>, 14, false >
  repeated_import_enum_extension_lite(kRepeatedImportEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest_import::ImportEnumLite >(7));
const ::std::string repeated_string_piece_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedStringTypeTraits, 9, false >
  repeated_string_piece_extension_lite(kRepeatedStringPieceExtensionLiteFieldNumber, repeated_string_piece_extension_lite_default);
const ::std::string repeated_cord_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedStringTypeTraits, 9, false >
  repeated_cord_extension_lite(kRepeatedCordExtensionLiteFieldNumber, repeated_cord_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::RepeatedMessageTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedMessage >, 11, false >
  repeated_lazy_message_extension_lite(kRepeatedLazyMessageExtensionLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 5, false >
  default_int32_extension_lite(kDefaultInt32ExtensionLiteFieldNumber, 41);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 3, false >
  default_int64_extension_lite(kDefaultInt64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(42));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 13, false >
  default_uint32_extension_lite(kDefaultUint32ExtensionLiteFieldNumber, 43u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint64 >, 4, false >
  default_uint64_extension_lite(kDefaultUint64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(44));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 17, false >
  default_sint32_extension_lite(kDefaultSint32ExtensionLiteFieldNumber, -45);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 18, false >
  default_sint64_extension_lite(kDefaultSint64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(46));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 7, false >
  default_fixed32_extension_lite(kDefaultFixed32ExtensionLiteFieldNumber, 47u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint64 >, 6, false >
  default_fixed64_extension_lite(kDefaultFixed64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(48));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int32 >, 15, false >
  default_sfixed32_extension_lite(kDefaultSfixed32ExtensionLiteFieldNumber, 49);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::int64 >, 16, false >
  default_sfixed64_extension_lite(kDefaultSfixed64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(-50));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< float >, 2, false >
  default_float_extension_lite(kDefaultFloatExtensionLiteFieldNumber, 51.5f);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< double >, 1, false >
  default_double_extension_lite(kDefaultDoubleExtensionLiteFieldNumber, 52000);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< bool >, 8, false >
  default_bool_extension_lite(kDefaultBoolExtensionLiteFieldNumber, true);
const ::std::string default_string_extension_lite_default("hello");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  default_string_extension_lite(kDefaultStringExtensionLiteFieldNumber, default_string_extension_lite_default);
const ::std::string default_bytes_extension_lite_default("world");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 12, false >
  default_bytes_extension_lite(kDefaultBytesExtensionLiteFieldNumber, default_bytes_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedEnum, ::protobuf_unittest::TestAllTypesLite_NestedEnum_IsValid>, 14, false >
  default_nested_enum_extension_lite(kDefaultNestedEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::TestAllTypesLite_NestedEnum >(2));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest::ForeignEnumLite, ::protobuf_unittest::ForeignEnumLite_IsValid>, 14, false >
  default_foreign_enum_extension_lite(kDefaultForeignEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::ForeignEnumLite >(5));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::EnumTypeTraits< ::protobuf_unittest_import::ImportEnumLite, ::protobuf_unittest_import::ImportEnumLite_IsValid>, 14, false >
  default_import_enum_extension_lite(kDefaultImportEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest_import::ImportEnumLite >(8));
const ::std::string default_string_piece_extension_lite_default("abc");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  default_string_piece_extension_lite(kDefaultStringPieceExtensionLiteFieldNumber, default_string_piece_extension_lite_default);
const ::std::string default_cord_extension_lite_default("123");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  default_cord_extension_lite(kDefaultCordExtensionLiteFieldNumber, default_cord_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::PrimitiveTypeTraits< ::google::protobuf::uint32 >, 13, false >
  oneof_uint32_extension_lite(kOneofUint32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::TestAllTypesLite_NestedMessage >, 11, false >
  oneof_nested_message_extension_lite(kOneofNestedMessageExtensionLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite_NestedMessage::internal_default_instance());
const ::std::string oneof_string_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 9, false >
  oneof_string_extension_lite(kOneofStringExtensionLiteFieldNumber, oneof_string_extension_lite_default);
const ::std::string oneof_bytes_extension_lite_default("");
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestAllExtensionsLite,
    ::google::protobuf::internal::StringTypeTraits, 12, false >
  oneof_bytes_extension_lite(kOneofBytesExtensionLiteFieldNumber, oneof_bytes_extension_lite_default);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 5, true >
  packed_int32_extension_lite(kPackedInt32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 3, true >
  packed_int64_extension_lite(kPackedInt64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint32 >, 13, true >
  packed_uint32_extension_lite(kPackedUint32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint64 >, 4, true >
  packed_uint64_extension_lite(kPackedUint64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 17, true >
  packed_sint32_extension_lite(kPackedSint32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 18, true >
  packed_sint64_extension_lite(kPackedSint64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint32 >, 7, true >
  packed_fixed32_extension_lite(kPackedFixed32ExtensionLiteFieldNumber, 0u);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::uint64 >, 6, true >
  packed_fixed64_extension_lite(kPackedFixed64ExtensionLiteFieldNumber, GOOGLE_ULONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int32 >, 15, true >
  packed_sfixed32_extension_lite(kPackedSfixed32ExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< ::google::protobuf::int64 >, 16, true >
  packed_sfixed64_extension_lite(kPackedSfixed64ExtensionLiteFieldNumber, GOOGLE_LONGLONG(0));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< float >, 2, true >
  packed_float_extension_lite(kPackedFloatExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< double >, 1, true >
  packed_double_extension_lite(kPackedDoubleExtensionLiteFieldNumber, 0);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedPrimitiveTypeTraits< bool >, 8, true >
  packed_bool_extension_lite(kPackedBoolExtensionLiteFieldNumber, false);
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestPackedExtensionsLite,
    ::google::protobuf::internal::RepeatedEnumTypeTraits< ::protobuf_unittest::ForeignEnumLite, ::protobuf_unittest::ForeignEnumLite_IsValid>, 14, true >
  packed_enum_extension_lite(kPackedEnumExtensionLiteFieldNumber, static_cast< ::protobuf_unittest::ForeignEnumLite >(4));
::google::protobuf::internal::ExtensionIdentifier< ::protobuf_unittest::TestHugeFieldNumbersLite,
    ::google::protobuf::internal::MessageTypeTraits< ::protobuf_unittest::TestAllTypesLite >, 11, false >
  test_all_types_lite(kTestAllTypesLiteFieldNumber, *::protobuf_unittest::TestAllTypesLite::internal_default_instance());

// @@protoc_insertion_point(namespace_scope)
}  // namespace protobuf_unittest
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestAllTypesLite_NestedMessage* Arena::CreateMaybeMessage< ::protobuf_unittest::TestAllTypesLite_NestedMessage >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestAllTypesLite_NestedMessage >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestAllTypesLite_OptionalGroup* Arena::CreateMaybeMessage< ::protobuf_unittest::TestAllTypesLite_OptionalGroup >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestAllTypesLite_OptionalGroup >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestAllTypesLite_RepeatedGroup* Arena::CreateMaybeMessage< ::protobuf_unittest::TestAllTypesLite_RepeatedGroup >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestAllTypesLite_RepeatedGroup >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestAllTypesLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestAllTypesLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestAllTypesLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::ForeignMessageLite* Arena::CreateMaybeMessage< ::protobuf_unittest::ForeignMessageLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::ForeignMessageLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestPackedTypesLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestPackedTypesLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestPackedTypesLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestAllExtensionsLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestAllExtensionsLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestAllExtensionsLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::OptionalGroup_extension_lite* Arena::CreateMaybeMessage< ::protobuf_unittest::OptionalGroup_extension_lite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::OptionalGroup_extension_lite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::RepeatedGroup_extension_lite* Arena::CreateMaybeMessage< ::protobuf_unittest::RepeatedGroup_extension_lite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::RepeatedGroup_extension_lite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestPackedExtensionsLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestPackedExtensionsLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestPackedExtensionsLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestNestedExtensionLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestNestedExtensionLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestNestedExtensionLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestDeprecatedLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestDeprecatedLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestDeprecatedLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group1* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group1 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group1 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group2* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group2 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator_Group2 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite_RepeatedFieldsGenerator >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite_OptionalGroup* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite_OptionalGroup >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite_OptionalGroup >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite_RepeatedGroup* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite_RepeatedGroup >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite_RepeatedGroup >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestParsingMergeLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestParsingMergeLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestParsingMergeLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEmptyMessageLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEmptyMessageLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestEmptyMessageLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestEmptyMessageWithExtensionsLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestEmptyMessageWithExtensionsLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestEmptyMessageWithExtensionsLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::V1MessageLite* Arena::CreateMaybeMessage< ::protobuf_unittest::V1MessageLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::V1MessageLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::V2MessageLite* Arena::CreateMaybeMessage< ::protobuf_unittest::V2MessageLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::V2MessageLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup* Arena::CreateMaybeMessage< ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestHugeFieldNumbersLite_OptionalGroup >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse* Arena::CreateMaybeMessage< ::protobuf_unittest::TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestHugeFieldNumbersLite_StringStringMapEntry_DoNotUse >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestHugeFieldNumbersLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestHugeFieldNumbersLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestHugeFieldNumbersLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::TestOneofParsingLite* Arena::CreateMaybeMessage< ::protobuf_unittest::TestOneofParsingLite >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::TestOneofParsingLite >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::PackedInt32* Arena::CreateMaybeMessage< ::protobuf_unittest::PackedInt32 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::PackedInt32 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::NonPackedInt32* Arena::CreateMaybeMessage< ::protobuf_unittest::NonPackedInt32 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::NonPackedInt32 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::PackedFixed32* Arena::CreateMaybeMessage< ::protobuf_unittest::PackedFixed32 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::PackedFixed32 >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::protobuf_unittest::NonPackedFixed32* Arena::CreateMaybeMessage< ::protobuf_unittest::NonPackedFixed32 >(Arena* arena) {
  return Arena::CreateInternal< ::protobuf_unittest::NonPackedFixed32 >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
