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

#ifndef PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto
#define PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 3006001
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 3006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.h>
#include <google/protobuf/metadata.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/map.h>  // IWYU pragma: export
#include <google/protobuf/map_entry.h>
#include <google/protobuf/map_field_inl.h>
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include <google/protobuf/duration.pb.h>
#include <google/protobuf/timestamp.pb.h>
#include <google/protobuf/wrappers.pb.h>
#include <google/protobuf/struct.pb.h>
#include <google/protobuf/any.pb.h>
#include <google/protobuf/field_mask.pb.h>
#include <google/protobuf/unittest.pb.h>
// @@protoc_insertion_point(includes)
#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto 

namespace protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto {
// Internal implementation detail -- do not use these members.
struct TableStruct {
  static const ::google::protobuf::internal::ParseTableField entries[];
  static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
  static const ::google::protobuf::internal::ParseTable schema[31];
  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
  static const ::google::protobuf::internal::SerializationTable serialization_table[];
  static const ::google::protobuf::uint32 offsets[];
};
void AddDescriptors();
}  // namespace protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto
namespace proto3 {
class MessageType;
class MessageTypeDefaultTypeInternal;
extern MessageTypeDefaultTypeInternal _MessageType_default_instance_;
class TestAny;
class TestAnyDefaultTypeInternal;
extern TestAnyDefaultTypeInternal _TestAny_default_instance_;
class TestBoolValue;
class TestBoolValueDefaultTypeInternal;
extern TestBoolValueDefaultTypeInternal _TestBoolValue_default_instance_;
class TestBoolValue_BoolMapEntry_DoNotUse;
class TestBoolValue_BoolMapEntry_DoNotUseDefaultTypeInternal;
extern TestBoolValue_BoolMapEntry_DoNotUseDefaultTypeInternal _TestBoolValue_BoolMapEntry_DoNotUse_default_instance_;
class TestCustomJsonName;
class TestCustomJsonNameDefaultTypeInternal;
extern TestCustomJsonNameDefaultTypeInternal _TestCustomJsonName_default_instance_;
class TestDuration;
class TestDurationDefaultTypeInternal;
extern TestDurationDefaultTypeInternal _TestDuration_default_instance_;
class TestEnumValue;
class TestEnumValueDefaultTypeInternal;
extern TestEnumValueDefaultTypeInternal _TestEnumValue_default_instance_;
class TestExtensions;
class TestExtensionsDefaultTypeInternal;
extern TestExtensionsDefaultTypeInternal _TestExtensions_default_instance_;
class TestFieldMask;
class TestFieldMaskDefaultTypeInternal;
extern TestFieldMaskDefaultTypeInternal _TestFieldMask_default_instance_;
class TestListValue;
class TestListValueDefaultTypeInternal;
extern TestListValueDefaultTypeInternal _TestListValue_default_instance_;
class TestMap;
class TestMapDefaultTypeInternal;
extern TestMapDefaultTypeInternal _TestMap_default_instance_;
class TestMap_BoolMapEntry_DoNotUse;
class TestMap_BoolMapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_BoolMapEntry_DoNotUseDefaultTypeInternal _TestMap_BoolMapEntry_DoNotUse_default_instance_;
class TestMap_Int32MapEntry_DoNotUse;
class TestMap_Int32MapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_Int32MapEntry_DoNotUseDefaultTypeInternal _TestMap_Int32MapEntry_DoNotUse_default_instance_;
class TestMap_Int64MapEntry_DoNotUse;
class TestMap_Int64MapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_Int64MapEntry_DoNotUseDefaultTypeInternal _TestMap_Int64MapEntry_DoNotUse_default_instance_;
class TestMap_StringMapEntry_DoNotUse;
class TestMap_StringMapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_StringMapEntry_DoNotUseDefaultTypeInternal _TestMap_StringMapEntry_DoNotUse_default_instance_;
class TestMap_Uint32MapEntry_DoNotUse;
class TestMap_Uint32MapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_Uint32MapEntry_DoNotUseDefaultTypeInternal _TestMap_Uint32MapEntry_DoNotUse_default_instance_;
class TestMap_Uint64MapEntry_DoNotUse;
class TestMap_Uint64MapEntry_DoNotUseDefaultTypeInternal;
extern TestMap_Uint64MapEntry_DoNotUseDefaultTypeInternal _TestMap_Uint64MapEntry_DoNotUse_default_instance_;
class TestMessage;
class TestMessageDefaultTypeInternal;
extern TestMessageDefaultTypeInternal _TestMessage_default_instance_;
class TestNestedMap;
class TestNestedMapDefaultTypeInternal;
extern TestNestedMapDefaultTypeInternal _TestNestedMap_default_instance_;
class TestNestedMap_BoolMapEntry_DoNotUse;
class TestNestedMap_BoolMapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_BoolMapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_BoolMapEntry_DoNotUse_default_instance_;
class TestNestedMap_Int32MapEntry_DoNotUse;
class TestNestedMap_Int32MapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_Int32MapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_Int32MapEntry_DoNotUse_default_instance_;
class TestNestedMap_Int64MapEntry_DoNotUse;
class TestNestedMap_Int64MapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_Int64MapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_Int64MapEntry_DoNotUse_default_instance_;
class TestNestedMap_MapMapEntry_DoNotUse;
class TestNestedMap_MapMapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_MapMapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_MapMapEntry_DoNotUse_default_instance_;
class TestNestedMap_StringMapEntry_DoNotUse;
class TestNestedMap_StringMapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_StringMapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_StringMapEntry_DoNotUse_default_instance_;
class TestNestedMap_Uint32MapEntry_DoNotUse;
class TestNestedMap_Uint32MapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_Uint32MapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_Uint32MapEntry_DoNotUse_default_instance_;
class TestNestedMap_Uint64MapEntry_DoNotUse;
class TestNestedMap_Uint64MapEntry_DoNotUseDefaultTypeInternal;
extern TestNestedMap_Uint64MapEntry_DoNotUseDefaultTypeInternal _TestNestedMap_Uint64MapEntry_DoNotUse_default_instance_;
class TestOneof;
class TestOneofDefaultTypeInternal;
extern TestOneofDefaultTypeInternal _TestOneof_default_instance_;
class TestStruct;
class TestStructDefaultTypeInternal;
extern TestStructDefaultTypeInternal _TestStruct_default_instance_;
class TestTimestamp;
class TestTimestampDefaultTypeInternal;
extern TestTimestampDefaultTypeInternal _TestTimestamp_default_instance_;
class TestValue;
class TestValueDefaultTypeInternal;
extern TestValueDefaultTypeInternal _TestValue_default_instance_;
class TestWrapper;
class TestWrapperDefaultTypeInternal;
extern TestWrapperDefaultTypeInternal _TestWrapper_default_instance_;
}  // namespace proto3
namespace google {
namespace protobuf {
template<> ::proto3::MessageType* Arena::CreateMaybeMessage<::proto3::MessageType>(Arena*);
template<> ::proto3::TestAny* Arena::CreateMaybeMessage<::proto3::TestAny>(Arena*);
template<> ::proto3::TestBoolValue* Arena::CreateMaybeMessage<::proto3::TestBoolValue>(Arena*);
template<> ::proto3::TestBoolValue_BoolMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestBoolValue_BoolMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestCustomJsonName* Arena::CreateMaybeMessage<::proto3::TestCustomJsonName>(Arena*);
template<> ::proto3::TestDuration* Arena::CreateMaybeMessage<::proto3::TestDuration>(Arena*);
template<> ::proto3::TestEnumValue* Arena::CreateMaybeMessage<::proto3::TestEnumValue>(Arena*);
template<> ::proto3::TestExtensions* Arena::CreateMaybeMessage<::proto3::TestExtensions>(Arena*);
template<> ::proto3::TestFieldMask* Arena::CreateMaybeMessage<::proto3::TestFieldMask>(Arena*);
template<> ::proto3::TestListValue* Arena::CreateMaybeMessage<::proto3::TestListValue>(Arena*);
template<> ::proto3::TestMap* Arena::CreateMaybeMessage<::proto3::TestMap>(Arena*);
template<> ::proto3::TestMap_BoolMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_BoolMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMap_Int32MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_Int32MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMap_Int64MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_Int64MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMap_StringMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_StringMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMap_Uint32MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_Uint32MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMap_Uint64MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestMap_Uint64MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestMessage* Arena::CreateMaybeMessage<::proto3::TestMessage>(Arena*);
template<> ::proto3::TestNestedMap* Arena::CreateMaybeMessage<::proto3::TestNestedMap>(Arena*);
template<> ::proto3::TestNestedMap_BoolMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_BoolMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_Int32MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_Int32MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_Int64MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_Int64MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_MapMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_MapMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_StringMapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_StringMapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_Uint32MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_Uint32MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestNestedMap_Uint64MapEntry_DoNotUse* Arena::CreateMaybeMessage<::proto3::TestNestedMap_Uint64MapEntry_DoNotUse>(Arena*);
template<> ::proto3::TestOneof* Arena::CreateMaybeMessage<::proto3::TestOneof>(Arena*);
template<> ::proto3::TestStruct* Arena::CreateMaybeMessage<::proto3::TestStruct>(Arena*);
template<> ::proto3::TestTimestamp* Arena::CreateMaybeMessage<::proto3::TestTimestamp>(Arena*);
template<> ::proto3::TestValue* Arena::CreateMaybeMessage<::proto3::TestValue>(Arena*);
template<> ::proto3::TestWrapper* Arena::CreateMaybeMessage<::proto3::TestWrapper>(Arena*);
}  // namespace protobuf
}  // namespace google
namespace proto3 {

enum EnumType {
  FOO = 0,
  BAR = 1,
  EnumType_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
  EnumType_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
};
bool EnumType_IsValid(int value);
const EnumType EnumType_MIN = FOO;
const EnumType EnumType_MAX = BAR;
const int EnumType_ARRAYSIZE = EnumType_MAX + 1;

const ::google::protobuf::EnumDescriptor* EnumType_descriptor();
inline const ::std::string& EnumType_Name(EnumType value) {
  return ::google::protobuf::internal::NameOfEnum(
    EnumType_descriptor(), value);
}
inline bool EnumType_Parse(
    const ::std::string& name, EnumType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<EnumType>(
    EnumType_descriptor(), name, value);
}
// ===================================================================

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

  MessageType(const MessageType& from);

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

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

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

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

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

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

  MessageType* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<MessageType>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const MessageType& from);
  void MergeFrom(const MessageType& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(MessageType* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // int32 value = 1;
  void clear_value();
  static const int kValueFieldNumber = 1;
  ::google::protobuf::int32 value() const;
  void set_value(::google::protobuf::int32 value);

  // @@protoc_insertion_point(class_scope:proto3.MessageType)
 private:

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

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

  TestMessage(const TestMessage& from);

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

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

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

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

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

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

  TestMessage* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestMessage>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestMessage& from);
  void MergeFrom(const TestMessage& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestMessage* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated bool repeated_bool_value = 21;
  int repeated_bool_value_size() const;
  void clear_repeated_bool_value();
  static const int kRepeatedBoolValueFieldNumber = 21;
  bool repeated_bool_value(int index) const;
  void set_repeated_bool_value(int index, bool value);
  void add_repeated_bool_value(bool value);
  const ::google::protobuf::RepeatedField< bool >&
      repeated_bool_value() const;
  ::google::protobuf::RepeatedField< bool >*
      mutable_repeated_bool_value();

  // repeated int32 repeated_int32_value = 22;
  int repeated_int32_value_size() const;
  void clear_repeated_int32_value();
  static const int kRepeatedInt32ValueFieldNumber = 22;
  ::google::protobuf::int32 repeated_int32_value(int index) const;
  void set_repeated_int32_value(int index, ::google::protobuf::int32 value);
  void add_repeated_int32_value(::google::protobuf::int32 value);
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      repeated_int32_value() const;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_repeated_int32_value();

  // repeated int64 repeated_int64_value = 23;
  int repeated_int64_value_size() const;
  void clear_repeated_int64_value();
  static const int kRepeatedInt64ValueFieldNumber = 23;
  ::google::protobuf::int64 repeated_int64_value(int index) const;
  void set_repeated_int64_value(int index, ::google::protobuf::int64 value);
  void add_repeated_int64_value(::google::protobuf::int64 value);
  const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      repeated_int64_value() const;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_repeated_int64_value();

  // repeated uint32 repeated_uint32_value = 24;
  int repeated_uint32_value_size() const;
  void clear_repeated_uint32_value();
  static const int kRepeatedUint32ValueFieldNumber = 24;
  ::google::protobuf::uint32 repeated_uint32_value(int index) const;
  void set_repeated_uint32_value(int index, ::google::protobuf::uint32 value);
  void add_repeated_uint32_value(::google::protobuf::uint32 value);
  const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      repeated_uint32_value() const;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_repeated_uint32_value();

  // repeated uint64 repeated_uint64_value = 25;
  int repeated_uint64_value_size() const;
  void clear_repeated_uint64_value();
  static const int kRepeatedUint64ValueFieldNumber = 25;
  ::google::protobuf::uint64 repeated_uint64_value(int index) const;
  void set_repeated_uint64_value(int index, ::google::protobuf::uint64 value);
  void add_repeated_uint64_value(::google::protobuf::uint64 value);
  const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
      repeated_uint64_value() const;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
      mutable_repeated_uint64_value();

  // repeated float repeated_float_value = 26;
  int repeated_float_value_size() const;
  void clear_repeated_float_value();
  static const int kRepeatedFloatValueFieldNumber = 26;
  float repeated_float_value(int index) const;
  void set_repeated_float_value(int index, float value);
  void add_repeated_float_value(float value);
  const ::google::protobuf::RepeatedField< float >&
      repeated_float_value() const;
  ::google::protobuf::RepeatedField< float >*
      mutable_repeated_float_value();

  // repeated double repeated_double_value = 27;
  int repeated_double_value_size() const;
  void clear_repeated_double_value();
  static const int kRepeatedDoubleValueFieldNumber = 27;
  double repeated_double_value(int index) const;
  void set_repeated_double_value(int index, double value);
  void add_repeated_double_value(double value);
  const ::google::protobuf::RepeatedField< double >&
      repeated_double_value() const;
  ::google::protobuf::RepeatedField< double >*
      mutable_repeated_double_value();

  // repeated string repeated_string_value = 28;
  int repeated_string_value_size() const;
  void clear_repeated_string_value();
  static const int kRepeatedStringValueFieldNumber = 28;
  const ::std::string& repeated_string_value(int index) const;
  ::std::string* mutable_repeated_string_value(int index);
  void set_repeated_string_value(int index, const ::std::string& value);
  #if LANG_CXX11
  void set_repeated_string_value(int index, ::std::string&& value);
  #endif
  void set_repeated_string_value(int index, const char* value);
  void set_repeated_string_value(int index, const char* value, size_t size);
  ::std::string* add_repeated_string_value();
  void add_repeated_string_value(const ::std::string& value);
  #if LANG_CXX11
  void add_repeated_string_value(::std::string&& value);
  #endif
  void add_repeated_string_value(const char* value);
  void add_repeated_string_value(const char* value, size_t size);
  const ::google::protobuf::RepeatedPtrField< ::std::string>& repeated_string_value() const;
  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_repeated_string_value();

  // repeated bytes repeated_bytes_value = 29;
  int repeated_bytes_value_size() const;
  void clear_repeated_bytes_value();
  static const int kRepeatedBytesValueFieldNumber = 29;
  const ::std::string& repeated_bytes_value(int index) const;
  ::std::string* mutable_repeated_bytes_value(int index);
  void set_repeated_bytes_value(int index, const ::std::string& value);
  #if LANG_CXX11
  void set_repeated_bytes_value(int index, ::std::string&& value);
  #endif
  void set_repeated_bytes_value(int index, const char* value);
  void set_repeated_bytes_value(int index, const void* value, size_t size);
  ::std::string* add_repeated_bytes_value();
  void add_repeated_bytes_value(const ::std::string& value);
  #if LANG_CXX11
  void add_repeated_bytes_value(::std::string&& value);
  #endif
  void add_repeated_bytes_value(const char* value);
  void add_repeated_bytes_value(const void* value, size_t size);
  const ::google::protobuf::RepeatedPtrField< ::std::string>& repeated_bytes_value() const;
  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_repeated_bytes_value();

  // repeated .proto3.EnumType repeated_enum_value = 30;
  int repeated_enum_value_size() const;
  void clear_repeated_enum_value();
  static const int kRepeatedEnumValueFieldNumber = 30;
  ::proto3::EnumType repeated_enum_value(int index) const;
  void set_repeated_enum_value(int index, ::proto3::EnumType value);
  void add_repeated_enum_value(::proto3::EnumType value);
  const ::google::protobuf::RepeatedField<int>& repeated_enum_value() const;
  ::google::protobuf::RepeatedField<int>* mutable_repeated_enum_value();

  // repeated .proto3.MessageType repeated_message_value = 31;
  int repeated_message_value_size() const;
  void clear_repeated_message_value();
  static const int kRepeatedMessageValueFieldNumber = 31;
  ::proto3::MessageType* mutable_repeated_message_value(int index);
  ::google::protobuf::RepeatedPtrField< ::proto3::MessageType >*
      mutable_repeated_message_value();
  const ::proto3::MessageType& repeated_message_value(int index) const;
  ::proto3::MessageType* add_repeated_message_value();
  const ::google::protobuf::RepeatedPtrField< ::proto3::MessageType >&
      repeated_message_value() const;

  // string string_value = 8;
  void clear_string_value();
  static const int kStringValueFieldNumber = 8;
  const ::std::string& string_value() const;
  void set_string_value(const ::std::string& value);
  #if LANG_CXX11
  void set_string_value(::std::string&& value);
  #endif
  void set_string_value(const char* value);
  void set_string_value(const char* value, size_t size);
  ::std::string* mutable_string_value();
  ::std::string* release_string_value();
  void set_allocated_string_value(::std::string* string_value);

  // bytes bytes_value = 9;
  void clear_bytes_value();
  static const int kBytesValueFieldNumber = 9;
  const ::std::string& bytes_value() const;
  void set_bytes_value(const ::std::string& value);
  #if LANG_CXX11
  void set_bytes_value(::std::string&& value);
  #endif
  void set_bytes_value(const char* value);
  void set_bytes_value(const void* value, size_t size);
  ::std::string* mutable_bytes_value();
  ::std::string* release_bytes_value();
  void set_allocated_bytes_value(::std::string* bytes_value);

  // .proto3.MessageType message_value = 11;
  bool has_message_value() const;
  void clear_message_value();
  static const int kMessageValueFieldNumber = 11;
  private:
  const ::proto3::MessageType& _internal_message_value() const;
  public:
  const ::proto3::MessageType& message_value() const;
  ::proto3::MessageType* release_message_value();
  ::proto3::MessageType* mutable_message_value();
  void set_allocated_message_value(::proto3::MessageType* message_value);

  // bool bool_value = 1;
  void clear_bool_value();
  static const int kBoolValueFieldNumber = 1;
  bool bool_value() const;
  void set_bool_value(bool value);

  // int32 int32_value = 2;
  void clear_int32_value();
  static const int kInt32ValueFieldNumber = 2;
  ::google::protobuf::int32 int32_value() const;
  void set_int32_value(::google::protobuf::int32 value);

  // int64 int64_value = 3;
  void clear_int64_value();
  static const int kInt64ValueFieldNumber = 3;
  ::google::protobuf::int64 int64_value() const;
  void set_int64_value(::google::protobuf::int64 value);

  // uint64 uint64_value = 5;
  void clear_uint64_value();
  static const int kUint64ValueFieldNumber = 5;
  ::google::protobuf::uint64 uint64_value() const;
  void set_uint64_value(::google::protobuf::uint64 value);

  // uint32 uint32_value = 4;
  void clear_uint32_value();
  static const int kUint32ValueFieldNumber = 4;
  ::google::protobuf::uint32 uint32_value() const;
  void set_uint32_value(::google::protobuf::uint32 value);

  // float float_value = 6;
  void clear_float_value();
  static const int kFloatValueFieldNumber = 6;
  float float_value() const;
  void set_float_value(float value);

  // double double_value = 7;
  void clear_double_value();
  static const int kDoubleValueFieldNumber = 7;
  double double_value() const;
  void set_double_value(double value);

  // .proto3.EnumType enum_value = 10;
  void clear_enum_value();
  static const int kEnumValueFieldNumber = 10;
  ::proto3::EnumType enum_value() const;
  void set_enum_value(::proto3::EnumType value);

  // @@protoc_insertion_point(class_scope:proto3.TestMessage)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedField< bool > repeated_bool_value_;
  mutable int _repeated_bool_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > repeated_int32_value_;
  mutable int _repeated_int32_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > repeated_int64_value_;
  mutable int _repeated_int64_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > repeated_uint32_value_;
  mutable int _repeated_uint32_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint64 > repeated_uint64_value_;
  mutable int _repeated_uint64_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< float > repeated_float_value_;
  mutable int _repeated_float_value_cached_byte_size_;
  ::google::protobuf::RepeatedField< double > repeated_double_value_;
  mutable int _repeated_double_value_cached_byte_size_;
  ::google::protobuf::RepeatedPtrField< ::std::string> repeated_string_value_;
  ::google::protobuf::RepeatedPtrField< ::std::string> repeated_bytes_value_;
  ::google::protobuf::RepeatedField<int> repeated_enum_value_;
  mutable int _repeated_enum_value_cached_byte_size_;
  ::google::protobuf::RepeatedPtrField< ::proto3::MessageType > repeated_message_value_;
  ::google::protobuf::internal::ArenaStringPtr string_value_;
  ::google::protobuf::internal::ArenaStringPtr bytes_value_;
  ::proto3::MessageType* message_value_;
  bool bool_value_;
  ::google::protobuf::int32 int32_value_;
  ::google::protobuf::int64 int64_value_;
  ::google::protobuf::uint64 uint64_value_;
  ::google::protobuf::uint32 uint32_value_;
  float float_value_;
  double double_value_;
  int enum_value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestOneof(const TestOneof& from);

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

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

  enum OneofValueCase {
    kOneofInt32Value = 1,
    kOneofStringValue = 2,
    kOneofBytesValue = 3,
    kOneofEnumValue = 4,
    kOneofMessageValue = 5,
    ONEOF_VALUE_NOT_SET = 0,
  };

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

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

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

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

  TestOneof* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestOneof>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestOneof& from);
  void MergeFrom(const TestOneof& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestOneof* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // int32 oneof_int32_value = 1;
  private:
  bool has_oneof_int32_value() const;
  public:
  void clear_oneof_int32_value();
  static const int kOneofInt32ValueFieldNumber = 1;
  ::google::protobuf::int32 oneof_int32_value() const;
  void set_oneof_int32_value(::google::protobuf::int32 value);

  // string oneof_string_value = 2;
  private:
  bool has_oneof_string_value() const;
  public:
  void clear_oneof_string_value();
  static const int kOneofStringValueFieldNumber = 2;
  const ::std::string& oneof_string_value() const;
  void set_oneof_string_value(const ::std::string& value);
  #if LANG_CXX11
  void set_oneof_string_value(::std::string&& value);
  #endif
  void set_oneof_string_value(const char* value);
  void set_oneof_string_value(const char* value, size_t size);
  ::std::string* mutable_oneof_string_value();
  ::std::string* release_oneof_string_value();
  void set_allocated_oneof_string_value(::std::string* oneof_string_value);

  // bytes oneof_bytes_value = 3;
  private:
  bool has_oneof_bytes_value() const;
  public:
  void clear_oneof_bytes_value();
  static const int kOneofBytesValueFieldNumber = 3;
  const ::std::string& oneof_bytes_value() const;
  void set_oneof_bytes_value(const ::std::string& value);
  #if LANG_CXX11
  void set_oneof_bytes_value(::std::string&& value);
  #endif
  void set_oneof_bytes_value(const char* value);
  void set_oneof_bytes_value(const void* value, size_t size);
  ::std::string* mutable_oneof_bytes_value();
  ::std::string* release_oneof_bytes_value();
  void set_allocated_oneof_bytes_value(::std::string* oneof_bytes_value);

  // .proto3.EnumType oneof_enum_value = 4;
  private:
  bool has_oneof_enum_value() const;
  public:
  void clear_oneof_enum_value();
  static const int kOneofEnumValueFieldNumber = 4;
  ::proto3::EnumType oneof_enum_value() const;
  void set_oneof_enum_value(::proto3::EnumType value);

  // .proto3.MessageType oneof_message_value = 5;
  bool has_oneof_message_value() const;
  void clear_oneof_message_value();
  static const int kOneofMessageValueFieldNumber = 5;
  private:
  const ::proto3::MessageType& _internal_oneof_message_value() const;
  public:
  const ::proto3::MessageType& oneof_message_value() const;
  ::proto3::MessageType* release_oneof_message_value();
  ::proto3::MessageType* mutable_oneof_message_value();
  void set_allocated_oneof_message_value(::proto3::MessageType* oneof_message_value);

  void clear_oneof_value();
  OneofValueCase oneof_value_case() const;
  // @@protoc_insertion_point(class_scope:proto3.TestOneof)
 private:
  void set_has_oneof_int32_value();
  void set_has_oneof_string_value();
  void set_has_oneof_bytes_value();
  void set_has_oneof_enum_value();
  void set_has_oneof_message_value();

  inline bool has_oneof_value() const;
  inline void clear_has_oneof_value();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  union OneofValueUnion {
    OneofValueUnion() {}
    ::google::protobuf::int32 oneof_int32_value_;
    ::google::protobuf::internal::ArenaStringPtr oneof_string_value_;
    ::google::protobuf::internal::ArenaStringPtr oneof_bytes_value_;
    int oneof_enum_value_;
    ::proto3::MessageType* oneof_message_value_;
  } oneof_value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  ::google::protobuf::uint32 _oneof_case_[1];

  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

  TestMap(const TestMap& from);

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

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

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

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

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

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

  TestMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestMap& from);
  void MergeFrom(const TestMap& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestMap* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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


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

  // map<bool, int32> bool_map = 1;
  int bool_map_size() const;
  void clear_bool_map();
  static const int kBoolMapFieldNumber = 1;
  const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
      bool_map() const;
  ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
      mutable_bool_map();

  // map<int32, int32> int32_map = 2;
  int int32_map_size() const;
  void clear_int32_map();
  static const int kInt32MapFieldNumber = 2;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
      int32_map() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
      mutable_int32_map();

  // map<int64, int32> int64_map = 3;
  int int64_map_size() const;
  void clear_int64_map();
  static const int kInt64MapFieldNumber = 3;
  const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >&
      int64_map() const;
  ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >*
      mutable_int64_map();

  // map<uint32, int32> uint32_map = 4;
  int uint32_map_size() const;
  void clear_uint32_map();
  static const int kUint32MapFieldNumber = 4;
  const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >&
      uint32_map() const;
  ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >*
      mutable_uint32_map();

  // map<uint64, int32> uint64_map = 5;
  int uint64_map_size() const;
  void clear_uint64_map();
  static const int kUint64MapFieldNumber = 5;
  const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >&
      uint64_map() const;
  ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >*
      mutable_uint64_map();

  // map<string, int32> string_map = 6;
  int string_map_size() const;
  void clear_string_map();
  static const int kStringMapFieldNumber = 6;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
      string_map() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
      mutable_string_map();

  // @@protoc_insertion_point(class_scope:proto3.TestMap)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      TestMap_BoolMapEntry_DoNotUse,
      bool, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > bool_map_;
  ::google::protobuf::internal::MapField<
      TestMap_Int32MapEntry_DoNotUse,
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > int32_map_;
  ::google::protobuf::internal::MapField<
      TestMap_Int64MapEntry_DoNotUse,
      ::google::protobuf::int64, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > int64_map_;
  ::google::protobuf::internal::MapField<
      TestMap_Uint32MapEntry_DoNotUse,
      ::google::protobuf::uint32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > uint32_map_;
  ::google::protobuf::internal::MapField<
      TestMap_Uint64MapEntry_DoNotUse,
      ::google::protobuf::uint64, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > uint64_map_;
  ::google::protobuf::internal::MapField<
      TestMap_StringMapEntry_DoNotUse,
      ::std::string, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > string_map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  TestNestedMap(const TestNestedMap& from);

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

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

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

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

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

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

  TestNestedMap* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestNestedMap>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestNestedMap& from);
  void MergeFrom(const TestNestedMap& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestNestedMap* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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


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

  // map<bool, int32> bool_map = 1;
  int bool_map_size() const;
  void clear_bool_map();
  static const int kBoolMapFieldNumber = 1;
  const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
      bool_map() const;
  ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
      mutable_bool_map();

  // map<int32, int32> int32_map = 2;
  int int32_map_size() const;
  void clear_int32_map();
  static const int kInt32MapFieldNumber = 2;
  const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
      int32_map() const;
  ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
      mutable_int32_map();

  // map<int64, int32> int64_map = 3;
  int int64_map_size() const;
  void clear_int64_map();
  static const int kInt64MapFieldNumber = 3;
  const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >&
      int64_map() const;
  ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >*
      mutable_int64_map();

  // map<uint32, int32> uint32_map = 4;
  int uint32_map_size() const;
  void clear_uint32_map();
  static const int kUint32MapFieldNumber = 4;
  const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >&
      uint32_map() const;
  ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >*
      mutable_uint32_map();

  // map<uint64, int32> uint64_map = 5;
  int uint64_map_size() const;
  void clear_uint64_map();
  static const int kUint64MapFieldNumber = 5;
  const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >&
      uint64_map() const;
  ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >*
      mutable_uint64_map();

  // map<string, int32> string_map = 6;
  int string_map_size() const;
  void clear_string_map();
  static const int kStringMapFieldNumber = 6;
  const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
      string_map() const;
  ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
      mutable_string_map();

  // map<string, .proto3.TestNestedMap> map_map = 7;
  int map_map_size() const;
  void clear_map_map();
  static const int kMapMapFieldNumber = 7;
  const ::google::protobuf::Map< ::std::string, ::proto3::TestNestedMap >&
      map_map() const;
  ::google::protobuf::Map< ::std::string, ::proto3::TestNestedMap >*
      mutable_map_map();

  // @@protoc_insertion_point(class_scope:proto3.TestNestedMap)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_BoolMapEntry_DoNotUse,
      bool, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > bool_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_Int32MapEntry_DoNotUse,
      ::google::protobuf::int32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > int32_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_Int64MapEntry_DoNotUse,
      ::google::protobuf::int64, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > int64_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_Uint32MapEntry_DoNotUse,
      ::google::protobuf::uint32, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > uint32_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_Uint64MapEntry_DoNotUse,
      ::google::protobuf::uint64, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT64,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > uint64_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_StringMapEntry_DoNotUse,
      ::std::string, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > string_map_;
  ::google::protobuf::internal::MapField<
      TestNestedMap_MapMapEntry_DoNotUse,
      ::std::string, ::proto3::TestNestedMap,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > map_map_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestWrapper(const TestWrapper& from);

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

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

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

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

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

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

  TestWrapper* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestWrapper>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestWrapper& from);
  void MergeFrom(const TestWrapper& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestWrapper* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.BoolValue repeated_bool_value = 11;
  int repeated_bool_value_size() const;
  void clear_repeated_bool_value();
  static const int kRepeatedBoolValueFieldNumber = 11;
  ::google::protobuf::BoolValue* mutable_repeated_bool_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::BoolValue >*
      mutable_repeated_bool_value();
  const ::google::protobuf::BoolValue& repeated_bool_value(int index) const;
  ::google::protobuf::BoolValue* add_repeated_bool_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::BoolValue >&
      repeated_bool_value() const;

  // repeated .google.protobuf.Int32Value repeated_int32_value = 12;
  int repeated_int32_value_size() const;
  void clear_repeated_int32_value();
  static const int kRepeatedInt32ValueFieldNumber = 12;
  ::google::protobuf::Int32Value* mutable_repeated_int32_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int32Value >*
      mutable_repeated_int32_value();
  const ::google::protobuf::Int32Value& repeated_int32_value(int index) const;
  ::google::protobuf::Int32Value* add_repeated_int32_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int32Value >&
      repeated_int32_value() const;

  // repeated .google.protobuf.Int64Value repeated_int64_value = 13;
  int repeated_int64_value_size() const;
  void clear_repeated_int64_value();
  static const int kRepeatedInt64ValueFieldNumber = 13;
  ::google::protobuf::Int64Value* mutable_repeated_int64_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int64Value >*
      mutable_repeated_int64_value();
  const ::google::protobuf::Int64Value& repeated_int64_value(int index) const;
  ::google::protobuf::Int64Value* add_repeated_int64_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int64Value >&
      repeated_int64_value() const;

  // repeated .google.protobuf.UInt32Value repeated_uint32_value = 14;
  int repeated_uint32_value_size() const;
  void clear_repeated_uint32_value();
  static const int kRepeatedUint32ValueFieldNumber = 14;
  ::google::protobuf::UInt32Value* mutable_repeated_uint32_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt32Value >*
      mutable_repeated_uint32_value();
  const ::google::protobuf::UInt32Value& repeated_uint32_value(int index) const;
  ::google::protobuf::UInt32Value* add_repeated_uint32_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt32Value >&
      repeated_uint32_value() const;

  // repeated .google.protobuf.UInt64Value repeated_uint64_value = 15;
  int repeated_uint64_value_size() const;
  void clear_repeated_uint64_value();
  static const int kRepeatedUint64ValueFieldNumber = 15;
  ::google::protobuf::UInt64Value* mutable_repeated_uint64_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt64Value >*
      mutable_repeated_uint64_value();
  const ::google::protobuf::UInt64Value& repeated_uint64_value(int index) const;
  ::google::protobuf::UInt64Value* add_repeated_uint64_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt64Value >&
      repeated_uint64_value() const;

  // repeated .google.protobuf.FloatValue repeated_float_value = 16;
  int repeated_float_value_size() const;
  void clear_repeated_float_value();
  static const int kRepeatedFloatValueFieldNumber = 16;
  ::google::protobuf::FloatValue* mutable_repeated_float_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FloatValue >*
      mutable_repeated_float_value();
  const ::google::protobuf::FloatValue& repeated_float_value(int index) const;
  ::google::protobuf::FloatValue* add_repeated_float_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FloatValue >&
      repeated_float_value() const;

  // repeated .google.protobuf.DoubleValue repeated_double_value = 17;
  int repeated_double_value_size() const;
  void clear_repeated_double_value();
  static const int kRepeatedDoubleValueFieldNumber = 17;
  ::google::protobuf::DoubleValue* mutable_repeated_double_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DoubleValue >*
      mutable_repeated_double_value();
  const ::google::protobuf::DoubleValue& repeated_double_value(int index) const;
  ::google::protobuf::DoubleValue* add_repeated_double_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DoubleValue >&
      repeated_double_value() const;

  // repeated .google.protobuf.StringValue repeated_string_value = 18;
  int repeated_string_value_size() const;
  void clear_repeated_string_value();
  static const int kRepeatedStringValueFieldNumber = 18;
  ::google::protobuf::StringValue* mutable_repeated_string_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::StringValue >*
      mutable_repeated_string_value();
  const ::google::protobuf::StringValue& repeated_string_value(int index) const;
  ::google::protobuf::StringValue* add_repeated_string_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::StringValue >&
      repeated_string_value() const;

  // repeated .google.protobuf.BytesValue repeated_bytes_value = 19;
  int repeated_bytes_value_size() const;
  void clear_repeated_bytes_value();
  static const int kRepeatedBytesValueFieldNumber = 19;
  ::google::protobuf::BytesValue* mutable_repeated_bytes_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::BytesValue >*
      mutable_repeated_bytes_value();
  const ::google::protobuf::BytesValue& repeated_bytes_value(int index) const;
  ::google::protobuf::BytesValue* add_repeated_bytes_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::BytesValue >&
      repeated_bytes_value() const;

  // .google.protobuf.BoolValue bool_value = 1;
  bool has_bool_value() const;
  void clear_bool_value();
  static const int kBoolValueFieldNumber = 1;
  private:
  const ::google::protobuf::BoolValue& _internal_bool_value() const;
  public:
  const ::google::protobuf::BoolValue& bool_value() const;
  ::google::protobuf::BoolValue* release_bool_value();
  ::google::protobuf::BoolValue* mutable_bool_value();
  void set_allocated_bool_value(::google::protobuf::BoolValue* bool_value);

  // .google.protobuf.Int32Value int32_value = 2;
  bool has_int32_value() const;
  void clear_int32_value();
  static const int kInt32ValueFieldNumber = 2;
  private:
  const ::google::protobuf::Int32Value& _internal_int32_value() const;
  public:
  const ::google::protobuf::Int32Value& int32_value() const;
  ::google::protobuf::Int32Value* release_int32_value();
  ::google::protobuf::Int32Value* mutable_int32_value();
  void set_allocated_int32_value(::google::protobuf::Int32Value* int32_value);

  // .google.protobuf.Int64Value int64_value = 3;
  bool has_int64_value() const;
  void clear_int64_value();
  static const int kInt64ValueFieldNumber = 3;
  private:
  const ::google::protobuf::Int64Value& _internal_int64_value() const;
  public:
  const ::google::protobuf::Int64Value& int64_value() const;
  ::google::protobuf::Int64Value* release_int64_value();
  ::google::protobuf::Int64Value* mutable_int64_value();
  void set_allocated_int64_value(::google::protobuf::Int64Value* int64_value);

  // .google.protobuf.UInt32Value uint32_value = 4;
  bool has_uint32_value() const;
  void clear_uint32_value();
  static const int kUint32ValueFieldNumber = 4;
  private:
  const ::google::protobuf::UInt32Value& _internal_uint32_value() const;
  public:
  const ::google::protobuf::UInt32Value& uint32_value() const;
  ::google::protobuf::UInt32Value* release_uint32_value();
  ::google::protobuf::UInt32Value* mutable_uint32_value();
  void set_allocated_uint32_value(::google::protobuf::UInt32Value* uint32_value);

  // .google.protobuf.UInt64Value uint64_value = 5;
  bool has_uint64_value() const;
  void clear_uint64_value();
  static const int kUint64ValueFieldNumber = 5;
  private:
  const ::google::protobuf::UInt64Value& _internal_uint64_value() const;
  public:
  const ::google::protobuf::UInt64Value& uint64_value() const;
  ::google::protobuf::UInt64Value* release_uint64_value();
  ::google::protobuf::UInt64Value* mutable_uint64_value();
  void set_allocated_uint64_value(::google::protobuf::UInt64Value* uint64_value);

  // .google.protobuf.FloatValue float_value = 6;
  bool has_float_value() const;
  void clear_float_value();
  static const int kFloatValueFieldNumber = 6;
  private:
  const ::google::protobuf::FloatValue& _internal_float_value() const;
  public:
  const ::google::protobuf::FloatValue& float_value() const;
  ::google::protobuf::FloatValue* release_float_value();
  ::google::protobuf::FloatValue* mutable_float_value();
  void set_allocated_float_value(::google::protobuf::FloatValue* float_value);

  // .google.protobuf.DoubleValue double_value = 7;
  bool has_double_value() const;
  void clear_double_value();
  static const int kDoubleValueFieldNumber = 7;
  private:
  const ::google::protobuf::DoubleValue& _internal_double_value() const;
  public:
  const ::google::protobuf::DoubleValue& double_value() const;
  ::google::protobuf::DoubleValue* release_double_value();
  ::google::protobuf::DoubleValue* mutable_double_value();
  void set_allocated_double_value(::google::protobuf::DoubleValue* double_value);

  // .google.protobuf.StringValue string_value = 8;
  bool has_string_value() const;
  void clear_string_value();
  static const int kStringValueFieldNumber = 8;
  private:
  const ::google::protobuf::StringValue& _internal_string_value() const;
  public:
  const ::google::protobuf::StringValue& string_value() const;
  ::google::protobuf::StringValue* release_string_value();
  ::google::protobuf::StringValue* mutable_string_value();
  void set_allocated_string_value(::google::protobuf::StringValue* string_value);

  // .google.protobuf.BytesValue bytes_value = 9;
  bool has_bytes_value() const;
  void clear_bytes_value();
  static const int kBytesValueFieldNumber = 9;
  private:
  const ::google::protobuf::BytesValue& _internal_bytes_value() const;
  public:
  const ::google::protobuf::BytesValue& bytes_value() const;
  ::google::protobuf::BytesValue* release_bytes_value();
  ::google::protobuf::BytesValue* mutable_bytes_value();
  void set_allocated_bytes_value(::google::protobuf::BytesValue* bytes_value);

  // @@protoc_insertion_point(class_scope:proto3.TestWrapper)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::BoolValue > repeated_bool_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int32Value > repeated_int32_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int64Value > repeated_int64_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt32Value > repeated_uint32_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt64Value > repeated_uint64_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FloatValue > repeated_float_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DoubleValue > repeated_double_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::StringValue > repeated_string_value_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::BytesValue > repeated_bytes_value_;
  ::google::protobuf::BoolValue* bool_value_;
  ::google::protobuf::Int32Value* int32_value_;
  ::google::protobuf::Int64Value* int64_value_;
  ::google::protobuf::UInt32Value* uint32_value_;
  ::google::protobuf::UInt64Value* uint64_value_;
  ::google::protobuf::FloatValue* float_value_;
  ::google::protobuf::DoubleValue* double_value_;
  ::google::protobuf::StringValue* string_value_;
  ::google::protobuf::BytesValue* bytes_value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestTimestamp(const TestTimestamp& from);

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

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

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

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

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

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

  TestTimestamp* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestTimestamp>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestTimestamp& from);
  void MergeFrom(const TestTimestamp& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestTimestamp* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.Timestamp repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::Timestamp* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Timestamp >*
      mutable_repeated_value();
  const ::google::protobuf::Timestamp& repeated_value(int index) const;
  ::google::protobuf::Timestamp* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Timestamp >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestTimestamp)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Timestamp > repeated_value_;
  ::google::protobuf::Timestamp* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestDuration(const TestDuration& from);

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

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

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

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

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

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

  TestDuration* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestDuration>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestDuration& from);
  void MergeFrom(const TestDuration& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestDuration* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.Duration repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::Duration* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Duration >*
      mutable_repeated_value();
  const ::google::protobuf::Duration& repeated_value(int index) const;
  ::google::protobuf::Duration* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Duration >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestDuration)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Duration > repeated_value_;
  ::google::protobuf::Duration* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestFieldMask(const TestFieldMask& from);

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

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

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

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

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

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

  TestFieldMask* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestFieldMask>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestFieldMask& from);
  void MergeFrom(const TestFieldMask& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestFieldMask* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

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

  // @@protoc_insertion_point(class_scope:proto3.TestFieldMask)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::FieldMask* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestStruct(const TestStruct& from);

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

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

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

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

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

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

  TestStruct* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestStruct>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestStruct& from);
  void MergeFrom(const TestStruct& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestStruct* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.Struct repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::Struct* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Struct >*
      mutable_repeated_value();
  const ::google::protobuf::Struct& repeated_value(int index) const;
  ::google::protobuf::Struct* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Struct >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestStruct)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Struct > repeated_value_;
  ::google::protobuf::Struct* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestAny(const TestAny& from);

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

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

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

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

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

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

  TestAny* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestAny>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestAny& from);
  void MergeFrom(const TestAny& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestAny* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.Any repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::Any* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >*
      mutable_repeated_value();
  const ::google::protobuf::Any& repeated_value(int index) const;
  ::google::protobuf::Any* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestAny)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > repeated_value_;
  ::google::protobuf::Any* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestValue(const TestValue& from);

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

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

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

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

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

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

  TestValue* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestValue>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestValue& from);
  void MergeFrom(const TestValue& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestValue* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.Value repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::Value* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Value >*
      mutable_repeated_value();
  const ::google::protobuf::Value& repeated_value(int index) const;
  ::google::protobuf::Value* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Value >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestValue)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::Value > repeated_value_;
  ::google::protobuf::Value* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestListValue(const TestListValue& from);

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

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

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

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

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

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

  TestListValue* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestListValue>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestListValue& from);
  void MergeFrom(const TestListValue& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestListValue* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // repeated .google.protobuf.ListValue repeated_value = 2;
  int repeated_value_size() const;
  void clear_repeated_value();
  static const int kRepeatedValueFieldNumber = 2;
  ::google::protobuf::ListValue* mutable_repeated_value(int index);
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::ListValue >*
      mutable_repeated_value();
  const ::google::protobuf::ListValue& repeated_value(int index) const;
  ::google::protobuf::ListValue* add_repeated_value();
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::ListValue >&
      repeated_value() const;

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

  // @@protoc_insertion_point(class_scope:proto3.TestListValue)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::ListValue > repeated_value_;
  ::google::protobuf::ListValue* value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

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

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

  TestBoolValue(const TestBoolValue& from);

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

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

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

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

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

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

  TestBoolValue* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestBoolValue>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestBoolValue& from);
  void MergeFrom(const TestBoolValue& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestBoolValue* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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


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

  // map<bool, int32> bool_map = 2;
  int bool_map_size() const;
  void clear_bool_map();
  static const int kBoolMapFieldNumber = 2;
  const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
      bool_map() const;
  ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
      mutable_bool_map();

  // bool bool_value = 1;
  void clear_bool_value();
  static const int kBoolValueFieldNumber = 1;
  bool bool_value() const;
  void set_bool_value(bool value);

  // @@protoc_insertion_point(class_scope:proto3.TestBoolValue)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::MapField<
      TestBoolValue_BoolMapEntry_DoNotUse,
      bool, ::google::protobuf::int32,
      ::google::protobuf::internal::WireFormatLite::TYPE_BOOL,
      ::google::protobuf::internal::WireFormatLite::TYPE_INT32,
      0 > bool_map_;
  bool bool_value_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestCustomJsonName(const TestCustomJsonName& from);

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

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

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

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

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

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

  TestCustomJsonName* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestCustomJsonName>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestCustomJsonName& from);
  void MergeFrom(const TestCustomJsonName& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestCustomJsonName* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // int32 value = 1[json_name = "@value"];
  void clear_value();
  static const int kValueFieldNumber = 1;
  ::google::protobuf::int32 value() const;
  void set_value(::google::protobuf::int32 value);

  // @@protoc_insertion_point(class_scope:proto3.TestCustomJsonName)
 private:

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

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

  TestExtensions(const TestExtensions& from);

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

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

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

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

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

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

  TestExtensions* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestExtensions>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestExtensions& from);
  void MergeFrom(const TestExtensions& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestExtensions* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // .protobuf_unittest.TestAllExtensions extensions = 1;
  bool has_extensions() const;
  void clear_extensions();
  static const int kExtensionsFieldNumber = 1;
  private:
  const ::protobuf_unittest::TestAllExtensions& _internal_extensions() const;
  public:
  const ::protobuf_unittest::TestAllExtensions& extensions() const;
  ::protobuf_unittest::TestAllExtensions* release_extensions();
  ::protobuf_unittest::TestAllExtensions* mutable_extensions();
  void set_allocated_extensions(::protobuf_unittest::TestAllExtensions* extensions);

  // @@protoc_insertion_point(class_scope:proto3.TestExtensions)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::protobuf_unittest::TestAllExtensions* extensions_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// -------------------------------------------------------------------

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

  TestEnumValue(const TestEnumValue& from);

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

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

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

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

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

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

  TestEnumValue* New(::google::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<TestEnumValue>(arena);
  }
  void CopyFrom(const ::google::protobuf::Message& from) final;
  void MergeFrom(const ::google::protobuf::Message& from) final;
  void CopyFrom(const TestEnumValue& from);
  void MergeFrom(const TestEnumValue& from);
  void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TestEnumValue* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

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

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

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

  // .proto3.EnumType enum_value1 = 1;
  void clear_enum_value1();
  static const int kEnumValue1FieldNumber = 1;
  ::proto3::EnumType enum_value1() const;
  void set_enum_value1(::proto3::EnumType value);

  // .proto3.EnumType enum_value2 = 2;
  void clear_enum_value2();
  static const int kEnumValue2FieldNumber = 2;
  ::proto3::EnumType enum_value2() const;
  void set_enum_value2(::proto3::EnumType value);

  // .proto3.EnumType enum_value3 = 3;
  void clear_enum_value3();
  static const int kEnumValue3FieldNumber = 3;
  ::proto3::EnumType enum_value3() const;
  void set_enum_value3(::proto3::EnumType value);

  // @@protoc_insertion_point(class_scope:proto3.TestEnumValue)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  int enum_value1_;
  int enum_value2_;
  int enum_value3_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::protobuf_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto::TableStruct;
};
// ===================================================================


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

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

// int32 value = 1;
inline void MessageType::clear_value() {
  value_ = 0;
}
inline ::google::protobuf::int32 MessageType::value() const {
  // @@protoc_insertion_point(field_get:proto3.MessageType.value)
  return value_;
}
inline void MessageType::set_value(::google::protobuf::int32 value) {
  
  value_ = value;
  // @@protoc_insertion_point(field_set:proto3.MessageType.value)
}

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

// TestMessage

// bool bool_value = 1;
inline void TestMessage::clear_bool_value() {
  bool_value_ = false;
}
inline bool TestMessage::bool_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.bool_value)
  return bool_value_;
}
inline void TestMessage::set_bool_value(bool value) {
  
  bool_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.bool_value)
}

// int32 int32_value = 2;
inline void TestMessage::clear_int32_value() {
  int32_value_ = 0;
}
inline ::google::protobuf::int32 TestMessage::int32_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.int32_value)
  return int32_value_;
}
inline void TestMessage::set_int32_value(::google::protobuf::int32 value) {
  
  int32_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.int32_value)
}

// int64 int64_value = 3;
inline void TestMessage::clear_int64_value() {
  int64_value_ = GOOGLE_LONGLONG(0);
}
inline ::google::protobuf::int64 TestMessage::int64_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.int64_value)
  return int64_value_;
}
inline void TestMessage::set_int64_value(::google::protobuf::int64 value) {
  
  int64_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.int64_value)
}

// uint32 uint32_value = 4;
inline void TestMessage::clear_uint32_value() {
  uint32_value_ = 0u;
}
inline ::google::protobuf::uint32 TestMessage::uint32_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.uint32_value)
  return uint32_value_;
}
inline void TestMessage::set_uint32_value(::google::protobuf::uint32 value) {
  
  uint32_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.uint32_value)
}

// uint64 uint64_value = 5;
inline void TestMessage::clear_uint64_value() {
  uint64_value_ = GOOGLE_ULONGLONG(0);
}
inline ::google::protobuf::uint64 TestMessage::uint64_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.uint64_value)
  return uint64_value_;
}
inline void TestMessage::set_uint64_value(::google::protobuf::uint64 value) {
  
  uint64_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.uint64_value)
}

// float float_value = 6;
inline void TestMessage::clear_float_value() {
  float_value_ = 0;
}
inline float TestMessage::float_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.float_value)
  return float_value_;
}
inline void TestMessage::set_float_value(float value) {
  
  float_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.float_value)
}

// double double_value = 7;
inline void TestMessage::clear_double_value() {
  double_value_ = 0;
}
inline double TestMessage::double_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.double_value)
  return double_value_;
}
inline void TestMessage::set_double_value(double value) {
  
  double_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.double_value)
}

// string string_value = 8;
inline void TestMessage::clear_string_value() {
  string_value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& TestMessage::string_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.string_value)
  return string_value_.GetNoArena();
}
inline void TestMessage::set_string_value(const ::std::string& value) {
  
  string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.string_value)
}
#if LANG_CXX11
inline void TestMessage::set_string_value(::std::string&& value) {
  
  string_value_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:proto3.TestMessage.string_value)
}
#endif
inline void TestMessage::set_string_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:proto3.TestMessage.string_value)
}
inline void TestMessage::set_string_value(const char* value, size_t size) {
  
  string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:proto3.TestMessage.string_value)
}
inline ::std::string* TestMessage::mutable_string_value() {
  
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.string_value)
  return string_value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* TestMessage::release_string_value() {
  // @@protoc_insertion_point(field_release:proto3.TestMessage.string_value)
  
  return string_value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void TestMessage::set_allocated_string_value(::std::string* string_value) {
  if (string_value != NULL) {
    
  } else {
    
  }
  string_value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), string_value);
  // @@protoc_insertion_point(field_set_allocated:proto3.TestMessage.string_value)
}

// bytes bytes_value = 9;
inline void TestMessage::clear_bytes_value() {
  bytes_value_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline const ::std::string& TestMessage::bytes_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.bytes_value)
  return bytes_value_.GetNoArena();
}
inline void TestMessage::set_bytes_value(const ::std::string& value) {
  
  bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.bytes_value)
}
#if LANG_CXX11
inline void TestMessage::set_bytes_value(::std::string&& value) {
  
  bytes_value_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:proto3.TestMessage.bytes_value)
}
#endif
inline void TestMessage::set_bytes_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:proto3.TestMessage.bytes_value)
}
inline void TestMessage::set_bytes_value(const void* value, size_t size) {
  
  bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:proto3.TestMessage.bytes_value)
}
inline ::std::string* TestMessage::mutable_bytes_value() {
  
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.bytes_value)
  return bytes_value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* TestMessage::release_bytes_value() {
  // @@protoc_insertion_point(field_release:proto3.TestMessage.bytes_value)
  
  return bytes_value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void TestMessage::set_allocated_bytes_value(::std::string* bytes_value) {
  if (bytes_value != NULL) {
    
  } else {
    
  }
  bytes_value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), bytes_value);
  // @@protoc_insertion_point(field_set_allocated:proto3.TestMessage.bytes_value)
}

// .proto3.EnumType enum_value = 10;
inline void TestMessage::clear_enum_value() {
  enum_value_ = 0;
}
inline ::proto3::EnumType TestMessage::enum_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.enum_value)
  return static_cast< ::proto3::EnumType >(enum_value_);
}
inline void TestMessage::set_enum_value(::proto3::EnumType value) {
  
  enum_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestMessage.enum_value)
}

// .proto3.MessageType message_value = 11;
inline bool TestMessage::has_message_value() const {
  return this != internal_default_instance() && message_value_ != NULL;
}
inline void TestMessage::clear_message_value() {
  if (GetArenaNoVirtual() == NULL && message_value_ != NULL) {
    delete message_value_;
  }
  message_value_ = NULL;
}
inline const ::proto3::MessageType& TestMessage::_internal_message_value() const {
  return *message_value_;
}
inline const ::proto3::MessageType& TestMessage::message_value() const {
  const ::proto3::MessageType* p = message_value_;
  // @@protoc_insertion_point(field_get:proto3.TestMessage.message_value)
  return p != NULL ? *p : *reinterpret_cast<const ::proto3::MessageType*>(
      &::proto3::_MessageType_default_instance_);
}
inline ::proto3::MessageType* TestMessage::release_message_value() {
  // @@protoc_insertion_point(field_release:proto3.TestMessage.message_value)
  
  ::proto3::MessageType* temp = message_value_;
  message_value_ = NULL;
  return temp;
}
inline ::proto3::MessageType* TestMessage::mutable_message_value() {
  
  if (message_value_ == NULL) {
    auto* p = CreateMaybeMessage<::proto3::MessageType>(GetArenaNoVirtual());
    message_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.message_value)
  return message_value_;
}
inline void TestMessage::set_allocated_message_value(::proto3::MessageType* message_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete message_value_;
  }
  if (message_value) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      message_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, message_value, submessage_arena);
    }
    
  } else {
    
  }
  message_value_ = message_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestMessage.message_value)
}

// repeated bool repeated_bool_value = 21;
inline int TestMessage::repeated_bool_value_size() const {
  return repeated_bool_value_.size();
}
inline void TestMessage::clear_repeated_bool_value() {
  repeated_bool_value_.Clear();
}
inline bool TestMessage::repeated_bool_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_bool_value)
  return repeated_bool_value_.Get(index);
}
inline void TestMessage::set_repeated_bool_value(int index, bool value) {
  repeated_bool_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_bool_value)
}
inline void TestMessage::add_repeated_bool_value(bool value) {
  repeated_bool_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_bool_value)
}
inline const ::google::protobuf::RepeatedField< bool >&
TestMessage::repeated_bool_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_bool_value)
  return repeated_bool_value_;
}
inline ::google::protobuf::RepeatedField< bool >*
TestMessage::mutable_repeated_bool_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_bool_value)
  return &repeated_bool_value_;
}

// repeated int32 repeated_int32_value = 22;
inline int TestMessage::repeated_int32_value_size() const {
  return repeated_int32_value_.size();
}
inline void TestMessage::clear_repeated_int32_value() {
  repeated_int32_value_.Clear();
}
inline ::google::protobuf::int32 TestMessage::repeated_int32_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_int32_value)
  return repeated_int32_value_.Get(index);
}
inline void TestMessage::set_repeated_int32_value(int index, ::google::protobuf::int32 value) {
  repeated_int32_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_int32_value)
}
inline void TestMessage::add_repeated_int32_value(::google::protobuf::int32 value) {
  repeated_int32_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_int32_value)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
TestMessage::repeated_int32_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_int32_value)
  return repeated_int32_value_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
TestMessage::mutable_repeated_int32_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_int32_value)
  return &repeated_int32_value_;
}

// repeated int64 repeated_int64_value = 23;
inline int TestMessage::repeated_int64_value_size() const {
  return repeated_int64_value_.size();
}
inline void TestMessage::clear_repeated_int64_value() {
  repeated_int64_value_.Clear();
}
inline ::google::protobuf::int64 TestMessage::repeated_int64_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_int64_value)
  return repeated_int64_value_.Get(index);
}
inline void TestMessage::set_repeated_int64_value(int index, ::google::protobuf::int64 value) {
  repeated_int64_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_int64_value)
}
inline void TestMessage::add_repeated_int64_value(::google::protobuf::int64 value) {
  repeated_int64_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_int64_value)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
TestMessage::repeated_int64_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_int64_value)
  return repeated_int64_value_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
TestMessage::mutable_repeated_int64_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_int64_value)
  return &repeated_int64_value_;
}

// repeated uint32 repeated_uint32_value = 24;
inline int TestMessage::repeated_uint32_value_size() const {
  return repeated_uint32_value_.size();
}
inline void TestMessage::clear_repeated_uint32_value() {
  repeated_uint32_value_.Clear();
}
inline ::google::protobuf::uint32 TestMessage::repeated_uint32_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_uint32_value)
  return repeated_uint32_value_.Get(index);
}
inline void TestMessage::set_repeated_uint32_value(int index, ::google::protobuf::uint32 value) {
  repeated_uint32_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_uint32_value)
}
inline void TestMessage::add_repeated_uint32_value(::google::protobuf::uint32 value) {
  repeated_uint32_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_uint32_value)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
TestMessage::repeated_uint32_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_uint32_value)
  return repeated_uint32_value_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
TestMessage::mutable_repeated_uint32_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_uint32_value)
  return &repeated_uint32_value_;
}

// repeated uint64 repeated_uint64_value = 25;
inline int TestMessage::repeated_uint64_value_size() const {
  return repeated_uint64_value_.size();
}
inline void TestMessage::clear_repeated_uint64_value() {
  repeated_uint64_value_.Clear();
}
inline ::google::protobuf::uint64 TestMessage::repeated_uint64_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_uint64_value)
  return repeated_uint64_value_.Get(index);
}
inline void TestMessage::set_repeated_uint64_value(int index, ::google::protobuf::uint64 value) {
  repeated_uint64_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_uint64_value)
}
inline void TestMessage::add_repeated_uint64_value(::google::protobuf::uint64 value) {
  repeated_uint64_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_uint64_value)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >&
TestMessage::repeated_uint64_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_uint64_value)
  return repeated_uint64_value_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint64 >*
TestMessage::mutable_repeated_uint64_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_uint64_value)
  return &repeated_uint64_value_;
}

// repeated float repeated_float_value = 26;
inline int TestMessage::repeated_float_value_size() const {
  return repeated_float_value_.size();
}
inline void TestMessage::clear_repeated_float_value() {
  repeated_float_value_.Clear();
}
inline float TestMessage::repeated_float_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_float_value)
  return repeated_float_value_.Get(index);
}
inline void TestMessage::set_repeated_float_value(int index, float value) {
  repeated_float_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_float_value)
}
inline void TestMessage::add_repeated_float_value(float value) {
  repeated_float_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_float_value)
}
inline const ::google::protobuf::RepeatedField< float >&
TestMessage::repeated_float_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_float_value)
  return repeated_float_value_;
}
inline ::google::protobuf::RepeatedField< float >*
TestMessage::mutable_repeated_float_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_float_value)
  return &repeated_float_value_;
}

// repeated double repeated_double_value = 27;
inline int TestMessage::repeated_double_value_size() const {
  return repeated_double_value_.size();
}
inline void TestMessage::clear_repeated_double_value() {
  repeated_double_value_.Clear();
}
inline double TestMessage::repeated_double_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_double_value)
  return repeated_double_value_.Get(index);
}
inline void TestMessage::set_repeated_double_value(int index, double value) {
  repeated_double_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_double_value)
}
inline void TestMessage::add_repeated_double_value(double value) {
  repeated_double_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_double_value)
}
inline const ::google::protobuf::RepeatedField< double >&
TestMessage::repeated_double_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_double_value)
  return repeated_double_value_;
}
inline ::google::protobuf::RepeatedField< double >*
TestMessage::mutable_repeated_double_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_double_value)
  return &repeated_double_value_;
}

// repeated string repeated_string_value = 28;
inline int TestMessage::repeated_string_value_size() const {
  return repeated_string_value_.size();
}
inline void TestMessage::clear_repeated_string_value() {
  repeated_string_value_.Clear();
}
inline const ::std::string& TestMessage::repeated_string_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_string_value)
  return repeated_string_value_.Get(index);
}
inline ::std::string* TestMessage::mutable_repeated_string_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.repeated_string_value)
  return repeated_string_value_.Mutable(index);
}
inline void TestMessage::set_repeated_string_value(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_string_value)
  repeated_string_value_.Mutable(index)->assign(value);
}
#if LANG_CXX11
inline void TestMessage::set_repeated_string_value(int index, ::std::string&& value) {
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_string_value)
  repeated_string_value_.Mutable(index)->assign(std::move(value));
}
#endif
inline void TestMessage::set_repeated_string_value(int index, const char* value) {
  GOOGLE_DCHECK(value != NULL);
  repeated_string_value_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:proto3.TestMessage.repeated_string_value)
}
inline void TestMessage::set_repeated_string_value(int index, const char* value, size_t size) {
  repeated_string_value_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:proto3.TestMessage.repeated_string_value)
}
inline ::std::string* TestMessage::add_repeated_string_value() {
  // @@protoc_insertion_point(field_add_mutable:proto3.TestMessage.repeated_string_value)
  return repeated_string_value_.Add();
}
inline void TestMessage::add_repeated_string_value(const ::std::string& value) {
  repeated_string_value_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_string_value)
}
#if LANG_CXX11
inline void TestMessage::add_repeated_string_value(::std::string&& value) {
  repeated_string_value_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_string_value)
}
#endif
inline void TestMessage::add_repeated_string_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  repeated_string_value_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:proto3.TestMessage.repeated_string_value)
}
inline void TestMessage::add_repeated_string_value(const char* value, size_t size) {
  repeated_string_value_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:proto3.TestMessage.repeated_string_value)
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
TestMessage::repeated_string_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_string_value)
  return repeated_string_value_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
TestMessage::mutable_repeated_string_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_string_value)
  return &repeated_string_value_;
}

// repeated bytes repeated_bytes_value = 29;
inline int TestMessage::repeated_bytes_value_size() const {
  return repeated_bytes_value_.size();
}
inline void TestMessage::clear_repeated_bytes_value() {
  repeated_bytes_value_.Clear();
}
inline const ::std::string& TestMessage::repeated_bytes_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_bytes_value)
  return repeated_bytes_value_.Get(index);
}
inline ::std::string* TestMessage::mutable_repeated_bytes_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.repeated_bytes_value)
  return repeated_bytes_value_.Mutable(index);
}
inline void TestMessage::set_repeated_bytes_value(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_bytes_value)
  repeated_bytes_value_.Mutable(index)->assign(value);
}
#if LANG_CXX11
inline void TestMessage::set_repeated_bytes_value(int index, ::std::string&& value) {
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_bytes_value)
  repeated_bytes_value_.Mutable(index)->assign(std::move(value));
}
#endif
inline void TestMessage::set_repeated_bytes_value(int index, const char* value) {
  GOOGLE_DCHECK(value != NULL);
  repeated_bytes_value_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:proto3.TestMessage.repeated_bytes_value)
}
inline void TestMessage::set_repeated_bytes_value(int index, const void* value, size_t size) {
  repeated_bytes_value_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:proto3.TestMessage.repeated_bytes_value)
}
inline ::std::string* TestMessage::add_repeated_bytes_value() {
  // @@protoc_insertion_point(field_add_mutable:proto3.TestMessage.repeated_bytes_value)
  return repeated_bytes_value_.Add();
}
inline void TestMessage::add_repeated_bytes_value(const ::std::string& value) {
  repeated_bytes_value_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_bytes_value)
}
#if LANG_CXX11
inline void TestMessage::add_repeated_bytes_value(::std::string&& value) {
  repeated_bytes_value_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_bytes_value)
}
#endif
inline void TestMessage::add_repeated_bytes_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  repeated_bytes_value_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:proto3.TestMessage.repeated_bytes_value)
}
inline void TestMessage::add_repeated_bytes_value(const void* value, size_t size) {
  repeated_bytes_value_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:proto3.TestMessage.repeated_bytes_value)
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
TestMessage::repeated_bytes_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_bytes_value)
  return repeated_bytes_value_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
TestMessage::mutable_repeated_bytes_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_bytes_value)
  return &repeated_bytes_value_;
}

// repeated .proto3.EnumType repeated_enum_value = 30;
inline int TestMessage::repeated_enum_value_size() const {
  return repeated_enum_value_.size();
}
inline void TestMessage::clear_repeated_enum_value() {
  repeated_enum_value_.Clear();
}
inline ::proto3::EnumType TestMessage::repeated_enum_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_enum_value)
  return static_cast< ::proto3::EnumType >(repeated_enum_value_.Get(index));
}
inline void TestMessage::set_repeated_enum_value(int index, ::proto3::EnumType value) {
  repeated_enum_value_.Set(index, value);
  // @@protoc_insertion_point(field_set:proto3.TestMessage.repeated_enum_value)
}
inline void TestMessage::add_repeated_enum_value(::proto3::EnumType value) {
  repeated_enum_value_.Add(value);
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_enum_value)
}
inline const ::google::protobuf::RepeatedField<int>&
TestMessage::repeated_enum_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_enum_value)
  return repeated_enum_value_;
}
inline ::google::protobuf::RepeatedField<int>*
TestMessage::mutable_repeated_enum_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_enum_value)
  return &repeated_enum_value_;
}

// repeated .proto3.MessageType repeated_message_value = 31;
inline int TestMessage::repeated_message_value_size() const {
  return repeated_message_value_.size();
}
inline void TestMessage::clear_repeated_message_value() {
  repeated_message_value_.Clear();
}
inline ::proto3::MessageType* TestMessage::mutable_repeated_message_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestMessage.repeated_message_value)
  return repeated_message_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::proto3::MessageType >*
TestMessage::mutable_repeated_message_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestMessage.repeated_message_value)
  return &repeated_message_value_;
}
inline const ::proto3::MessageType& TestMessage::repeated_message_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestMessage.repeated_message_value)
  return repeated_message_value_.Get(index);
}
inline ::proto3::MessageType* TestMessage::add_repeated_message_value() {
  // @@protoc_insertion_point(field_add:proto3.TestMessage.repeated_message_value)
  return repeated_message_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::proto3::MessageType >&
TestMessage::repeated_message_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestMessage.repeated_message_value)
  return repeated_message_value_;
}

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

// TestOneof

// int32 oneof_int32_value = 1;
inline bool TestOneof::has_oneof_int32_value() const {
  return oneof_value_case() == kOneofInt32Value;
}
inline void TestOneof::set_has_oneof_int32_value() {
  _oneof_case_[0] = kOneofInt32Value;
}
inline void TestOneof::clear_oneof_int32_value() {
  if (has_oneof_int32_value()) {
    oneof_value_.oneof_int32_value_ = 0;
    clear_has_oneof_value();
  }
}
inline ::google::protobuf::int32 TestOneof::oneof_int32_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestOneof.oneof_int32_value)
  if (has_oneof_int32_value()) {
    return oneof_value_.oneof_int32_value_;
  }
  return 0;
}
inline void TestOneof::set_oneof_int32_value(::google::protobuf::int32 value) {
  if (!has_oneof_int32_value()) {
    clear_oneof_value();
    set_has_oneof_int32_value();
  }
  oneof_value_.oneof_int32_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_int32_value)
}

// string oneof_string_value = 2;
inline bool TestOneof::has_oneof_string_value() const {
  return oneof_value_case() == kOneofStringValue;
}
inline void TestOneof::set_has_oneof_string_value() {
  _oneof_case_[0] = kOneofStringValue;
}
inline void TestOneof::clear_oneof_string_value() {
  if (has_oneof_string_value()) {
    oneof_value_.oneof_string_value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    clear_has_oneof_value();
  }
}
inline const ::std::string& TestOneof::oneof_string_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestOneof.oneof_string_value)
  if (has_oneof_string_value()) {
    return oneof_value_.oneof_string_value_.GetNoArena();
  }
  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
}
inline void TestOneof::set_oneof_string_value(const ::std::string& value) {
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_string_value)
  if (!has_oneof_string_value()) {
    clear_oneof_value();
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_string_value)
}
#if LANG_CXX11
inline void TestOneof::set_oneof_string_value(::std::string&& value) {
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_string_value)
  if (!has_oneof_string_value()) {
    clear_oneof_value();
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:proto3.TestOneof.oneof_string_value)
}
#endif
inline void TestOneof::set_oneof_string_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  if (!has_oneof_string_value()) {
    clear_oneof_value();
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(value));
  // @@protoc_insertion_point(field_set_char:proto3.TestOneof.oneof_string_value)
}
inline void TestOneof::set_oneof_string_value(const char* value, size_t size) {
  if (!has_oneof_string_value()) {
    clear_oneof_value();
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_string_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:proto3.TestOneof.oneof_string_value)
}
inline ::std::string* TestOneof::mutable_oneof_string_value() {
  if (!has_oneof_string_value()) {
    clear_oneof_value();
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestOneof.oneof_string_value)
  return oneof_value_.oneof_string_value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* TestOneof::release_oneof_string_value() {
  // @@protoc_insertion_point(field_release:proto3.TestOneof.oneof_string_value)
  if (has_oneof_string_value()) {
    clear_has_oneof_value();
    return oneof_value_.oneof_string_value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  } else {
    return NULL;
  }
}
inline void TestOneof::set_allocated_oneof_string_value(::std::string* oneof_string_value) {
  if (!has_oneof_string_value()) {
    oneof_value_.oneof_string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  clear_oneof_value();
  if (oneof_string_value != NULL) {
    set_has_oneof_string_value();
    oneof_value_.oneof_string_value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), oneof_string_value);
  }
  // @@protoc_insertion_point(field_set_allocated:proto3.TestOneof.oneof_string_value)
}

// bytes oneof_bytes_value = 3;
inline bool TestOneof::has_oneof_bytes_value() const {
  return oneof_value_case() == kOneofBytesValue;
}
inline void TestOneof::set_has_oneof_bytes_value() {
  _oneof_case_[0] = kOneofBytesValue;
}
inline void TestOneof::clear_oneof_bytes_value() {
  if (has_oneof_bytes_value()) {
    oneof_value_.oneof_bytes_value_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    clear_has_oneof_value();
  }
}
inline const ::std::string& TestOneof::oneof_bytes_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestOneof.oneof_bytes_value)
  if (has_oneof_bytes_value()) {
    return oneof_value_.oneof_bytes_value_.GetNoArena();
  }
  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
}
inline void TestOneof::set_oneof_bytes_value(const ::std::string& value) {
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_bytes_value)
  if (!has_oneof_bytes_value()) {
    clear_oneof_value();
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_bytes_value)
}
#if LANG_CXX11
inline void TestOneof::set_oneof_bytes_value(::std::string&& value) {
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_bytes_value)
  if (!has_oneof_bytes_value()) {
    clear_oneof_value();
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:proto3.TestOneof.oneof_bytes_value)
}
#endif
inline void TestOneof::set_oneof_bytes_value(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  if (!has_oneof_bytes_value()) {
    clear_oneof_value();
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(value));
  // @@protoc_insertion_point(field_set_char:proto3.TestOneof.oneof_bytes_value)
}
inline void TestOneof::set_oneof_bytes_value(const void* value, size_t size) {
  if (!has_oneof_bytes_value()) {
    clear_oneof_value();
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  oneof_value_.oneof_bytes_value_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:proto3.TestOneof.oneof_bytes_value)
}
inline ::std::string* TestOneof::mutable_oneof_bytes_value() {
  if (!has_oneof_bytes_value()) {
    clear_oneof_value();
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestOneof.oneof_bytes_value)
  return oneof_value_.oneof_bytes_value_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* TestOneof::release_oneof_bytes_value() {
  // @@protoc_insertion_point(field_release:proto3.TestOneof.oneof_bytes_value)
  if (has_oneof_bytes_value()) {
    clear_has_oneof_value();
    return oneof_value_.oneof_bytes_value_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  } else {
    return NULL;
  }
}
inline void TestOneof::set_allocated_oneof_bytes_value(::std::string* oneof_bytes_value) {
  if (!has_oneof_bytes_value()) {
    oneof_value_.oneof_bytes_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  clear_oneof_value();
  if (oneof_bytes_value != NULL) {
    set_has_oneof_bytes_value();
    oneof_value_.oneof_bytes_value_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), oneof_bytes_value);
  }
  // @@protoc_insertion_point(field_set_allocated:proto3.TestOneof.oneof_bytes_value)
}

// .proto3.EnumType oneof_enum_value = 4;
inline bool TestOneof::has_oneof_enum_value() const {
  return oneof_value_case() == kOneofEnumValue;
}
inline void TestOneof::set_has_oneof_enum_value() {
  _oneof_case_[0] = kOneofEnumValue;
}
inline void TestOneof::clear_oneof_enum_value() {
  if (has_oneof_enum_value()) {
    oneof_value_.oneof_enum_value_ = 0;
    clear_has_oneof_value();
  }
}
inline ::proto3::EnumType TestOneof::oneof_enum_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestOneof.oneof_enum_value)
  if (has_oneof_enum_value()) {
    return static_cast< ::proto3::EnumType >(oneof_value_.oneof_enum_value_);
  }
  return static_cast< ::proto3::EnumType >(0);
}
inline void TestOneof::set_oneof_enum_value(::proto3::EnumType value) {
  if (!has_oneof_enum_value()) {
    clear_oneof_value();
    set_has_oneof_enum_value();
  }
  oneof_value_.oneof_enum_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestOneof.oneof_enum_value)
}

// .proto3.MessageType oneof_message_value = 5;
inline bool TestOneof::has_oneof_message_value() const {
  return oneof_value_case() == kOneofMessageValue;
}
inline void TestOneof::set_has_oneof_message_value() {
  _oneof_case_[0] = kOneofMessageValue;
}
inline void TestOneof::clear_oneof_message_value() {
  if (has_oneof_message_value()) {
    delete oneof_value_.oneof_message_value_;
    clear_has_oneof_value();
  }
}
inline const ::proto3::MessageType& TestOneof::_internal_oneof_message_value() const {
  return *oneof_value_.oneof_message_value_;
}
inline ::proto3::MessageType* TestOneof::release_oneof_message_value() {
  // @@protoc_insertion_point(field_release:proto3.TestOneof.oneof_message_value)
  if (has_oneof_message_value()) {
    clear_has_oneof_value();
      ::proto3::MessageType* temp = oneof_value_.oneof_message_value_;
    oneof_value_.oneof_message_value_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline const ::proto3::MessageType& TestOneof::oneof_message_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestOneof.oneof_message_value)
  return has_oneof_message_value()
      ? *oneof_value_.oneof_message_value_
      : *reinterpret_cast< ::proto3::MessageType*>(&::proto3::_MessageType_default_instance_);
}
inline ::proto3::MessageType* TestOneof::mutable_oneof_message_value() {
  if (!has_oneof_message_value()) {
    clear_oneof_value();
    set_has_oneof_message_value();
    oneof_value_.oneof_message_value_ = CreateMaybeMessage< ::proto3::MessageType >(
        GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestOneof.oneof_message_value)
  return oneof_value_.oneof_message_value_;
}

inline bool TestOneof::has_oneof_value() const {
  return oneof_value_case() != ONEOF_VALUE_NOT_SET;
}
inline void TestOneof::clear_has_oneof_value() {
  _oneof_case_[0] = ONEOF_VALUE_NOT_SET;
}
inline TestOneof::OneofValueCase TestOneof::oneof_value_case() const {
  return TestOneof::OneofValueCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

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

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

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

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

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

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

// TestMap

// map<bool, int32> bool_map = 1;
inline int TestMap::bool_map_size() const {
  return bool_map_.size();
}
inline void TestMap::clear_bool_map() {
  bool_map_.Clear();
}
inline const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
TestMap::bool_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.bool_map)
  return bool_map_.GetMap();
}
inline ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
TestMap::mutable_bool_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.bool_map)
  return bool_map_.MutableMap();
}

// map<int32, int32> int32_map = 2;
inline int TestMap::int32_map_size() const {
  return int32_map_.size();
}
inline void TestMap::clear_int32_map() {
  int32_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
TestMap::int32_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.int32_map)
  return int32_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
TestMap::mutable_int32_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.int32_map)
  return int32_map_.MutableMap();
}

// map<int64, int32> int64_map = 3;
inline int TestMap::int64_map_size() const {
  return int64_map_.size();
}
inline void TestMap::clear_int64_map() {
  int64_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >&
TestMap::int64_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.int64_map)
  return int64_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >*
TestMap::mutable_int64_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.int64_map)
  return int64_map_.MutableMap();
}

// map<uint32, int32> uint32_map = 4;
inline int TestMap::uint32_map_size() const {
  return uint32_map_.size();
}
inline void TestMap::clear_uint32_map() {
  uint32_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >&
TestMap::uint32_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.uint32_map)
  return uint32_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >*
TestMap::mutable_uint32_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.uint32_map)
  return uint32_map_.MutableMap();
}

// map<uint64, int32> uint64_map = 5;
inline int TestMap::uint64_map_size() const {
  return uint64_map_.size();
}
inline void TestMap::clear_uint64_map() {
  uint64_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >&
TestMap::uint64_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.uint64_map)
  return uint64_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >*
TestMap::mutable_uint64_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.uint64_map)
  return uint64_map_.MutableMap();
}

// map<string, int32> string_map = 6;
inline int TestMap::string_map_size() const {
  return string_map_.size();
}
inline void TestMap::clear_string_map() {
  string_map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
TestMap::string_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestMap.string_map)
  return string_map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
TestMap::mutable_string_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestMap.string_map)
  return string_map_.MutableMap();
}

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

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

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

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

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

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

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

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

// TestNestedMap

// map<bool, int32> bool_map = 1;
inline int TestNestedMap::bool_map_size() const {
  return bool_map_.size();
}
inline void TestNestedMap::clear_bool_map() {
  bool_map_.Clear();
}
inline const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
TestNestedMap::bool_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.bool_map)
  return bool_map_.GetMap();
}
inline ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
TestNestedMap::mutable_bool_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.bool_map)
  return bool_map_.MutableMap();
}

// map<int32, int32> int32_map = 2;
inline int TestNestedMap::int32_map_size() const {
  return int32_map_.size();
}
inline void TestNestedMap::clear_int32_map() {
  int32_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >&
TestNestedMap::int32_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.int32_map)
  return int32_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int32, ::google::protobuf::int32 >*
TestNestedMap::mutable_int32_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.int32_map)
  return int32_map_.MutableMap();
}

// map<int64, int32> int64_map = 3;
inline int TestNestedMap::int64_map_size() const {
  return int64_map_.size();
}
inline void TestNestedMap::clear_int64_map() {
  int64_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >&
TestNestedMap::int64_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.int64_map)
  return int64_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::int64, ::google::protobuf::int32 >*
TestNestedMap::mutable_int64_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.int64_map)
  return int64_map_.MutableMap();
}

// map<uint32, int32> uint32_map = 4;
inline int TestNestedMap::uint32_map_size() const {
  return uint32_map_.size();
}
inline void TestNestedMap::clear_uint32_map() {
  uint32_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >&
TestNestedMap::uint32_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.uint32_map)
  return uint32_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint32, ::google::protobuf::int32 >*
TestNestedMap::mutable_uint32_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.uint32_map)
  return uint32_map_.MutableMap();
}

// map<uint64, int32> uint64_map = 5;
inline int TestNestedMap::uint64_map_size() const {
  return uint64_map_.size();
}
inline void TestNestedMap::clear_uint64_map() {
  uint64_map_.Clear();
}
inline const ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >&
TestNestedMap::uint64_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.uint64_map)
  return uint64_map_.GetMap();
}
inline ::google::protobuf::Map< ::google::protobuf::uint64, ::google::protobuf::int32 >*
TestNestedMap::mutable_uint64_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.uint64_map)
  return uint64_map_.MutableMap();
}

// map<string, int32> string_map = 6;
inline int TestNestedMap::string_map_size() const {
  return string_map_.size();
}
inline void TestNestedMap::clear_string_map() {
  string_map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >&
TestNestedMap::string_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.string_map)
  return string_map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::google::protobuf::int32 >*
TestNestedMap::mutable_string_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.string_map)
  return string_map_.MutableMap();
}

// map<string, .proto3.TestNestedMap> map_map = 7;
inline int TestNestedMap::map_map_size() const {
  return map_map_.size();
}
inline void TestNestedMap::clear_map_map() {
  map_map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::proto3::TestNestedMap >&
TestNestedMap::map_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestNestedMap.map_map)
  return map_map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::proto3::TestNestedMap >*
TestNestedMap::mutable_map_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestNestedMap.map_map)
  return map_map_.MutableMap();
}

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

// TestWrapper

// .google.protobuf.BoolValue bool_value = 1;
inline bool TestWrapper::has_bool_value() const {
  return this != internal_default_instance() && bool_value_ != NULL;
}
inline const ::google::protobuf::BoolValue& TestWrapper::_internal_bool_value() const {
  return *bool_value_;
}
inline const ::google::protobuf::BoolValue& TestWrapper::bool_value() const {
  const ::google::protobuf::BoolValue* p = bool_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.bool_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::BoolValue*>(
      &::google::protobuf::_BoolValue_default_instance_);
}
inline ::google::protobuf::BoolValue* TestWrapper::release_bool_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.bool_value)
  
  ::google::protobuf::BoolValue* temp = bool_value_;
  bool_value_ = NULL;
  return temp;
}
inline ::google::protobuf::BoolValue* TestWrapper::mutable_bool_value() {
  
  if (bool_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::BoolValue>(GetArenaNoVirtual());
    bool_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.bool_value)
  return bool_value_;
}
inline void TestWrapper::set_allocated_bool_value(::google::protobuf::BoolValue* bool_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(bool_value_);
  }
  if (bool_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(bool_value)->GetArena();
    if (message_arena != submessage_arena) {
      bool_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, bool_value, submessage_arena);
    }
    
  } else {
    
  }
  bool_value_ = bool_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.bool_value)
}

// .google.protobuf.Int32Value int32_value = 2;
inline bool TestWrapper::has_int32_value() const {
  return this != internal_default_instance() && int32_value_ != NULL;
}
inline const ::google::protobuf::Int32Value& TestWrapper::_internal_int32_value() const {
  return *int32_value_;
}
inline const ::google::protobuf::Int32Value& TestWrapper::int32_value() const {
  const ::google::protobuf::Int32Value* p = int32_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.int32_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Int32Value*>(
      &::google::protobuf::_Int32Value_default_instance_);
}
inline ::google::protobuf::Int32Value* TestWrapper::release_int32_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.int32_value)
  
  ::google::protobuf::Int32Value* temp = int32_value_;
  int32_value_ = NULL;
  return temp;
}
inline ::google::protobuf::Int32Value* TestWrapper::mutable_int32_value() {
  
  if (int32_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Int32Value>(GetArenaNoVirtual());
    int32_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.int32_value)
  return int32_value_;
}
inline void TestWrapper::set_allocated_int32_value(::google::protobuf::Int32Value* int32_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(int32_value_);
  }
  if (int32_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(int32_value)->GetArena();
    if (message_arena != submessage_arena) {
      int32_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, int32_value, submessage_arena);
    }
    
  } else {
    
  }
  int32_value_ = int32_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.int32_value)
}

// .google.protobuf.Int64Value int64_value = 3;
inline bool TestWrapper::has_int64_value() const {
  return this != internal_default_instance() && int64_value_ != NULL;
}
inline const ::google::protobuf::Int64Value& TestWrapper::_internal_int64_value() const {
  return *int64_value_;
}
inline const ::google::protobuf::Int64Value& TestWrapper::int64_value() const {
  const ::google::protobuf::Int64Value* p = int64_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.int64_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Int64Value*>(
      &::google::protobuf::_Int64Value_default_instance_);
}
inline ::google::protobuf::Int64Value* TestWrapper::release_int64_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.int64_value)
  
  ::google::protobuf::Int64Value* temp = int64_value_;
  int64_value_ = NULL;
  return temp;
}
inline ::google::protobuf::Int64Value* TestWrapper::mutable_int64_value() {
  
  if (int64_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Int64Value>(GetArenaNoVirtual());
    int64_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.int64_value)
  return int64_value_;
}
inline void TestWrapper::set_allocated_int64_value(::google::protobuf::Int64Value* int64_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(int64_value_);
  }
  if (int64_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(int64_value)->GetArena();
    if (message_arena != submessage_arena) {
      int64_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, int64_value, submessage_arena);
    }
    
  } else {
    
  }
  int64_value_ = int64_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.int64_value)
}

// .google.protobuf.UInt32Value uint32_value = 4;
inline bool TestWrapper::has_uint32_value() const {
  return this != internal_default_instance() && uint32_value_ != NULL;
}
inline const ::google::protobuf::UInt32Value& TestWrapper::_internal_uint32_value() const {
  return *uint32_value_;
}
inline const ::google::protobuf::UInt32Value& TestWrapper::uint32_value() const {
  const ::google::protobuf::UInt32Value* p = uint32_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.uint32_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::UInt32Value*>(
      &::google::protobuf::_UInt32Value_default_instance_);
}
inline ::google::protobuf::UInt32Value* TestWrapper::release_uint32_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.uint32_value)
  
  ::google::protobuf::UInt32Value* temp = uint32_value_;
  uint32_value_ = NULL;
  return temp;
}
inline ::google::protobuf::UInt32Value* TestWrapper::mutable_uint32_value() {
  
  if (uint32_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::UInt32Value>(GetArenaNoVirtual());
    uint32_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.uint32_value)
  return uint32_value_;
}
inline void TestWrapper::set_allocated_uint32_value(::google::protobuf::UInt32Value* uint32_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(uint32_value_);
  }
  if (uint32_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(uint32_value)->GetArena();
    if (message_arena != submessage_arena) {
      uint32_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, uint32_value, submessage_arena);
    }
    
  } else {
    
  }
  uint32_value_ = uint32_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.uint32_value)
}

// .google.protobuf.UInt64Value uint64_value = 5;
inline bool TestWrapper::has_uint64_value() const {
  return this != internal_default_instance() && uint64_value_ != NULL;
}
inline const ::google::protobuf::UInt64Value& TestWrapper::_internal_uint64_value() const {
  return *uint64_value_;
}
inline const ::google::protobuf::UInt64Value& TestWrapper::uint64_value() const {
  const ::google::protobuf::UInt64Value* p = uint64_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.uint64_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::UInt64Value*>(
      &::google::protobuf::_UInt64Value_default_instance_);
}
inline ::google::protobuf::UInt64Value* TestWrapper::release_uint64_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.uint64_value)
  
  ::google::protobuf::UInt64Value* temp = uint64_value_;
  uint64_value_ = NULL;
  return temp;
}
inline ::google::protobuf::UInt64Value* TestWrapper::mutable_uint64_value() {
  
  if (uint64_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::UInt64Value>(GetArenaNoVirtual());
    uint64_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.uint64_value)
  return uint64_value_;
}
inline void TestWrapper::set_allocated_uint64_value(::google::protobuf::UInt64Value* uint64_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(uint64_value_);
  }
  if (uint64_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(uint64_value)->GetArena();
    if (message_arena != submessage_arena) {
      uint64_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, uint64_value, submessage_arena);
    }
    
  } else {
    
  }
  uint64_value_ = uint64_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.uint64_value)
}

// .google.protobuf.FloatValue float_value = 6;
inline bool TestWrapper::has_float_value() const {
  return this != internal_default_instance() && float_value_ != NULL;
}
inline const ::google::protobuf::FloatValue& TestWrapper::_internal_float_value() const {
  return *float_value_;
}
inline const ::google::protobuf::FloatValue& TestWrapper::float_value() const {
  const ::google::protobuf::FloatValue* p = float_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.float_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::FloatValue*>(
      &::google::protobuf::_FloatValue_default_instance_);
}
inline ::google::protobuf::FloatValue* TestWrapper::release_float_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.float_value)
  
  ::google::protobuf::FloatValue* temp = float_value_;
  float_value_ = NULL;
  return temp;
}
inline ::google::protobuf::FloatValue* TestWrapper::mutable_float_value() {
  
  if (float_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::FloatValue>(GetArenaNoVirtual());
    float_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.float_value)
  return float_value_;
}
inline void TestWrapper::set_allocated_float_value(::google::protobuf::FloatValue* float_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(float_value_);
  }
  if (float_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(float_value)->GetArena();
    if (message_arena != submessage_arena) {
      float_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, float_value, submessage_arena);
    }
    
  } else {
    
  }
  float_value_ = float_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.float_value)
}

// .google.protobuf.DoubleValue double_value = 7;
inline bool TestWrapper::has_double_value() const {
  return this != internal_default_instance() && double_value_ != NULL;
}
inline const ::google::protobuf::DoubleValue& TestWrapper::_internal_double_value() const {
  return *double_value_;
}
inline const ::google::protobuf::DoubleValue& TestWrapper::double_value() const {
  const ::google::protobuf::DoubleValue* p = double_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.double_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::DoubleValue*>(
      &::google::protobuf::_DoubleValue_default_instance_);
}
inline ::google::protobuf::DoubleValue* TestWrapper::release_double_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.double_value)
  
  ::google::protobuf::DoubleValue* temp = double_value_;
  double_value_ = NULL;
  return temp;
}
inline ::google::protobuf::DoubleValue* TestWrapper::mutable_double_value() {
  
  if (double_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::DoubleValue>(GetArenaNoVirtual());
    double_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.double_value)
  return double_value_;
}
inline void TestWrapper::set_allocated_double_value(::google::protobuf::DoubleValue* double_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(double_value_);
  }
  if (double_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(double_value)->GetArena();
    if (message_arena != submessage_arena) {
      double_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, double_value, submessage_arena);
    }
    
  } else {
    
  }
  double_value_ = double_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.double_value)
}

// .google.protobuf.StringValue string_value = 8;
inline bool TestWrapper::has_string_value() const {
  return this != internal_default_instance() && string_value_ != NULL;
}
inline const ::google::protobuf::StringValue& TestWrapper::_internal_string_value() const {
  return *string_value_;
}
inline const ::google::protobuf::StringValue& TestWrapper::string_value() const {
  const ::google::protobuf::StringValue* p = string_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.string_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::StringValue*>(
      &::google::protobuf::_StringValue_default_instance_);
}
inline ::google::protobuf::StringValue* TestWrapper::release_string_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.string_value)
  
  ::google::protobuf::StringValue* temp = string_value_;
  string_value_ = NULL;
  return temp;
}
inline ::google::protobuf::StringValue* TestWrapper::mutable_string_value() {
  
  if (string_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::StringValue>(GetArenaNoVirtual());
    string_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.string_value)
  return string_value_;
}
inline void TestWrapper::set_allocated_string_value(::google::protobuf::StringValue* string_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(string_value_);
  }
  if (string_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(string_value)->GetArena();
    if (message_arena != submessage_arena) {
      string_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, string_value, submessage_arena);
    }
    
  } else {
    
  }
  string_value_ = string_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.string_value)
}

// .google.protobuf.BytesValue bytes_value = 9;
inline bool TestWrapper::has_bytes_value() const {
  return this != internal_default_instance() && bytes_value_ != NULL;
}
inline const ::google::protobuf::BytesValue& TestWrapper::_internal_bytes_value() const {
  return *bytes_value_;
}
inline const ::google::protobuf::BytesValue& TestWrapper::bytes_value() const {
  const ::google::protobuf::BytesValue* p = bytes_value_;
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.bytes_value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::BytesValue*>(
      &::google::protobuf::_BytesValue_default_instance_);
}
inline ::google::protobuf::BytesValue* TestWrapper::release_bytes_value() {
  // @@protoc_insertion_point(field_release:proto3.TestWrapper.bytes_value)
  
  ::google::protobuf::BytesValue* temp = bytes_value_;
  bytes_value_ = NULL;
  return temp;
}
inline ::google::protobuf::BytesValue* TestWrapper::mutable_bytes_value() {
  
  if (bytes_value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::BytesValue>(GetArenaNoVirtual());
    bytes_value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.bytes_value)
  return bytes_value_;
}
inline void TestWrapper::set_allocated_bytes_value(::google::protobuf::BytesValue* bytes_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(bytes_value_);
  }
  if (bytes_value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(bytes_value)->GetArena();
    if (message_arena != submessage_arena) {
      bytes_value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, bytes_value, submessage_arena);
    }
    
  } else {
    
  }
  bytes_value_ = bytes_value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestWrapper.bytes_value)
}

// repeated .google.protobuf.BoolValue repeated_bool_value = 11;
inline int TestWrapper::repeated_bool_value_size() const {
  return repeated_bool_value_.size();
}
inline ::google::protobuf::BoolValue* TestWrapper::mutable_repeated_bool_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_bool_value)
  return repeated_bool_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::BoolValue >*
TestWrapper::mutable_repeated_bool_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_bool_value)
  return &repeated_bool_value_;
}
inline const ::google::protobuf::BoolValue& TestWrapper::repeated_bool_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_bool_value)
  return repeated_bool_value_.Get(index);
}
inline ::google::protobuf::BoolValue* TestWrapper::add_repeated_bool_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_bool_value)
  return repeated_bool_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::BoolValue >&
TestWrapper::repeated_bool_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_bool_value)
  return repeated_bool_value_;
}

// repeated .google.protobuf.Int32Value repeated_int32_value = 12;
inline int TestWrapper::repeated_int32_value_size() const {
  return repeated_int32_value_.size();
}
inline ::google::protobuf::Int32Value* TestWrapper::mutable_repeated_int32_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_int32_value)
  return repeated_int32_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int32Value >*
TestWrapper::mutable_repeated_int32_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_int32_value)
  return &repeated_int32_value_;
}
inline const ::google::protobuf::Int32Value& TestWrapper::repeated_int32_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_int32_value)
  return repeated_int32_value_.Get(index);
}
inline ::google::protobuf::Int32Value* TestWrapper::add_repeated_int32_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_int32_value)
  return repeated_int32_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int32Value >&
TestWrapper::repeated_int32_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_int32_value)
  return repeated_int32_value_;
}

// repeated .google.protobuf.Int64Value repeated_int64_value = 13;
inline int TestWrapper::repeated_int64_value_size() const {
  return repeated_int64_value_.size();
}
inline ::google::protobuf::Int64Value* TestWrapper::mutable_repeated_int64_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_int64_value)
  return repeated_int64_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int64Value >*
TestWrapper::mutable_repeated_int64_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_int64_value)
  return &repeated_int64_value_;
}
inline const ::google::protobuf::Int64Value& TestWrapper::repeated_int64_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_int64_value)
  return repeated_int64_value_.Get(index);
}
inline ::google::protobuf::Int64Value* TestWrapper::add_repeated_int64_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_int64_value)
  return repeated_int64_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Int64Value >&
TestWrapper::repeated_int64_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_int64_value)
  return repeated_int64_value_;
}

// repeated .google.protobuf.UInt32Value repeated_uint32_value = 14;
inline int TestWrapper::repeated_uint32_value_size() const {
  return repeated_uint32_value_.size();
}
inline ::google::protobuf::UInt32Value* TestWrapper::mutable_repeated_uint32_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_uint32_value)
  return repeated_uint32_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt32Value >*
TestWrapper::mutable_repeated_uint32_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_uint32_value)
  return &repeated_uint32_value_;
}
inline const ::google::protobuf::UInt32Value& TestWrapper::repeated_uint32_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_uint32_value)
  return repeated_uint32_value_.Get(index);
}
inline ::google::protobuf::UInt32Value* TestWrapper::add_repeated_uint32_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_uint32_value)
  return repeated_uint32_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt32Value >&
TestWrapper::repeated_uint32_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_uint32_value)
  return repeated_uint32_value_;
}

// repeated .google.protobuf.UInt64Value repeated_uint64_value = 15;
inline int TestWrapper::repeated_uint64_value_size() const {
  return repeated_uint64_value_.size();
}
inline ::google::protobuf::UInt64Value* TestWrapper::mutable_repeated_uint64_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_uint64_value)
  return repeated_uint64_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt64Value >*
TestWrapper::mutable_repeated_uint64_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_uint64_value)
  return &repeated_uint64_value_;
}
inline const ::google::protobuf::UInt64Value& TestWrapper::repeated_uint64_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_uint64_value)
  return repeated_uint64_value_.Get(index);
}
inline ::google::protobuf::UInt64Value* TestWrapper::add_repeated_uint64_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_uint64_value)
  return repeated_uint64_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UInt64Value >&
TestWrapper::repeated_uint64_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_uint64_value)
  return repeated_uint64_value_;
}

// repeated .google.protobuf.FloatValue repeated_float_value = 16;
inline int TestWrapper::repeated_float_value_size() const {
  return repeated_float_value_.size();
}
inline ::google::protobuf::FloatValue* TestWrapper::mutable_repeated_float_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_float_value)
  return repeated_float_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::FloatValue >*
TestWrapper::mutable_repeated_float_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_float_value)
  return &repeated_float_value_;
}
inline const ::google::protobuf::FloatValue& TestWrapper::repeated_float_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_float_value)
  return repeated_float_value_.Get(index);
}
inline ::google::protobuf::FloatValue* TestWrapper::add_repeated_float_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_float_value)
  return repeated_float_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FloatValue >&
TestWrapper::repeated_float_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_float_value)
  return repeated_float_value_;
}

// repeated .google.protobuf.DoubleValue repeated_double_value = 17;
inline int TestWrapper::repeated_double_value_size() const {
  return repeated_double_value_.size();
}
inline ::google::protobuf::DoubleValue* TestWrapper::mutable_repeated_double_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_double_value)
  return repeated_double_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::DoubleValue >*
TestWrapper::mutable_repeated_double_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_double_value)
  return &repeated_double_value_;
}
inline const ::google::protobuf::DoubleValue& TestWrapper::repeated_double_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_double_value)
  return repeated_double_value_.Get(index);
}
inline ::google::protobuf::DoubleValue* TestWrapper::add_repeated_double_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_double_value)
  return repeated_double_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DoubleValue >&
TestWrapper::repeated_double_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_double_value)
  return repeated_double_value_;
}

// repeated .google.protobuf.StringValue repeated_string_value = 18;
inline int TestWrapper::repeated_string_value_size() const {
  return repeated_string_value_.size();
}
inline ::google::protobuf::StringValue* TestWrapper::mutable_repeated_string_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_string_value)
  return repeated_string_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::StringValue >*
TestWrapper::mutable_repeated_string_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_string_value)
  return &repeated_string_value_;
}
inline const ::google::protobuf::StringValue& TestWrapper::repeated_string_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_string_value)
  return repeated_string_value_.Get(index);
}
inline ::google::protobuf::StringValue* TestWrapper::add_repeated_string_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_string_value)
  return repeated_string_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::StringValue >&
TestWrapper::repeated_string_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_string_value)
  return repeated_string_value_;
}

// repeated .google.protobuf.BytesValue repeated_bytes_value = 19;
inline int TestWrapper::repeated_bytes_value_size() const {
  return repeated_bytes_value_.size();
}
inline ::google::protobuf::BytesValue* TestWrapper::mutable_repeated_bytes_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestWrapper.repeated_bytes_value)
  return repeated_bytes_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::BytesValue >*
TestWrapper::mutable_repeated_bytes_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestWrapper.repeated_bytes_value)
  return &repeated_bytes_value_;
}
inline const ::google::protobuf::BytesValue& TestWrapper::repeated_bytes_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestWrapper.repeated_bytes_value)
  return repeated_bytes_value_.Get(index);
}
inline ::google::protobuf::BytesValue* TestWrapper::add_repeated_bytes_value() {
  // @@protoc_insertion_point(field_add:proto3.TestWrapper.repeated_bytes_value)
  return repeated_bytes_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::BytesValue >&
TestWrapper::repeated_bytes_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestWrapper.repeated_bytes_value)
  return repeated_bytes_value_;
}

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

// TestTimestamp

// .google.protobuf.Timestamp value = 1;
inline bool TestTimestamp::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::Timestamp& TestTimestamp::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::Timestamp& TestTimestamp::value() const {
  const ::google::protobuf::Timestamp* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestTimestamp.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Timestamp*>(
      &::google::protobuf::_Timestamp_default_instance_);
}
inline ::google::protobuf::Timestamp* TestTimestamp::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestTimestamp.value)
  
  ::google::protobuf::Timestamp* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::Timestamp* TestTimestamp::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestTimestamp.value)
  return value_;
}
inline void TestTimestamp::set_allocated_value(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestTimestamp.value)
}

// repeated .google.protobuf.Timestamp repeated_value = 2;
inline int TestTimestamp::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::Timestamp* TestTimestamp::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestTimestamp.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Timestamp >*
TestTimestamp::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestTimestamp.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::Timestamp& TestTimestamp::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestTimestamp.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::Timestamp* TestTimestamp::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestTimestamp.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Timestamp >&
TestTimestamp::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestTimestamp.repeated_value)
  return repeated_value_;
}

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

// TestDuration

// .google.protobuf.Duration value = 1;
inline bool TestDuration::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::Duration& TestDuration::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::Duration& TestDuration::value() const {
  const ::google::protobuf::Duration* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestDuration.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Duration*>(
      &::google::protobuf::_Duration_default_instance_);
}
inline ::google::protobuf::Duration* TestDuration::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestDuration.value)
  
  ::google::protobuf::Duration* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::Duration* TestDuration::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Duration>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestDuration.value)
  return value_;
}
inline void TestDuration::set_allocated_value(::google::protobuf::Duration* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestDuration.value)
}

// repeated .google.protobuf.Duration repeated_value = 2;
inline int TestDuration::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::Duration* TestDuration::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestDuration.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Duration >*
TestDuration::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestDuration.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::Duration& TestDuration::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestDuration.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::Duration* TestDuration::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestDuration.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Duration >&
TestDuration::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestDuration.repeated_value)
  return repeated_value_;
}

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

// TestFieldMask

// .google.protobuf.FieldMask value = 1;
inline bool TestFieldMask::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::FieldMask& TestFieldMask::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::FieldMask& TestFieldMask::value() const {
  const ::google::protobuf::FieldMask* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestFieldMask.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::FieldMask*>(
      &::google::protobuf::_FieldMask_default_instance_);
}
inline ::google::protobuf::FieldMask* TestFieldMask::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestFieldMask.value)
  
  ::google::protobuf::FieldMask* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::FieldMask* TestFieldMask::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::FieldMask>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestFieldMask.value)
  return value_;
}
inline void TestFieldMask::set_allocated_value(::google::protobuf::FieldMask* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestFieldMask.value)
}

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

// TestStruct

// .google.protobuf.Struct value = 1;
inline bool TestStruct::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::Struct& TestStruct::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::Struct& TestStruct::value() const {
  const ::google::protobuf::Struct* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestStruct.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Struct*>(
      &::google::protobuf::_Struct_default_instance_);
}
inline ::google::protobuf::Struct* TestStruct::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestStruct.value)
  
  ::google::protobuf::Struct* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::Struct* TestStruct::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Struct>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestStruct.value)
  return value_;
}
inline void TestStruct::set_allocated_value(::google::protobuf::Struct* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestStruct.value)
}

// repeated .google.protobuf.Struct repeated_value = 2;
inline int TestStruct::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::Struct* TestStruct::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestStruct.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Struct >*
TestStruct::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestStruct.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::Struct& TestStruct::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestStruct.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::Struct* TestStruct::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestStruct.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Struct >&
TestStruct::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestStruct.repeated_value)
  return repeated_value_;
}

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

// TestAny

// .google.protobuf.Any value = 1;
inline bool TestAny::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::Any& TestAny::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::Any& TestAny::value() const {
  const ::google::protobuf::Any* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestAny.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Any*>(
      &::google::protobuf::_Any_default_instance_);
}
inline ::google::protobuf::Any* TestAny::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestAny.value)
  
  ::google::protobuf::Any* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::Any* TestAny::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Any>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestAny.value)
  return value_;
}
inline void TestAny::set_allocated_value(::google::protobuf::Any* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestAny.value)
}

// repeated .google.protobuf.Any repeated_value = 2;
inline int TestAny::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::Any* TestAny::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestAny.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >*
TestAny::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestAny.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::Any& TestAny::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestAny.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::Any* TestAny::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestAny.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any >&
TestAny::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestAny.repeated_value)
  return repeated_value_;
}

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

// TestValue

// .google.protobuf.Value value = 1;
inline bool TestValue::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::Value& TestValue::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::Value& TestValue::value() const {
  const ::google::protobuf::Value* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestValue.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Value*>(
      &::google::protobuf::_Value_default_instance_);
}
inline ::google::protobuf::Value* TestValue::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestValue.value)
  
  ::google::protobuf::Value* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::Value* TestValue::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::Value>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestValue.value)
  return value_;
}
inline void TestValue::set_allocated_value(::google::protobuf::Value* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestValue.value)
}

// repeated .google.protobuf.Value repeated_value = 2;
inline int TestValue::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::Value* TestValue::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestValue.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::Value >*
TestValue::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestValue.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::Value& TestValue::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestValue.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::Value* TestValue::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestValue.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::Value >&
TestValue::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestValue.repeated_value)
  return repeated_value_;
}

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

// TestListValue

// .google.protobuf.ListValue value = 1;
inline bool TestListValue::has_value() const {
  return this != internal_default_instance() && value_ != NULL;
}
inline const ::google::protobuf::ListValue& TestListValue::_internal_value() const {
  return *value_;
}
inline const ::google::protobuf::ListValue& TestListValue::value() const {
  const ::google::protobuf::ListValue* p = value_;
  // @@protoc_insertion_point(field_get:proto3.TestListValue.value)
  return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::ListValue*>(
      &::google::protobuf::_ListValue_default_instance_);
}
inline ::google::protobuf::ListValue* TestListValue::release_value() {
  // @@protoc_insertion_point(field_release:proto3.TestListValue.value)
  
  ::google::protobuf::ListValue* temp = value_;
  value_ = NULL;
  return temp;
}
inline ::google::protobuf::ListValue* TestListValue::mutable_value() {
  
  if (value_ == NULL) {
    auto* p = CreateMaybeMessage<::google::protobuf::ListValue>(GetArenaNoVirtual());
    value_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestListValue.value)
  return value_;
}
inline void TestListValue::set_allocated_value(::google::protobuf::ListValue* value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(value_);
  }
  if (value) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestListValue.value)
}

// repeated .google.protobuf.ListValue repeated_value = 2;
inline int TestListValue::repeated_value_size() const {
  return repeated_value_.size();
}
inline ::google::protobuf::ListValue* TestListValue::mutable_repeated_value(int index) {
  // @@protoc_insertion_point(field_mutable:proto3.TestListValue.repeated_value)
  return repeated_value_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::protobuf::ListValue >*
TestListValue::mutable_repeated_value() {
  // @@protoc_insertion_point(field_mutable_list:proto3.TestListValue.repeated_value)
  return &repeated_value_;
}
inline const ::google::protobuf::ListValue& TestListValue::repeated_value(int index) const {
  // @@protoc_insertion_point(field_get:proto3.TestListValue.repeated_value)
  return repeated_value_.Get(index);
}
inline ::google::protobuf::ListValue* TestListValue::add_repeated_value() {
  // @@protoc_insertion_point(field_add:proto3.TestListValue.repeated_value)
  return repeated_value_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::protobuf::ListValue >&
TestListValue::repeated_value() const {
  // @@protoc_insertion_point(field_list:proto3.TestListValue.repeated_value)
  return repeated_value_;
}

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

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

// TestBoolValue

// bool bool_value = 1;
inline void TestBoolValue::clear_bool_value() {
  bool_value_ = false;
}
inline bool TestBoolValue::bool_value() const {
  // @@protoc_insertion_point(field_get:proto3.TestBoolValue.bool_value)
  return bool_value_;
}
inline void TestBoolValue::set_bool_value(bool value) {
  
  bool_value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestBoolValue.bool_value)
}

// map<bool, int32> bool_map = 2;
inline int TestBoolValue::bool_map_size() const {
  return bool_map_.size();
}
inline void TestBoolValue::clear_bool_map() {
  bool_map_.Clear();
}
inline const ::google::protobuf::Map< bool, ::google::protobuf::int32 >&
TestBoolValue::bool_map() const {
  // @@protoc_insertion_point(field_map:proto3.TestBoolValue.bool_map)
  return bool_map_.GetMap();
}
inline ::google::protobuf::Map< bool, ::google::protobuf::int32 >*
TestBoolValue::mutable_bool_map() {
  // @@protoc_insertion_point(field_mutable_map:proto3.TestBoolValue.bool_map)
  return bool_map_.MutableMap();
}

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

// TestCustomJsonName

// int32 value = 1[json_name = "@value"];
inline void TestCustomJsonName::clear_value() {
  value_ = 0;
}
inline ::google::protobuf::int32 TestCustomJsonName::value() const {
  // @@protoc_insertion_point(field_get:proto3.TestCustomJsonName.value)
  return value_;
}
inline void TestCustomJsonName::set_value(::google::protobuf::int32 value) {
  
  value_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestCustomJsonName.value)
}

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

// TestExtensions

// .protobuf_unittest.TestAllExtensions extensions = 1;
inline bool TestExtensions::has_extensions() const {
  return this != internal_default_instance() && extensions_ != NULL;
}
inline const ::protobuf_unittest::TestAllExtensions& TestExtensions::_internal_extensions() const {
  return *extensions_;
}
inline const ::protobuf_unittest::TestAllExtensions& TestExtensions::extensions() const {
  const ::protobuf_unittest::TestAllExtensions* p = extensions_;
  // @@protoc_insertion_point(field_get:proto3.TestExtensions.extensions)
  return p != NULL ? *p : *reinterpret_cast<const ::protobuf_unittest::TestAllExtensions*>(
      &::protobuf_unittest::_TestAllExtensions_default_instance_);
}
inline ::protobuf_unittest::TestAllExtensions* TestExtensions::release_extensions() {
  // @@protoc_insertion_point(field_release:proto3.TestExtensions.extensions)
  
  ::protobuf_unittest::TestAllExtensions* temp = extensions_;
  extensions_ = NULL;
  return temp;
}
inline ::protobuf_unittest::TestAllExtensions* TestExtensions::mutable_extensions() {
  
  if (extensions_ == NULL) {
    auto* p = CreateMaybeMessage<::protobuf_unittest::TestAllExtensions>(GetArenaNoVirtual());
    extensions_ = p;
  }
  // @@protoc_insertion_point(field_mutable:proto3.TestExtensions.extensions)
  return extensions_;
}
inline void TestExtensions::set_allocated_extensions(::protobuf_unittest::TestAllExtensions* extensions) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete reinterpret_cast< ::google::protobuf::MessageLite*>(extensions_);
  }
  if (extensions) {
    ::google::protobuf::Arena* submessage_arena =
      reinterpret_cast<::google::protobuf::MessageLite*>(extensions)->GetArena();
    if (message_arena != submessage_arena) {
      extensions = ::google::protobuf::internal::GetOwnedMessage(
          message_arena, extensions, submessage_arena);
    }
    
  } else {
    
  }
  extensions_ = extensions;
  // @@protoc_insertion_point(field_set_allocated:proto3.TestExtensions.extensions)
}

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

// TestEnumValue

// .proto3.EnumType enum_value1 = 1;
inline void TestEnumValue::clear_enum_value1() {
  enum_value1_ = 0;
}
inline ::proto3::EnumType TestEnumValue::enum_value1() const {
  // @@protoc_insertion_point(field_get:proto3.TestEnumValue.enum_value1)
  return static_cast< ::proto3::EnumType >(enum_value1_);
}
inline void TestEnumValue::set_enum_value1(::proto3::EnumType value) {
  
  enum_value1_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestEnumValue.enum_value1)
}

// .proto3.EnumType enum_value2 = 2;
inline void TestEnumValue::clear_enum_value2() {
  enum_value2_ = 0;
}
inline ::proto3::EnumType TestEnumValue::enum_value2() const {
  // @@protoc_insertion_point(field_get:proto3.TestEnumValue.enum_value2)
  return static_cast< ::proto3::EnumType >(enum_value2_);
}
inline void TestEnumValue::set_enum_value2(::proto3::EnumType value) {
  
  enum_value2_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestEnumValue.enum_value2)
}

// .proto3.EnumType enum_value3 = 3;
inline void TestEnumValue::clear_enum_value3() {
  enum_value3_ = 0;
}
inline ::proto3::EnumType TestEnumValue::enum_value3() const {
  // @@protoc_insertion_point(field_get:proto3.TestEnumValue.enum_value3)
  return static_cast< ::proto3::EnumType >(enum_value3_);
}
inline void TestEnumValue::set_enum_value3(::proto3::EnumType value) {
  
  enum_value3_ = value;
  // @@protoc_insertion_point(field_set:proto3.TestEnumValue.enum_value3)
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace proto3

namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::proto3::EnumType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::proto3::EnumType>() {
  return ::proto3::EnumType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_INCLUDED_google_2fprotobuf_2futil_2fjson_5fformat_5fproto3_2eproto
