text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: google/protobuf/descriptor.proto
  
  #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
  #include <google/protobuf/descriptor.pb.h>
  
  #include <algorithm>
  
  #include <google/protobuf/stubs/common.h>
  #include <google/protobuf/stubs/port.h>
  #include <google/protobuf/stubs/once.h>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/wire_format_lite_inl.h>
  #include <google/protobuf/descriptor.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/reflection_ops.h>
  #include <google/protobuf/wire_format.h>
  // @@protoc_insertion_point(includes)
  
  namespace google {
  namespace protobuf {
  class FileDescriptorSetDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<FileDescriptorSet>
       _instance;
  } _FileDescriptorSet_default_instance_;
  class FileDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<FileDescriptorProto>
       _instance;
  } _FileDescriptorProto_default_instance_;
  class DescriptorProto_ExtensionRangeDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<DescriptorProto_ExtensionRange>
       _instance;
  } _DescriptorProto_ExtensionRange_default_instance_;
  class DescriptorProto_ReservedRangeDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<DescriptorProto_ReservedRange>
       _instance;
  } _DescriptorProto_ReservedRange_default_instance_;
  class DescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<DescriptorProto>
       _instance;
  } _DescriptorProto_default_instance_;
  class ExtensionRangeOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ExtensionRangeOptions>
       _instance;
  } _ExtensionRangeOptions_default_instance_;
  class FieldDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<FieldDescriptorProto>
       _instance;
  } _FieldDescriptorProto_default_instance_;
  class OneofDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<OneofDescriptorProto>
       _instance;
  } _OneofDescriptorProto_default_instance_;
  class EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<EnumDescriptorProto_EnumReservedRange>
       _instance;
  } _EnumDescriptorProto_EnumReservedRange_default_instance_;
  class EnumDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<EnumDescriptorProto>
       _instance;
  } _EnumDescriptorProto_default_instance_;
  class EnumValueDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<EnumValueDescriptorProto>
       _instance;
  } _EnumValueDescriptorProto_default_instance_;
  class ServiceDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ServiceDescriptorProto>
       _instance;
  } _ServiceDescriptorProto_default_instance_;
  class MethodDescriptorProtoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<MethodDescriptorProto>
       _instance;
  } _MethodDescriptorProto_default_instance_;
  class FileOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<FileOptions>
       _instance;
  } _FileOptions_default_instance_;
  class MessageOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<MessageOptions>
       _instance;
  } _MessageOptions_default_instance_;
  class FieldOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<FieldOptions>
       _instance;
  } _FieldOptions_default_instance_;
  class OneofOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<OneofOptions>
       _instance;
  } _OneofOptions_default_instance_;
  class EnumOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<EnumOptions>
       _instance;
  } _EnumOptions_default_instance_;
  class EnumValueOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<EnumValueOptions>
       _instance;
  } _EnumValueOptions_default_instance_;
  class ServiceOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ServiceOptions>
       _instance;
  } _ServiceOptions_default_instance_;
  class MethodOptionsDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<MethodOptions>
       _instance;
  } _MethodOptions_default_instance_;
  class UninterpretedOption_NamePartDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<UninterpretedOption_NamePart>
       _instance;
  } _UninterpretedOption_NamePart_default_instance_;
  class UninterpretedOptionDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<UninterpretedOption>
       _instance;
  } _UninterpretedOption_default_instance_;
  class SourceCodeInfo_LocationDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<SourceCodeInfo_Location>
       _instance;
  } _SourceCodeInfo_Location_default_instance_;
  class SourceCodeInfoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<SourceCodeInfo>
       _instance;
  } _SourceCodeInfo_default_instance_;
  class GeneratedCodeInfo_AnnotationDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<GeneratedCodeInfo_Annotation>
       _instance;
  } _GeneratedCodeInfo_Annotation_default_instance_;
  class GeneratedCodeInfoDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<GeneratedCodeInfo>
       _instance;
  } _GeneratedCodeInfo_default_instance_;
  
  namespace protobuf_google_2fprotobuf_2fdescriptor_2eproto {
  
  
  namespace {
  
  ::google::protobuf::Metadata file_level_metadata[27];
  const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[6];
  
  }  // namespace
  
  PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTableField
      const TableStruct::entries[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
    {0, 0, 0, ::google::protobuf::internal::kInvalidMask, 0, 0},
  };
  
  PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::AuxillaryParseTableField
      const TableStruct::aux[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
    ::google::protobuf::internal::AuxillaryParseTableField(),
  };
  PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTable const
      TableStruct::schema[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
    { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  };
  
  const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorSet, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorSet, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorSet, file_),
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, package_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, dependency_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, public_dependency_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, weak_dependency_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, message_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, enum_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, service_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, extension_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, options_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, source_code_info_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileDescriptorProto, syntax_),
    0,
    1,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    3,
    4,
    2,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ExtensionRange, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ExtensionRange, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ExtensionRange, start_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ExtensionRange, end_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ExtensionRange, options_),
    1,
    2,
    0,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ReservedRange, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ReservedRange, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ReservedRange, start_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto_ReservedRange, end_),
    0,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, field_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, extension_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, nested_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, enum_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, extension_range_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, oneof_decl_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, options_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, reserved_range_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DescriptorProto, reserved_name_),
    0,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    ~0u,
    1,
    ~0u,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ExtensionRangeOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ExtensionRangeOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ExtensionRangeOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ExtensionRangeOptions, uninterpreted_option_),
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, number_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, label_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, type_name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, extendee_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, default_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, oneof_index_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, json_name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldDescriptorProto, options_),
    0,
    6,
    8,
    9,
    2,
    1,
    3,
    7,
    4,
    5,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofDescriptorProto, options_),
    0,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, start_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, end_),
    0,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, options_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, reserved_range_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumDescriptorProto, reserved_name_),
    0,
    ~0u,
    1,
    ~0u,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueDescriptorProto, number_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueDescriptorProto, options_),
    0,
    2,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceDescriptorProto, method_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceDescriptorProto, options_),
    0,
    ~0u,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, input_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, output_type_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, options_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, client_streaming_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, server_streaming_),
    0,
    1,
    2,
    3,
    4,
    5,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_package_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_outer_classname_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_multiple_files_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_generate_equals_and_hash_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_string_check_utf8_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, optimize_for_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, go_package_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, cc_generic_services_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_generic_services_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, py_generic_services_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, php_generic_services_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, cc_enable_arenas_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, objc_class_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, csharp_namespace_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, swift_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, php_class_prefix_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, php_namespace_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, php_metadata_namespace_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, ruby_package_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, uninterpreted_option_),
    0,
    1,
    10,
    11,
    12,
    19,
    2,
    13,
    14,
    15,
    16,
    17,
    18,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, message_set_wire_format_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, no_standard_descriptor_accessor_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, map_entry_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MessageOptions, uninterpreted_option_),
    0,
    1,
    2,
    3,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, ctype_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, packed_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, jstype_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, lazy_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, weak_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FieldOptions, uninterpreted_option_),
    0,
    1,
    5,
    2,
    3,
    4,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(OneofOptions, uninterpreted_option_),
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, allow_alias_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumOptions, uninterpreted_option_),
    0,
    1,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(EnumValueOptions, uninterpreted_option_),
    0,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServiceOptions, uninterpreted_option_),
    0,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, _internal_metadata_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, _extensions_),
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, deprecated_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, idempotency_level_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodOptions, uninterpreted_option_),
    0,
    1,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption_NamePart, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption_NamePart, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption_NamePart, name_part_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption_NamePart, is_extension_),
    0,
    1,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, name_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, identifier_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, positive_int_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, negative_int_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, double_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, string_value_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UninterpretedOption, aggregate_value_),
    ~0u,
    0,
    3,
    4,
    5,
    1,
    2,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, path_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, span_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, leading_comments_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, trailing_comments_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo_Location, leading_detached_comments_),
    ~0u,
    ~0u,
    0,
    1,
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SourceCodeInfo, location_),
    ~0u,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, path_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, source_file_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, begin_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo_Annotation, end_),
    ~0u,
    0,
    1,
    2,
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo, _has_bits_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(GeneratedCodeInfo, annotation_),
    ~0u,
  };
  static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
    { 0, 6, sizeof(FileDescriptorSet)},
    { 7, 24, sizeof(FileDescriptorProto)},
    { 36, 44, sizeof(DescriptorProto_ExtensionRange)},
    { 47, 54, sizeof(DescriptorProto_ReservedRange)},
    { 56, 71, sizeof(DescriptorProto)},
    { 81, 87, sizeof(ExtensionRangeOptions)},
    { 88, 103, sizeof(FieldDescriptorProto)},
    { 113, 120, sizeof(OneofDescriptorProto)},
    { 122, 129, sizeof(EnumDescriptorProto_EnumReservedRange)},
    { 131, 141, sizeof(EnumDescriptorProto)},
    { 146, 154, sizeof(EnumValueDescriptorProto)},
    { 157, 165, sizeof(ServiceDescriptorProto)},
    { 168, 179, sizeof(MethodDescriptorProto)},
    { 185, 211, sizeof(FileOptions)},
    { 232, 242, sizeof(MessageOptions)},
    { 247, 259, sizeof(FieldOptions)},
    { 266, 272, sizeof(OneofOptions)},
    { 273, 281, sizeof(EnumOptions)},
    { 284, 291, sizeof(EnumValueOptions)},
    { 293, 300, sizeof(ServiceOptions)},
    { 302, 310, sizeof(MethodOptions)},
    { 313, 320, sizeof(UninterpretedOption_NamePart)},
    { 322, 334, sizeof(UninterpretedOption)},
    { 341, 351, sizeof(SourceCodeInfo_Location)},
    { 356, 362, sizeof(SourceCodeInfo)},
    { 363, 372, sizeof(GeneratedCodeInfo_Annotation)},
    { 376, 382, sizeof(GeneratedCodeInfo)},
  };
  
  static ::google::protobuf::Message const * const file_default_instances[] = {
    reinterpret_cast<const ::google::protobuf::Message*>(&_FileDescriptorSet_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_FileDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_DescriptorProto_ExtensionRange_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_DescriptorProto_ReservedRange_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_DescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_ExtensionRangeOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_FieldDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_OneofDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_EnumDescriptorProto_EnumReservedRange_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_EnumDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_EnumValueDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_ServiceDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_MethodDescriptorProto_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_FileOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_MessageOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_FieldOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_OneofOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_EnumOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_EnumValueOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_ServiceOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_MethodOptions_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_UninterpretedOption_NamePart_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_UninterpretedOption_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_SourceCodeInfo_Location_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_SourceCodeInfo_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_GeneratedCodeInfo_Annotation_default_instance_),
    reinterpret_cast<const ::google::protobuf::Message*>(&_GeneratedCodeInfo_default_instance_),
  };
  
  namespace {
  
  void protobuf_AssignDescriptors() {
    AddDescriptors();
    ::google::protobuf::MessageFactory* factory = NULL;
    AssignDescriptors(
        "google/protobuf/descriptor.proto", schemas, file_default_instances, TableStruct::offsets, factory,
        file_level_metadata, file_level_enum_descriptors, NULL);
  }
  
  void protobuf_AssignDescriptorsOnce() {
    static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
    ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
  }
  
  void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
  void protobuf_RegisterTypes(const ::std::string&) {
    protobuf_AssignDescriptorsOnce();
    ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 27);
  }
  
  }  // namespace
  void TableStruct::InitDefaultsImpl() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    ::google::protobuf::internal::InitProtobufDefaults();
    _FileDescriptorSet_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_FileDescriptorSet_default_instance_);_FileDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_FileDescriptorProto_default_instance_);_DescriptorProto_ExtensionRange_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_DescriptorProto_ExtensionRange_default_instance_);_DescriptorProto_ReservedRange_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_DescriptorProto_ReservedRange_default_instance_);_DescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_DescriptorProto_default_instance_);_ExtensionRangeOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_ExtensionRangeOptions_default_instance_);_FieldDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_FieldDescriptorProto_default_instance_);_OneofDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_OneofDescriptorProto_default_instance_);_EnumDescriptorProto_EnumReservedRange_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_EnumDescriptorProto_EnumReservedRange_default_instance_);_EnumDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_EnumDescriptorProto_default_instance_);_EnumValueDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_EnumValueDescriptorProto_default_instance_);_ServiceDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_ServiceDescriptorProto_default_instance_);_MethodDescriptorProto_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_MethodDescriptorProto_default_instance_);_FileOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_FileOptions_default_instance_);_MessageOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_MessageOptions_default_instance_);_FieldOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_FieldOptions_default_instance_);_OneofOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_OneofOptions_default_instance_);_EnumOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_EnumOptions_default_instance_);_EnumValueOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_EnumValueOptions_default_instance_);_ServiceOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_ServiceOptions_default_instance_);_MethodOptions_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_MethodOptions_default_instance_);_UninterpretedOption_NamePart_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_UninterpretedOption_NamePart_default_instance_);_UninterpretedOption_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_UninterpretedOption_default_instance_);_SourceCodeInfo_Location_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_SourceCodeInfo_Location_default_instance_);_SourceCodeInfo_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_SourceCodeInfo_default_instance_);_GeneratedCodeInfo_Annotation_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_GeneratedCodeInfo_Annotation_default_instance_);_GeneratedCodeInfo_default_instance_._instance.DefaultConstruct();
    ::google::protobuf::internal::OnShutdownDestroyMessage(
        &_GeneratedCodeInfo_default_instance_);_FileDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::FileOptions*>(
        ::google::protobuf::FileOptions::internal_default_instance());
    _FileDescriptorProto_default_instance_._instance.get_mutable()->source_code_info_ = const_cast< ::google::protobuf::SourceCodeInfo*>(
        ::google::protobuf::SourceCodeInfo::internal_default_instance());
    _DescriptorProto_ExtensionRange_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::ExtensionRangeOptions*>(
        ::google::protobuf::ExtensionRangeOptions::internal_default_instance());
    _DescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::MessageOptions*>(
        ::google::protobuf::MessageOptions::internal_default_instance());
    _FieldDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::FieldOptions*>(
        ::google::protobuf::FieldOptions::internal_default_instance());
    _OneofDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::OneofOptions*>(
        ::google::protobuf::OneofOptions::internal_default_instance());
    _EnumDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::EnumOptions*>(
        ::google::protobuf::EnumOptions::internal_default_instance());
    _EnumValueDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::EnumValueOptions*>(
        ::google::protobuf::EnumValueOptions::internal_default_instance());
    _ServiceDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::ServiceOptions*>(
        ::google::protobuf::ServiceOptions::internal_default_instance());
    _MethodDescriptorProto_default_instance_._instance.get_mutable()->options_ = const_cast< ::google::protobuf::MethodOptions*>(
        ::google::protobuf::MethodOptions::internal_default_instance());
  }
  
  void InitDefaults() {
    static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
    ::google::protobuf::GoogleOnceInit(&once, &TableStruct::InitDefaultsImpl);
  }
  namespace {
  void AddDescriptorsImpl() {
    InitDefaults();
    static const char descriptor[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        "\n google/protobuf/descriptor.proto\022\017goog"
        "le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file"
        "\030\001 \003(\0132$.google.protobuf.FileDescriptorP"
        "roto\"\333\003\n\023FileDescriptorProto\022\014\n\004name\030\001 \001"
        "(\t\022\017\n\007package\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022"
        "\031\n\021public_dependency\030\n \003(\005\022\027\n\017weak_depen"
        "dency\030\013 \003(\005\0226\n\014message_type\030\004 \003(\0132 .goog"
        "le.protobuf.DescriptorProto\0227\n\tenum_type"
        "\030\005 \003(\0132$.google.protobuf.EnumDescriptorP"
        "roto\0228\n\007service\030\006 \003(\0132\'.google.protobuf."
        "ServiceDescriptorProto\0228\n\textension\030\007 \003("
        "\0132%.google.protobuf.FieldDescriptorProto"
        "\022-\n\007options\030\010 \001(\0132\034.google.protobuf.File"
        "Options\0229\n\020source_code_info\030\t \001(\0132\037.goog"
        "le.protobuf.SourceCodeInfo\022\016\n\006syntax\030\014 \001"
        "(\t\"\251\005\n\017DescriptorProto\022\014\n\004name\030\001 \001(\t\0224\n\005"
        "field\030\002 \003(\0132%.google.protobuf.FieldDescr"
        "iptorProto\0228\n\textension\030\006 \003(\0132%.google.p"
        "rotobuf.FieldDescriptorProto\0225\n\013nested_t"
        "ype\030\003 \003(\0132 .google.protobuf.DescriptorPr"
        "oto\0227\n\tenum_type\030\004 \003(\0132$.google.protobuf"
        ".EnumDescriptorProto\022H\n\017extension_range\030"
        "\005 \003(\0132/.google.protobuf.DescriptorProto."
        "ExtensionRange\0229\n\noneof_decl\030\010 \003(\0132%.goo"
        "gle.protobuf.OneofDescriptorProto\0220\n\007opt"
        "ions\030\007 \001(\0132\037.google.protobuf.MessageOpti"
        "ons\022F\n\016reserved_range\030\t \003(\0132..google.pro"
        "tobuf.DescriptorProto.ReservedRange\022\025\n\rr"
        "eserved_name\030\n \003(\t\032e\n\016ExtensionRange\022\r\n\005"
        "start\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\0227\n\007options\030\003 \001("
        "\0132&.google.protobuf.ExtensionRangeOption"
        "s\032+\n\rReservedRange\022\r\n\005start\030\001 \001(\005\022\013\n\003end"
        "\030\002 \001(\005\"g\n\025ExtensionRangeOptions\022C\n\024unint"
        "erpreted_option\030\347\007 \003(\0132$.google.protobuf"
        ".UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\274\005\n\024Fiel"
        "dDescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number"
        "\030\003 \001(\005\022:\n\005label\030\004 \001(\0162+.google.protobuf."
        "FieldDescriptorProto.Label\0228\n\004type\030\005 \001(\016"
        "2*.google.protobuf.FieldDescriptorProto."
        "Type\022\021\n\ttype_name\030\006 \001(\t\022\020\n\010extendee\030\002 \001("
        "\t\022\025\n\rdefault_value\030\007 \001(\t\022\023\n\013oneof_index\030"
        "\t \001(\005\022\021\n\tjson_name\030\n \001(\t\022.\n\007options\030\010 \001("
        "\0132\035.google.protobuf.FieldOptions\"C\n\005Labe"
        "l\022\022\n\016LABEL_OPTIONAL\020\001\022\022\n\016LABEL_REQUIRED\020"
        "\002\022\022\n\016LABEL_REPEATED\020\003\"\266\002\n\004Type\022\017\n\013TYPE_D"
        "OUBLE\020\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64\020\003\022"
        "\017\n\013TYPE_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014TYPE"
        "_FIXED64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_BOO"
        "L\020\010\022\017\n\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014"
        "TYPE_MESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYPE_U"
        "INT32\020\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED32\020"
        "\017\022\021\n\rTYPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021\022\017\n"
        "\013TYPE_SINT64\020\022\"T\n\024OneofDescriptorProto\022\014"
        "\n\004name\030\001 \001(\t\022.\n\007options\030\002 \001(\0132\035.google.p"
        "rotobuf.OneofOptions\"\244\002\n\023EnumDescriptorP"
        "roto\022\014\n\004name\030\001 \001(\t\0228\n\005value\030\002 \003(\0132).goog"
        "le.protobuf.EnumValueDescriptorProto\022-\n\007"
        "options\030\003 \001(\0132\034.google.protobuf.EnumOpti"
        "ons\022N\n\016reserved_range\030\004 \003(\01326.google.pro"
        "tobuf.EnumDescriptorProto.EnumReservedRa"
        "nge\022\025\n\rreserved_name\030\005 \003(\t\032/\n\021EnumReserv"
        "edRange\022\r\n\005start\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\"l\n\030E"
        "numValueDescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n"
        "\006number\030\002 \001(\005\0222\n\007options\030\003 \001(\0132!.google."
        "protobuf.EnumValueOptions\"\220\001\n\026ServiceDes"
        "criptorProto\022\014\n\004name\030\001 \001(\t\0226\n\006method\030\002 \003"
        "(\0132&.google.protobuf.MethodDescriptorPro"
        "to\0220\n\007options\030\003 \001(\0132\037.google.protobuf.Se"
        "rviceOptions\"\301\001\n\025MethodDescriptorProto\022\014"
        "\n\004name\030\001 \001(\t\022\022\n\ninput_type\030\002 \001(\t\022\023\n\013outp"
        "ut_type\030\003 \001(\t\022/\n\007options\030\004 \001(\0132\036.google."
        "protobuf.MethodOptions\022\037\n\020client_streami"
        "ng\030\005 \001(\010:\005false\022\037\n\020server_streaming\030\006 \001("
        "\010:\005false\"\246\006\n\013FileOptions\022\024\n\014java_package"
        "\030\001 \001(\t\022\034\n\024java_outer_classname\030\010 \001(\t\022\"\n\023"
        "java_multiple_files\030\n \001(\010:\005false\022)\n\035java"
        "_generate_equals_and_hash\030\024 \001(\010B\002\030\001\022%\n\026j"
        "ava_string_check_utf8\030\033 \001(\010:\005false\022F\n\014op"
        "timize_for\030\t \001(\0162).google.protobuf.FileO"
        "ptions.OptimizeMode:\005SPEED\022\022\n\ngo_package"
        "\030\013 \001(\t\022\"\n\023cc_generic_services\030\020 \001(\010:\005fal"
        "se\022$\n\025java_generic_services\030\021 \001(\010:\005false"
        "\022\"\n\023py_generic_services\030\022 \001(\010:\005false\022#\n\024"
        "php_generic_services\030* \001(\010:\005false\022\031\n\ndep"
        "recated\030\027 \001(\010:\005false\022\037\n\020cc_enable_arenas"
        "\030\037 \001(\010:\005false\022\031\n\021objc_class_prefix\030$ \001(\t"
        "\022\030\n\020csharp_namespace\030% \001(\t\022\024\n\014swift_pref"
        "ix\030\' \001(\t\022\030\n\020php_class_prefix\030( \001(\t\022\025\n\rph"
        "p_namespace\030) \001(\t\022\036\n\026php_metadata_namesp"
        "ace\030, \001(\t\022\024\n\014ruby_package\030- \001(\t\022C\n\024unint"
        "erpreted_option\030\347\007 \003(\0132$.google.protobuf"
        ".UninterpretedOption\":\n\014OptimizeMode\022\t\n\005"
        "SPEED\020\001\022\r\n\tCODE_SIZE\020\002\022\020\n\014LITE_RUNTIME\020\003"
        "*\t\010\350\007\020\200\200\200\200\002J\004\010&\020\'\"\362\001\n\016MessageOptions\022&\n\027"
        "message_set_wire_format\030\001 \001(\010:\005false\022.\n\037"
        "no_standard_descriptor_accessor\030\002 \001(\010:\005f"
        "alse\022\031\n\ndeprecated\030\003 \001(\010:\005false\022\021\n\tmap_e"
        "ntry\030\007 \001(\010\022C\n\024uninterpreted_option\030\347\007 \003("
        "\0132$.google.protobuf.UninterpretedOption*"
        "\t\010\350\007\020\200\200\200\200\002J\004\010\010\020\tJ\004\010\t\020\n\"\236\003\n\014FieldOptions\022"
        ":\n\005ctype\030\001 \001(\0162#.google.protobuf.FieldOp"
        "tions.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\?\n\006j"
        "stype\030\006 \001(\0162$.google.protobuf.FieldOptio"
        "ns.JSType:\tJS_NORMAL\022\023\n\004lazy\030\005 \001(\010:\005fals"
        "e\022\031\n\ndeprecated\030\003 \001(\010:\005false\022\023\n\004weak\030\n \001"
        "(\010:\005false\022C\n\024uninterpreted_option\030\347\007 \003(\013"
        "2$.google.protobuf.UninterpretedOption\"/"
        "\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRING_"
        "PIECE\020\002\"5\n\006JSType\022\r\n\tJS_NORMAL\020\000\022\r\n\tJS_S"
        "TRING\020\001\022\r\n\tJS_NUMBER\020\002*\t\010\350\007\020\200\200\200\200\002J\004\010\004\020\005\""
        "^\n\014OneofOptions\022C\n\024uninterpreted_option\030"
        "\347\007 \003(\0132$.google.protobuf.UninterpretedOp"
        "tion*\t\010\350\007\020\200\200\200\200\002\"\223\001\n\013EnumOptions\022\023\n\013allow"
        "_alias\030\002 \001(\010\022\031\n\ndeprecated\030\003 \001(\010:\005false\022"
        "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google."
        "protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002J"
        "\004\010\005\020\006\"}\n\020EnumValueOptions\022\031\n\ndeprecated\030"
        "\001 \001(\010:\005false\022C\n\024uninterpreted_option\030\347\007 "
        "\003(\0132$.google.protobuf.UninterpretedOptio"
        "n*\t\010\350\007\020\200\200\200\200\002\"{\n\016ServiceOptions\022\031\n\ndeprec"
        "ated\030! \001(\010:\005false\022C\n\024uninterpreted_optio"
        "n\030\347\007 \003(\0132$.google.protobuf.Uninterpreted"
        "Option*\t\010\350\007\020\200\200\200\200\002\"\255\002\n\rMethodOptions\022\031\n\nd"
        "eprecated\030! \001(\010:\005false\022_\n\021idempotency_le"
        "vel\030\" \001(\0162/.google.protobuf.MethodOption"
        "s.IdempotencyLevel:\023IDEMPOTENCY_UNKNOWN\022"
        "C\n\024uninterpreted_option\030\347\007 \003(\0132$.google."
        "protobuf.UninterpretedOption\"P\n\020Idempote"
        "ncyLevel\022\027\n\023IDEMPOTENCY_UNKNOWN\020\000\022\023\n\017NO_"
        "SIDE_EFFECTS\020\001\022\016\n\nIDEMPOTENT\020\002*\t\010\350\007\020\200\200\200\200"
        "\002\"\236\002\n\023UninterpretedOption\022;\n\004name\030\002 \003(\0132"
        "-.google.protobuf.UninterpretedOption.Na"
        "mePart\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022posi"
        "tive_int_value\030\004 \001(\004\022\032\n\022negative_int_val"
        "ue\030\005 \001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014string"
        "_value\030\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\0323\n"
        "\010NamePart\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_exten"
        "sion\030\002 \002(\010\"\325\001\n\016SourceCodeInfo\022:\n\010locatio"
        "n\030\001 \003(\0132(.google.protobuf.SourceCodeInfo"
        ".Location\032\206\001\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001"
        "\022\020\n\004span\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments\030\003"
        " \001(\t\022\031\n\021trailing_comments\030\004 \001(\t\022!\n\031leadi"
        "ng_detached_comments\030\006 \003(\t\"\247\001\n\021Generated"
        "CodeInfo\022A\n\nannotation\030\001 \003(\0132-.google.pr"
        "otobuf.GeneratedCodeInfo.Annotation\032O\n\nA"
        "nnotation\022\020\n\004path\030\001 \003(\005B\002\020\001\022\023\n\013source_fi"
        "le\030\002 \001(\t\022\r\n\005begin\030\003 \001(\005\022\013\n\003end\030\004 \001(\005B\217\001\n"
        "\023com.google.protobufB\020DescriptorProtosH\001"
        "Z>github.com/golang/protobuf/protoc-gen-"
        "go/descriptor;descriptor\370\001\001\242\002\003GPB\252\002\032Goog"
        "le.Protobuf.Reflection"
    };
    ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
        descriptor, 6022);
    ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
      "google/protobuf/descriptor.proto", &protobuf_RegisterTypes);
  }
  } // anonymous namespace
  
  void AddDescriptors() {
    static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
    ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
  }
  // Force AddDescriptors() to be called at dynamic initialization time.
  struct StaticDescriptorInitializer {
    StaticDescriptorInitializer() {
      AddDescriptors();
    }
  } static_descriptor_initializer;
  
  }  // namespace protobuf_google_2fprotobuf_2fdescriptor_2eproto
  
  const ::google::protobuf::EnumDescriptor* FieldDescriptorProto_Label_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[0];
  }
  bool FieldDescriptorProto_Label_IsValid(int value) {
    switch (value) {
      case 1:
      case 2:
      case 3:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const FieldDescriptorProto_Label FieldDescriptorProto::LABEL_OPTIONAL;
  const FieldDescriptorProto_Label FieldDescriptorProto::LABEL_REQUIRED;
  const FieldDescriptorProto_Label FieldDescriptorProto::LABEL_REPEATED;
  const FieldDescriptorProto_Label FieldDescriptorProto::Label_MIN;
  const FieldDescriptorProto_Label FieldDescriptorProto::Label_MAX;
  const int FieldDescriptorProto::Label_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  const ::google::protobuf::EnumDescriptor* FieldDescriptorProto_Type_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[1];
  }
  bool FieldDescriptorProto_Type_IsValid(int value) {
    switch (value) {
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
      case 7:
      case 8:
      case 9:
      case 10:
      case 11:
      case 12:
      case 13:
      case 14:
      case 15:
      case 16:
      case 17:
      case 18:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_DOUBLE;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FLOAT;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_INT64;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_UINT64;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_INT32;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FIXED64;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FIXED32;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_BOOL;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_STRING;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_GROUP;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_MESSAGE;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_BYTES;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_UINT32;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_ENUM;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SFIXED32;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SFIXED64;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SINT32;
  const FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SINT64;
  const FieldDescriptorProto_Type FieldDescriptorProto::Type_MIN;
  const FieldDescriptorProto_Type FieldDescriptorProto::Type_MAX;
  const int FieldDescriptorProto::Type_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  const ::google::protobuf::EnumDescriptor* FileOptions_OptimizeMode_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[2];
  }
  bool FileOptions_OptimizeMode_IsValid(int value) {
    switch (value) {
      case 1:
      case 2:
      case 3:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const FileOptions_OptimizeMode FileOptions::SPEED;
  const FileOptions_OptimizeMode FileOptions::CODE_SIZE;
  const FileOptions_OptimizeMode FileOptions::LITE_RUNTIME;
  const FileOptions_OptimizeMode FileOptions::OptimizeMode_MIN;
  const FileOptions_OptimizeMode FileOptions::OptimizeMode_MAX;
  const int FileOptions::OptimizeMode_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  const ::google::protobuf::EnumDescriptor* FieldOptions_CType_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[3];
  }
  bool FieldOptions_CType_IsValid(int value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const FieldOptions_CType FieldOptions::STRING;
  const FieldOptions_CType FieldOptions::CORD;
  const FieldOptions_CType FieldOptions::STRING_PIECE;
  const FieldOptions_CType FieldOptions::CType_MIN;
  const FieldOptions_CType FieldOptions::CType_MAX;
  const int FieldOptions::CType_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  const ::google::protobuf::EnumDescriptor* FieldOptions_JSType_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[4];
  }
  bool FieldOptions_JSType_IsValid(int value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const FieldOptions_JSType FieldOptions::JS_NORMAL;
  const FieldOptions_JSType FieldOptions::JS_STRING;
  const FieldOptions_JSType FieldOptions::JS_NUMBER;
  const FieldOptions_JSType FieldOptions::JSType_MIN;
  const FieldOptions_JSType FieldOptions::JSType_MAX;
  const int FieldOptions::JSType_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  const ::google::protobuf::EnumDescriptor* MethodOptions_IdempotencyLevel_descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_enum_descriptors[5];
  }
  bool MethodOptions_IdempotencyLevel_IsValid(int value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
        return true;
      default:
        return false;
    }
  }
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const MethodOptions_IdempotencyLevel MethodOptions::IDEMPOTENCY_UNKNOWN;
  const MethodOptions_IdempotencyLevel MethodOptions::NO_SIDE_EFFECTS;
  const MethodOptions_IdempotencyLevel MethodOptions::IDEMPOTENT;
  const MethodOptions_IdempotencyLevel MethodOptions::IdempotencyLevel_MIN;
  const MethodOptions_IdempotencyLevel MethodOptions::IdempotencyLevel_MAX;
  const int MethodOptions::IdempotencyLevel_ARRAYSIZE;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int FileDescriptorSet::kFileFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  FileDescriptorSet::FileDescriptorSet()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.FileDescriptorSet)
  }
  FileDescriptorSet::FileDescriptorSet(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    file_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.FileDescriptorSet)
  }
  FileDescriptorSet::FileDescriptorSet(const FileDescriptorSet& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        file_(from.file_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:google.protobuf.FileDescriptorSet)
  }
  
  void FileDescriptorSet::SharedCtor() {
    _cached_size_ = 0;
  }
  
  FileDescriptorSet::~FileDescriptorSet() {
    // @@protoc_insertion_point(destructor:google.protobuf.FileDescriptorSet)
    SharedDtor();
  }
  
  void FileDescriptorSet::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void FileDescriptorSet::ArenaDtor(void* object) {
    FileDescriptorSet* _this = reinterpret_cast< FileDescriptorSet* >(object);
    (void)_this;
  }
  void FileDescriptorSet::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void FileDescriptorSet::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* FileDescriptorSet::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const FileDescriptorSet& FileDescriptorSet::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  FileDescriptorSet* FileDescriptorSet::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<FileDescriptorSet>(arena);
  }
  
  void FileDescriptorSet::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.FileDescriptorSet)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    file_.Clear();
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool FileDescriptorSet::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.FileDescriptorSet)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.FileDescriptorProto file = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_file()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.FileDescriptorSet)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.FileDescriptorSet)
    return false;
  #undef DO_
  }
  
  void FileDescriptorSet::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.FileDescriptorSet)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.FileDescriptorProto file = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->file_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        1, this->file(static_cast<int>(i)), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.FileDescriptorSet)
  }
  
  ::google::protobuf::uint8* FileDescriptorSet::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorSet)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.FileDescriptorProto file = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->file_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          1, this->file(static_cast<int>(i)), deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorSet)
    return target;
  }
  
  size_t FileDescriptorSet::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorSet)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.FileDescriptorProto file = 1;
    {
      unsigned int count = static_cast<unsigned int>(this->file_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->file(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void FileDescriptorSet::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.FileDescriptorSet)
    GOOGLE_DCHECK_NE(&from, this);
    const FileDescriptorSet* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const FileDescriptorSet>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.FileDescriptorSet)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.FileDescriptorSet)
      MergeFrom(*source);
    }
  }
  
  void FileDescriptorSet::MergeFrom(const FileDescriptorSet& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorSet)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    file_.MergeFrom(from.file_);
  }
  
  void FileDescriptorSet::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.FileDescriptorSet)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void FileDescriptorSet::CopyFrom(const FileDescriptorSet& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.FileDescriptorSet)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool FileDescriptorSet::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->file())) return false;
    return true;
  }
  
  void FileDescriptorSet::Swap(FileDescriptorSet* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      FileDescriptorSet* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void FileDescriptorSet::UnsafeArenaSwap(FileDescriptorSet* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void FileDescriptorSet::InternalSwap(FileDescriptorSet* other) {
    using std::swap;
    file_.InternalSwap(&other->file_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata FileDescriptorSet::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // FileDescriptorSet
  
  // repeated .google.protobuf.FileDescriptorProto file = 1;
  int FileDescriptorSet::file_size() const {
    return file_.size();
  }
  void FileDescriptorSet::clear_file() {
    file_.Clear();
  }
  const ::google::protobuf::FileDescriptorProto& FileDescriptorSet::file(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorSet.file)
    return file_.Get(index);
  }
  ::google::protobuf::FileDescriptorProto* FileDescriptorSet::mutable_file(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorSet.file)
    return file_.Mutable(index);
  }
  ::google::protobuf::FileDescriptorProto* FileDescriptorSet::add_file() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorSet.file)
    return file_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto >*
  FileDescriptorSet::mutable_file() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorSet.file)
    return &file_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FileDescriptorProto >&
  FileDescriptorSet::file() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorSet.file)
    return file_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void FileDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::FileOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::FileOptions* FileDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::FileOptions* temp = new ::google::protobuf::FileOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::FileOptions* FileDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::FileOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void FileDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::FileOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::FileOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::FileOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void FileDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::FileOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.options)
  }
  void FileDescriptorProto::_slow_mutable_source_code_info() {
    source_code_info_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::SourceCodeInfo >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::SourceCodeInfo* FileDescriptorProto::_slow_release_source_code_info() {
    if (source_code_info_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::SourceCodeInfo* temp = new ::google::protobuf::SourceCodeInfo(*source_code_info_);
      source_code_info_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::SourceCodeInfo* FileDescriptorProto::unsafe_arena_release_source_code_info() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileDescriptorProto.source_code_info)
    clear_has_source_code_info();
    ::google::protobuf::SourceCodeInfo* temp = source_code_info_;
    source_code_info_ = NULL;
    return temp;
  }
  void FileDescriptorProto::_slow_set_allocated_source_code_info(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::SourceCodeInfo** source_code_info) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*source_code_info) == NULL) {
        message_arena->Own(*source_code_info);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*source_code_info)) {
        ::google::protobuf::SourceCodeInfo* new_source_code_info = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::SourceCodeInfo >(
              message_arena);
        new_source_code_info->CopyFrom(**source_code_info);
        *source_code_info = new_source_code_info;
      }
  }
  void FileDescriptorProto::unsafe_arena_set_allocated_source_code_info(
      ::google::protobuf::SourceCodeInfo* source_code_info) {
    if (GetArenaNoVirtual() == NULL) {
      delete source_code_info_;
    }
    source_code_info_ = source_code_info;
    if (source_code_info) {
      set_has_source_code_info();
    } else {
      clear_has_source_code_info();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.source_code_info)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int FileDescriptorProto::kNameFieldNumber;
  const int FileDescriptorProto::kPackageFieldNumber;
  const int FileDescriptorProto::kDependencyFieldNumber;
  const int FileDescriptorProto::kPublicDependencyFieldNumber;
  const int FileDescriptorProto::kWeakDependencyFieldNumber;
  const int FileDescriptorProto::kMessageTypeFieldNumber;
  const int FileDescriptorProto::kEnumTypeFieldNumber;
  const int FileDescriptorProto::kServiceFieldNumber;
  const int FileDescriptorProto::kExtensionFieldNumber;
  const int FileDescriptorProto::kOptionsFieldNumber;
  const int FileDescriptorProto::kSourceCodeInfoFieldNumber;
  const int FileDescriptorProto::kSyntaxFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  FileDescriptorProto::FileDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.FileDescriptorProto)
  }
  FileDescriptorProto::FileDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    dependency_(arena),
    message_type_(arena),
    enum_type_(arena),
    service_(arena),
    extension_(arena),
    public_dependency_(arena),
    weak_dependency_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.FileDescriptorProto)
  }
  FileDescriptorProto::FileDescriptorProto(const FileDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        dependency_(from.dependency_),
        message_type_(from.message_type_),
        enum_type_(from.enum_type_),
        service_(from.service_),
        extension_(from.extension_),
        public_dependency_(from.public_dependency_),
        weak_dependency_(from.weak_dependency_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_package()) {
      package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.package(),
        GetArenaNoVirtual());
    }
    syntax_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_syntax()) {
      syntax_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.syntax(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::FileOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    if (from.has_source_code_info()) {
      source_code_info_ = new ::google::protobuf::SourceCodeInfo(*from.source_code_info_);
    } else {
      source_code_info_ = NULL;
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.FileDescriptorProto)
  }
  
  void FileDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    syntax_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&options_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&source_code_info_) -
        reinterpret_cast<char*>(&options_)) + sizeof(source_code_info_));
  }
  
  FileDescriptorProto::~FileDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.FileDescriptorProto)
    SharedDtor();
  }
  
  void FileDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    package_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    syntax_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
    if (this != internal_default_instance()) delete source_code_info_;
  }
  
  void FileDescriptorProto::ArenaDtor(void* object) {
    FileDescriptorProto* _this = reinterpret_cast< FileDescriptorProto* >(object);
    (void)_this;
  }
  void FileDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void FileDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* FileDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const FileDescriptorProto& FileDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  FileDescriptorProto* FileDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<FileDescriptorProto>(arena);
  }
  
  void FileDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.FileDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    dependency_.Clear();
    message_type_.Clear();
    enum_type_.Clear();
    service_.Clear();
    extension_.Clear();
    public_dependency_.Clear();
    weak_dependency_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!package_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000004u) {
        GOOGLE_DCHECK(!syntax_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        syntax_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000008u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::FileOptions::Clear();
      }
      if (cached_has_bits & 0x00000010u) {
        GOOGLE_DCHECK(source_code_info_ != NULL);
        source_code_info_->::google::protobuf::SourceCodeInfo::Clear();
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool FileDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.FileDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string package = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_package()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->package().data(), static_cast<int>(this->package().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileDescriptorProto.package");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated string dependency = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->add_dependency()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->dependency(this->dependency_size() - 1).data(),
              static_cast<int>(this->dependency(this->dependency_size() - 1).length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileDescriptorProto.dependency");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.DescriptorProto message_type = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_message_type()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_enum_type()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.ServiceDescriptorProto service = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_service()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.FieldDescriptorProto extension = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_extension()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FileOptions options = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
        case 9: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_source_code_info()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated int32 public_dependency = 10;
        case 10: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(80u /* 80 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   1, 80u, input, this->mutable_public_dependency())));
          } else if (
              static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, this->mutable_public_dependency())));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated int32 weak_dependency = 11;
        case 11: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(88u /* 88 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   1, 88u, input, this->mutable_weak_dependency())));
          } else if (
              static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, this->mutable_weak_dependency())));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string syntax = 12;
        case 12: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_syntax()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->syntax().data(), static_cast<int>(this->syntax().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileDescriptorProto.syntax");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.FileDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.FileDescriptorProto)
    return false;
  #undef DO_
  }
  
  void FileDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.FileDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // optional string package = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->package().data(), static_cast<int>(this->package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.package");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->package(), output);
    }
  
    // repeated string dependency = 3;
    for (int i = 0, n = this->dependency_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->dependency(i).data(), static_cast<int>(this->dependency(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.dependency");
      ::google::protobuf::internal::WireFormatLite::WriteString(
        3, this->dependency(i), output);
    }
  
    // repeated .google.protobuf.DescriptorProto message_type = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->message_type_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        4, this->message_type(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->enum_type_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        5, this->enum_type(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->service_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        6, this->service(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        7, this->extension(static_cast<int>(i)), output);
    }
  
    // optional .google.protobuf.FileOptions options = 8;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        8, *this->options_, output);
    }
  
    // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        9, *this->source_code_info_, output);
    }
  
    // repeated int32 public_dependency = 10;
    for (int i = 0, n = this->public_dependency_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(
        10, this->public_dependency(i), output);
    }
  
    // repeated int32 weak_dependency = 11;
    for (int i = 0, n = this->weak_dependency_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(
        11, this->weak_dependency(i), output);
    }
  
    // optional string syntax = 12;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->syntax().data(), static_cast<int>(this->syntax().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.syntax");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        12, this->syntax(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.FileDescriptorProto)
  }
  
  ::google::protobuf::uint8* FileDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // optional string package = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->package().data(), static_cast<int>(this->package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.package");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          2, this->package(), target);
    }
  
    // repeated string dependency = 3;
    for (int i = 0, n = this->dependency_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->dependency(i).data(), static_cast<int>(this->dependency(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.dependency");
      target = ::google::protobuf::internal::WireFormatLite::
        WriteStringToArray(3, this->dependency(i), target);
    }
  
    // repeated .google.protobuf.DescriptorProto message_type = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->message_type_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          4, this->message_type(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->enum_type_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          5, this->enum_type(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->service_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          6, this->service(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          7, this->extension(static_cast<int>(i)), deterministic, target);
    }
  
    // optional .google.protobuf.FileOptions options = 8;
    if (cached_has_bits & 0x00000008u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          8, *this->options_, deterministic, target);
    }
  
    // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
    if (cached_has_bits & 0x00000010u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          9, *this->source_code_info_, deterministic, target);
    }
  
    // repeated int32 public_dependency = 10;
    target = ::google::protobuf::internal::WireFormatLite::
      WriteInt32ToArray(10, this->public_dependency_, target);
  
    // repeated int32 weak_dependency = 11;
    target = ::google::protobuf::internal::WireFormatLite::
      WriteInt32ToArray(11, this->weak_dependency_, target);
  
    // optional string syntax = 12;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->syntax().data(), static_cast<int>(this->syntax().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileDescriptorProto.syntax");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          12, this->syntax(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorProto)
    return target;
  }
  
  size_t FileDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated string dependency = 3;
    total_size += 1 *
        ::google::protobuf::internal::FromIntSize(this->dependency_size());
    for (int i = 0, n = this->dependency_size(); i < n; i++) {
      total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
        this->dependency(i));
    }
  
    // repeated .google.protobuf.DescriptorProto message_type = 4;
    {
      unsigned int count = static_cast<unsigned int>(this->message_type_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->message_type(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
    {
      unsigned int count = static_cast<unsigned int>(this->enum_type_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->enum_type(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.ServiceDescriptorProto service = 6;
    {
      unsigned int count = static_cast<unsigned int>(this->service_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->service(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 7;
    {
      unsigned int count = static_cast<unsigned int>(this->extension_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->extension(static_cast<int>(i)));
      }
    }
  
    // repeated int32 public_dependency = 10;
    {
      size_t data_size = ::google::protobuf::internal::WireFormatLite::
        Int32Size(this->public_dependency_);
      total_size += 1 *
                    ::google::protobuf::internal::FromIntSize(this->public_dependency_size());
      total_size += data_size;
    }
  
    // repeated int32 weak_dependency = 11;
    {
      size_t data_size = ::google::protobuf::internal::WireFormatLite::
        Int32Size(this->weak_dependency_);
      total_size += 1 *
                    ::google::protobuf::internal::FromIntSize(this->weak_dependency_size());
      total_size += data_size;
    }
  
    if (_has_bits_[0 / 32] & 31u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional string package = 2;
      if (has_package()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->package());
      }
  
      // optional string syntax = 12;
      if (has_syntax()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->syntax());
      }
  
      // optional .google.protobuf.FileOptions options = 8;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
      // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
      if (has_source_code_info()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->source_code_info_);
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void FileDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.FileDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const FileDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const FileDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.FileDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.FileDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void FileDescriptorProto::MergeFrom(const FileDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    dependency_.MergeFrom(from.dependency_);
    message_type_.MergeFrom(from.message_type_);
    enum_type_.MergeFrom(from.enum_type_);
    service_.MergeFrom(from.service_);
    extension_.MergeFrom(from.extension_);
    public_dependency_.MergeFrom(from.public_dependency_);
    weak_dependency_.MergeFrom(from.weak_dependency_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 31u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        set_package(from.package());
      }
      if (cached_has_bits & 0x00000004u) {
        set_syntax(from.syntax());
      }
      if (cached_has_bits & 0x00000008u) {
        mutable_options()->::google::protobuf::FileOptions::MergeFrom(from.options());
      }
      if (cached_has_bits & 0x00000010u) {
        mutable_source_code_info()->::google::protobuf::SourceCodeInfo::MergeFrom(from.source_code_info());
      }
    }
  }
  
  void FileDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.FileDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void FileDescriptorProto::CopyFrom(const FileDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.FileDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool FileDescriptorProto::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->message_type())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->enum_type())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->service())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->extension())) return false;
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void FileDescriptorProto::Swap(FileDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      FileDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void FileDescriptorProto::UnsafeArenaSwap(FileDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void FileDescriptorProto::InternalSwap(FileDescriptorProto* other) {
    using std::swap;
    dependency_.InternalSwap(&other->dependency_);
    message_type_.InternalSwap(&other->message_type_);
    enum_type_.InternalSwap(&other->enum_type_);
    service_.InternalSwap(&other->service_);
    extension_.InternalSwap(&other->extension_);
    public_dependency_.InternalSwap(&other->public_dependency_);
    weak_dependency_.InternalSwap(&other->weak_dependency_);
    name_.Swap(&other->name_);
    package_.Swap(&other->package_);
    syntax_.Swap(&other->syntax_);
    swap(options_, other->options_);
    swap(source_code_info_, other->source_code_info_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata FileDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // FileDescriptorProto
  
  // optional string name = 1;
  bool FileDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void FileDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void FileDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void FileDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& FileDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.name)
    return name_.Get();
  }
  void FileDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.name)
  }
  #if LANG_CXX11
  void FileDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileDescriptorProto.name)
  }
  #endif
  void FileDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileDescriptorProto.name)
  }
  void FileDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileDescriptorProto.name)
  }
  ::std::string* FileDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.name)
  }
  void FileDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.name)
  }
  
  // optional string package = 2;
  bool FileDescriptorProto::has_package() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void FileDescriptorProto::set_has_package() {
    _has_bits_[0] |= 0x00000002u;
  }
  void FileDescriptorProto::clear_has_package() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void FileDescriptorProto::clear_package() {
    package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_package();
  }
  const ::std::string& FileDescriptorProto::package() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.package)
    return package_.Get();
  }
  void FileDescriptorProto::set_package(const ::std::string& value) {
    set_has_package();
    package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.package)
  }
  #if LANG_CXX11
  void FileDescriptorProto::set_package(::std::string&& value) {
    set_has_package();
    package_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileDescriptorProto.package)
  }
  #endif
  void FileDescriptorProto::set_package(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_package();
    package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileDescriptorProto.package)
  }
  void FileDescriptorProto::set_package(const char* value,
      size_t size) {
    set_has_package();
    package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileDescriptorProto.package)
  }
  ::std::string* FileDescriptorProto::mutable_package() {
    set_has_package();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.package)
    return package_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::release_package() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.package)
    clear_has_package();
    return package_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::unsafe_arena_release_package() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileDescriptorProto.package)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_package();
    return package_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileDescriptorProto::set_allocated_package(::std::string* package) {
    if (package != NULL) {
      set_has_package();
    } else {
      clear_has_package();
    }
    package_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), package,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.package)
  }
  void FileDescriptorProto::unsafe_arena_set_allocated_package(
      ::std::string* package) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (package != NULL) {
      set_has_package();
    } else {
      clear_has_package();
    }
    package_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        package, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.package)
  }
  
  // repeated string dependency = 3;
  int FileDescriptorProto::dependency_size() const {
    return dependency_.size();
  }
  void FileDescriptorProto::clear_dependency() {
    dependency_.Clear();
  }
  const ::std::string& FileDescriptorProto::dependency(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.dependency)
    return dependency_.Get(index);
  }
  ::std::string* FileDescriptorProto::mutable_dependency(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.dependency)
    return dependency_.Mutable(index);
  }
  void FileDescriptorProto::set_dependency(int index, const ::std::string& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.dependency)
    dependency_.Mutable(index)->assign(value);
  }
  #if LANG_CXX11
  void FileDescriptorProto::set_dependency(int index, ::std::string&& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.dependency)
    dependency_.Mutable(index)->assign(std::move(value));
  }
  #endif
  void FileDescriptorProto::set_dependency(int index, const char* value) {
    GOOGLE_DCHECK(value != NULL);
    dependency_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileDescriptorProto.dependency)
  }
  void FileDescriptorProto::set_dependency(int index, const char* value, size_t size) {
    dependency_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileDescriptorProto.dependency)
  }
  ::std::string* FileDescriptorProto::add_dependency() {
    // @@protoc_insertion_point(field_add_mutable:google.protobuf.FileDescriptorProto.dependency)
    return dependency_.Add();
  }
  void FileDescriptorProto::add_dependency(const ::std::string& value) {
    dependency_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.dependency)
  }
  #if LANG_CXX11
  void FileDescriptorProto::add_dependency(::std::string&& value) {
    dependency_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.dependency)
  }
  #endif
  void FileDescriptorProto::add_dependency(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    dependency_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:google.protobuf.FileDescriptorProto.dependency)
  }
  void FileDescriptorProto::add_dependency(const char* value, size_t size) {
    dependency_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:google.protobuf.FileDescriptorProto.dependency)
  }
  const ::google::protobuf::RepeatedPtrField< ::std::string>&
  FileDescriptorProto::dependency() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.dependency)
    return dependency_;
  }
  ::google::protobuf::RepeatedPtrField< ::std::string>*
  FileDescriptorProto::mutable_dependency() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.dependency)
    return &dependency_;
  }
  
  // repeated int32 public_dependency = 10;
  int FileDescriptorProto::public_dependency_size() const {
    return public_dependency_.size();
  }
  void FileDescriptorProto::clear_public_dependency() {
    public_dependency_.Clear();
  }
  ::google::protobuf::int32 FileDescriptorProto::public_dependency(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.public_dependency)
    return public_dependency_.Get(index);
  }
  void FileDescriptorProto::set_public_dependency(int index, ::google::protobuf::int32 value) {
    public_dependency_.Set(index, value);
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.public_dependency)
  }
  void FileDescriptorProto::add_public_dependency(::google::protobuf::int32 value) {
    public_dependency_.Add(value);
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.public_dependency)
  }
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
  FileDescriptorProto::public_dependency() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.public_dependency)
    return public_dependency_;
  }
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
  FileDescriptorProto::mutable_public_dependency() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.public_dependency)
    return &public_dependency_;
  }
  
  // repeated int32 weak_dependency = 11;
  int FileDescriptorProto::weak_dependency_size() const {
    return weak_dependency_.size();
  }
  void FileDescriptorProto::clear_weak_dependency() {
    weak_dependency_.Clear();
  }
  ::google::protobuf::int32 FileDescriptorProto::weak_dependency(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.weak_dependency)
    return weak_dependency_.Get(index);
  }
  void FileDescriptorProto::set_weak_dependency(int index, ::google::protobuf::int32 value) {
    weak_dependency_.Set(index, value);
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.weak_dependency)
  }
  void FileDescriptorProto::add_weak_dependency(::google::protobuf::int32 value) {
    weak_dependency_.Add(value);
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.weak_dependency)
  }
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
  FileDescriptorProto::weak_dependency() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.weak_dependency)
    return weak_dependency_;
  }
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
  FileDescriptorProto::mutable_weak_dependency() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.weak_dependency)
    return &weak_dependency_;
  }
  
  // repeated .google.protobuf.DescriptorProto message_type = 4;
  int FileDescriptorProto::message_type_size() const {
    return message_type_.size();
  }
  void FileDescriptorProto::clear_message_type() {
    message_type_.Clear();
  }
  const ::google::protobuf::DescriptorProto& FileDescriptorProto::message_type(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.message_type)
    return message_type_.Get(index);
  }
  ::google::protobuf::DescriptorProto* FileDescriptorProto::mutable_message_type(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.message_type)
    return message_type_.Mutable(index);
  }
  ::google::protobuf::DescriptorProto* FileDescriptorProto::add_message_type() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.message_type)
    return message_type_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >*
  FileDescriptorProto::mutable_message_type() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.message_type)
    return &message_type_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >&
  FileDescriptorProto::message_type() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.message_type)
    return message_type_;
  }
  
  // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
  int FileDescriptorProto::enum_type_size() const {
    return enum_type_.size();
  }
  void FileDescriptorProto::clear_enum_type() {
    enum_type_.Clear();
  }
  const ::google::protobuf::EnumDescriptorProto& FileDescriptorProto::enum_type(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.enum_type)
    return enum_type_.Get(index);
  }
  ::google::protobuf::EnumDescriptorProto* FileDescriptorProto::mutable_enum_type(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.enum_type)
    return enum_type_.Mutable(index);
  }
  ::google::protobuf::EnumDescriptorProto* FileDescriptorProto::add_enum_type() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.enum_type)
    return enum_type_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >*
  FileDescriptorProto::mutable_enum_type() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.enum_type)
    return &enum_type_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >&
  FileDescriptorProto::enum_type() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.enum_type)
    return enum_type_;
  }
  
  // repeated .google.protobuf.ServiceDescriptorProto service = 6;
  int FileDescriptorProto::service_size() const {
    return service_.size();
  }
  void FileDescriptorProto::clear_service() {
    service_.Clear();
  }
  const ::google::protobuf::ServiceDescriptorProto& FileDescriptorProto::service(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.service)
    return service_.Get(index);
  }
  ::google::protobuf::ServiceDescriptorProto* FileDescriptorProto::mutable_service(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.service)
    return service_.Mutable(index);
  }
  ::google::protobuf::ServiceDescriptorProto* FileDescriptorProto::add_service() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.service)
    return service_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::ServiceDescriptorProto >*
  FileDescriptorProto::mutable_service() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.service)
    return &service_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::ServiceDescriptorProto >&
  FileDescriptorProto::service() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.service)
    return service_;
  }
  
  // repeated .google.protobuf.FieldDescriptorProto extension = 7;
  int FileDescriptorProto::extension_size() const {
    return extension_.size();
  }
  void FileDescriptorProto::clear_extension() {
    extension_.Clear();
  }
  const ::google::protobuf::FieldDescriptorProto& FileDescriptorProto::extension(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.extension)
    return extension_.Get(index);
  }
  ::google::protobuf::FieldDescriptorProto* FileDescriptorProto::mutable_extension(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.extension)
    return extension_.Mutable(index);
  }
  ::google::protobuf::FieldDescriptorProto* FileDescriptorProto::add_extension() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.extension)
    return extension_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >*
  FileDescriptorProto::mutable_extension() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.extension)
    return &extension_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >&
  FileDescriptorProto::extension() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.extension)
    return extension_;
  }
  
  // optional .google.protobuf.FileOptions options = 8;
  bool FileDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void FileDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000008u;
  }
  void FileDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void FileDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::FileOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::FileOptions& FileDescriptorProto::options() const {
    const ::google::protobuf::FileOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::FileOptions*>(
        &::google::protobuf::_FileOptions_default_instance_);
  }
  ::google::protobuf::FileOptions* FileDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::FileOptions* FileDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::FileOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void FileDescriptorProto::set_allocated_options(::google::protobuf::FileOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.options)
  }
  
  // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
  bool FileDescriptorProto::has_source_code_info() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void FileDescriptorProto::set_has_source_code_info() {
    _has_bits_[0] |= 0x00000010u;
  }
  void FileDescriptorProto::clear_has_source_code_info() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void FileDescriptorProto::clear_source_code_info() {
    if (source_code_info_ != NULL) source_code_info_->::google::protobuf::SourceCodeInfo::Clear();
    clear_has_source_code_info();
  }
  const ::google::protobuf::SourceCodeInfo& FileDescriptorProto::source_code_info() const {
    const ::google::protobuf::SourceCodeInfo* p = source_code_info_;
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.source_code_info)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::SourceCodeInfo*>(
        &::google::protobuf::_SourceCodeInfo_default_instance_);
  }
  ::google::protobuf::SourceCodeInfo* FileDescriptorProto::mutable_source_code_info() {
    set_has_source_code_info();
    if (source_code_info_ == NULL) {
      _slow_mutable_source_code_info();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.source_code_info)
    return source_code_info_;
  }
  ::google::protobuf::SourceCodeInfo* FileDescriptorProto::release_source_code_info() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.source_code_info)
    clear_has_source_code_info();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_source_code_info();
    } else {
      ::google::protobuf::SourceCodeInfo* temp = source_code_info_;
      source_code_info_ = NULL;
      return temp;
    }
  }
   void FileDescriptorProto::set_allocated_source_code_info(::google::protobuf::SourceCodeInfo* source_code_info) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete source_code_info_;
    }
    if (source_code_info != NULL) {
      _slow_set_allocated_source_code_info(message_arena, &source_code_info);
    }
    source_code_info_ = source_code_info;
    if (source_code_info) {
      set_has_source_code_info();
    } else {
      clear_has_source_code_info();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.source_code_info)
  }
  
  // optional string syntax = 12;
  bool FileDescriptorProto::has_syntax() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void FileDescriptorProto::set_has_syntax() {
    _has_bits_[0] |= 0x00000004u;
  }
  void FileDescriptorProto::clear_has_syntax() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void FileDescriptorProto::clear_syntax() {
    syntax_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_syntax();
  }
  const ::std::string& FileDescriptorProto::syntax() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.syntax)
    return syntax_.Get();
  }
  void FileDescriptorProto::set_syntax(const ::std::string& value) {
    set_has_syntax();
    syntax_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.syntax)
  }
  #if LANG_CXX11
  void FileDescriptorProto::set_syntax(::std::string&& value) {
    set_has_syntax();
    syntax_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileDescriptorProto.syntax)
  }
  #endif
  void FileDescriptorProto::set_syntax(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_syntax();
    syntax_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileDescriptorProto.syntax)
  }
  void FileDescriptorProto::set_syntax(const char* value,
      size_t size) {
    set_has_syntax();
    syntax_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileDescriptorProto.syntax)
  }
  ::std::string* FileDescriptorProto::mutable_syntax() {
    set_has_syntax();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.syntax)
    return syntax_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::release_syntax() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.syntax)
    clear_has_syntax();
    return syntax_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileDescriptorProto::unsafe_arena_release_syntax() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileDescriptorProto.syntax)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_syntax();
    return syntax_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileDescriptorProto::set_allocated_syntax(::std::string* syntax) {
    if (syntax != NULL) {
      set_has_syntax();
    } else {
      clear_has_syntax();
    }
    syntax_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), syntax,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.syntax)
  }
  void FileDescriptorProto::unsafe_arena_set_allocated_syntax(
      ::std::string* syntax) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (syntax != NULL) {
      set_has_syntax();
    } else {
      clear_has_syntax();
    }
    syntax_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        syntax, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.syntax)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void DescriptorProto_ExtensionRange::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::ExtensionRangeOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::ExtensionRangeOptions* DescriptorProto_ExtensionRange::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::ExtensionRangeOptions* temp = new ::google::protobuf::ExtensionRangeOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::ExtensionRangeOptions* DescriptorProto_ExtensionRange::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.DescriptorProto.ExtensionRange.options)
    clear_has_options();
    ::google::protobuf::ExtensionRangeOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void DescriptorProto_ExtensionRange::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::ExtensionRangeOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::ExtensionRangeOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::ExtensionRangeOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void DescriptorProto_ExtensionRange::unsafe_arena_set_allocated_options(
      ::google::protobuf::ExtensionRangeOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.DescriptorProto.ExtensionRange.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int DescriptorProto_ExtensionRange::kStartFieldNumber;
  const int DescriptorProto_ExtensionRange::kEndFieldNumber;
  const int DescriptorProto_ExtensionRange::kOptionsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.DescriptorProto.ExtensionRange)
  }
  DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ExtensionRange)
  }
  DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(const DescriptorProto_ExtensionRange& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    if (from.has_options()) {
      options_ = new ::google::protobuf::ExtensionRangeOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    ::memcpy(&start_, &from.start_,
      static_cast<size_t>(reinterpret_cast<char*>(&end_) -
      reinterpret_cast<char*>(&start_)) + sizeof(end_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto.ExtensionRange)
  }
  
  void DescriptorProto_ExtensionRange::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&options_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&options_)) + sizeof(end_));
  }
  
  DescriptorProto_ExtensionRange::~DescriptorProto_ExtensionRange() {
    // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ExtensionRange)
    SharedDtor();
  }
  
  void DescriptorProto_ExtensionRange::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    if (this != internal_default_instance()) delete options_;
  }
  
  void DescriptorProto_ExtensionRange::ArenaDtor(void* object) {
    DescriptorProto_ExtensionRange* _this = reinterpret_cast< DescriptorProto_ExtensionRange* >(object);
    (void)_this;
  }
  void DescriptorProto_ExtensionRange::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void DescriptorProto_ExtensionRange::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* DescriptorProto_ExtensionRange::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const DescriptorProto_ExtensionRange& DescriptorProto_ExtensionRange::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  DescriptorProto_ExtensionRange* DescriptorProto_ExtensionRange::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<DescriptorProto_ExtensionRange>(arena);
  }
  
  void DescriptorProto_ExtensionRange::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto.ExtensionRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    if (has_options()) {
      GOOGLE_DCHECK(options_ != NULL);
      options_->::google::protobuf::ExtensionRangeOptions::Clear();
    }
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 6u) {
      ::memset(&start_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&end_) -
          reinterpret_cast<char*>(&start_)) + sizeof(end_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool DescriptorProto_ExtensionRange::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.DescriptorProto.ExtensionRange)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional int32 start = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_start();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &start_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 end = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_end();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &end_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.ExtensionRangeOptions options = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.DescriptorProto.ExtensionRange)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.DescriptorProto.ExtensionRange)
    return false;
  #undef DO_
  }
  
  void DescriptorProto_ExtensionRange::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.DescriptorProto.ExtensionRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->start(), output);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->end(), output);
    }
  
    // optional .google.protobuf.ExtensionRangeOptions options = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        3, *this->options_, output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto.ExtensionRange)
  }
  
  ::google::protobuf::uint8* DescriptorProto_ExtensionRange::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ExtensionRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->start(), target);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000004u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->end(), target);
    }
  
    // optional .google.protobuf.ExtensionRangeOptions options = 3;
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          3, *this->options_, deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ExtensionRange)
    return target;
  }
  
  size_t DescriptorProto_ExtensionRange::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ExtensionRange)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 7u) {
      // optional .google.protobuf.ExtensionRangeOptions options = 3;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
      // optional int32 start = 1;
      if (has_start()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->start());
      }
  
      // optional int32 end = 2;
      if (has_end()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->end());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void DescriptorProto_ExtensionRange::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.DescriptorProto.ExtensionRange)
    GOOGLE_DCHECK_NE(&from, this);
    const DescriptorProto_ExtensionRange* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const DescriptorProto_ExtensionRange>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.DescriptorProto.ExtensionRange)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.DescriptorProto.ExtensionRange)
      MergeFrom(*source);
    }
  }
  
  void DescriptorProto_ExtensionRange::MergeFrom(const DescriptorProto_ExtensionRange& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ExtensionRange)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        mutable_options()->::google::protobuf::ExtensionRangeOptions::MergeFrom(from.options());
      }
      if (cached_has_bits & 0x00000002u) {
        start_ = from.start_;
      }
      if (cached_has_bits & 0x00000004u) {
        end_ = from.end_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void DescriptorProto_ExtensionRange::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.DescriptorProto.ExtensionRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void DescriptorProto_ExtensionRange::CopyFrom(const DescriptorProto_ExtensionRange& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.DescriptorProto.ExtensionRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool DescriptorProto_ExtensionRange::IsInitialized() const {
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void DescriptorProto_ExtensionRange::Swap(DescriptorProto_ExtensionRange* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      DescriptorProto_ExtensionRange* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void DescriptorProto_ExtensionRange::UnsafeArenaSwap(DescriptorProto_ExtensionRange* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void DescriptorProto_ExtensionRange::InternalSwap(DescriptorProto_ExtensionRange* other) {
    using std::swap;
    swap(options_, other->options_);
    swap(start_, other->start_);
    swap(end_, other->end_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata DescriptorProto_ExtensionRange::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // DescriptorProto_ExtensionRange
  
  // optional int32 start = 1;
  bool DescriptorProto_ExtensionRange::has_start() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void DescriptorProto_ExtensionRange::set_has_start() {
    _has_bits_[0] |= 0x00000002u;
  }
  void DescriptorProto_ExtensionRange::clear_has_start() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void DescriptorProto_ExtensionRange::clear_start() {
    start_ = 0;
    clear_has_start();
  }
  ::google::protobuf::int32 DescriptorProto_ExtensionRange::start() const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.start)
    return start_;
  }
  void DescriptorProto_ExtensionRange::set_start(::google::protobuf::int32 value) {
    set_has_start();
    start_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ExtensionRange.start)
  }
  
  // optional int32 end = 2;
  bool DescriptorProto_ExtensionRange::has_end() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void DescriptorProto_ExtensionRange::set_has_end() {
    _has_bits_[0] |= 0x00000004u;
  }
  void DescriptorProto_ExtensionRange::clear_has_end() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void DescriptorProto_ExtensionRange::clear_end() {
    end_ = 0;
    clear_has_end();
  }
  ::google::protobuf::int32 DescriptorProto_ExtensionRange::end() const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.end)
    return end_;
  }
  void DescriptorProto_ExtensionRange::set_end(::google::protobuf::int32 value) {
    set_has_end();
    end_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ExtensionRange.end)
  }
  
  // optional .google.protobuf.ExtensionRangeOptions options = 3;
  bool DescriptorProto_ExtensionRange::has_options() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void DescriptorProto_ExtensionRange::set_has_options() {
    _has_bits_[0] |= 0x00000001u;
  }
  void DescriptorProto_ExtensionRange::clear_has_options() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void DescriptorProto_ExtensionRange::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::ExtensionRangeOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::ExtensionRangeOptions& DescriptorProto_ExtensionRange::options() const {
    const ::google::protobuf::ExtensionRangeOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::ExtensionRangeOptions*>(
        &::google::protobuf::_ExtensionRangeOptions_default_instance_);
  }
  ::google::protobuf::ExtensionRangeOptions* DescriptorProto_ExtensionRange::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.ExtensionRange.options)
    return options_;
  }
  ::google::protobuf::ExtensionRangeOptions* DescriptorProto_ExtensionRange::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.ExtensionRange.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::ExtensionRangeOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void DescriptorProto_ExtensionRange::set_allocated_options(::google::protobuf::ExtensionRangeOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.ExtensionRange.options)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int DescriptorProto_ReservedRange::kStartFieldNumber;
  const int DescriptorProto_ReservedRange::kEndFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  DescriptorProto_ReservedRange::DescriptorProto_ReservedRange()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.DescriptorProto.ReservedRange)
  }
  DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ReservedRange)
  }
  DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(const DescriptorProto_ReservedRange& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::memcpy(&start_, &from.start_,
      static_cast<size_t>(reinterpret_cast<char*>(&end_) -
      reinterpret_cast<char*>(&start_)) + sizeof(end_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto.ReservedRange)
  }
  
  void DescriptorProto_ReservedRange::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&start_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&start_)) + sizeof(end_));
  }
  
  DescriptorProto_ReservedRange::~DescriptorProto_ReservedRange() {
    // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ReservedRange)
    SharedDtor();
  }
  
  void DescriptorProto_ReservedRange::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void DescriptorProto_ReservedRange::ArenaDtor(void* object) {
    DescriptorProto_ReservedRange* _this = reinterpret_cast< DescriptorProto_ReservedRange* >(object);
    (void)_this;
  }
  void DescriptorProto_ReservedRange::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void DescriptorProto_ReservedRange::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* DescriptorProto_ReservedRange::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const DescriptorProto_ReservedRange& DescriptorProto_ReservedRange::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  DescriptorProto_ReservedRange* DescriptorProto_ReservedRange::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<DescriptorProto_ReservedRange>(arena);
  }
  
  void DescriptorProto_ReservedRange::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto.ReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      ::memset(&start_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&end_) -
          reinterpret_cast<char*>(&start_)) + sizeof(end_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool DescriptorProto_ReservedRange::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.DescriptorProto.ReservedRange)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional int32 start = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_start();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &start_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 end = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_end();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &end_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.DescriptorProto.ReservedRange)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.DescriptorProto.ReservedRange)
    return false;
  #undef DO_
  }
  
  void DescriptorProto_ReservedRange::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.DescriptorProto.ReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->start(), output);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->end(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto.ReservedRange)
  }
  
  ::google::protobuf::uint8* DescriptorProto_ReservedRange::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->start(), target);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->end(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ReservedRange)
    return target;
  }
  
  size_t DescriptorProto_ReservedRange::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ReservedRange)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 3u) {
      // optional int32 start = 1;
      if (has_start()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->start());
      }
  
      // optional int32 end = 2;
      if (has_end()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->end());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void DescriptorProto_ReservedRange::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.DescriptorProto.ReservedRange)
    GOOGLE_DCHECK_NE(&from, this);
    const DescriptorProto_ReservedRange* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const DescriptorProto_ReservedRange>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.DescriptorProto.ReservedRange)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.DescriptorProto.ReservedRange)
      MergeFrom(*source);
    }
  }
  
  void DescriptorProto_ReservedRange::MergeFrom(const DescriptorProto_ReservedRange& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ReservedRange)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        start_ = from.start_;
      }
      if (cached_has_bits & 0x00000002u) {
        end_ = from.end_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void DescriptorProto_ReservedRange::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.DescriptorProto.ReservedRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void DescriptorProto_ReservedRange::CopyFrom(const DescriptorProto_ReservedRange& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.DescriptorProto.ReservedRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool DescriptorProto_ReservedRange::IsInitialized() const {
    return true;
  }
  
  void DescriptorProto_ReservedRange::Swap(DescriptorProto_ReservedRange* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      DescriptorProto_ReservedRange* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void DescriptorProto_ReservedRange::UnsafeArenaSwap(DescriptorProto_ReservedRange* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void DescriptorProto_ReservedRange::InternalSwap(DescriptorProto_ReservedRange* other) {
    using std::swap;
    swap(start_, other->start_);
    swap(end_, other->end_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata DescriptorProto_ReservedRange::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // DescriptorProto_ReservedRange
  
  // optional int32 start = 1;
  bool DescriptorProto_ReservedRange::has_start() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void DescriptorProto_ReservedRange::set_has_start() {
    _has_bits_[0] |= 0x00000001u;
  }
  void DescriptorProto_ReservedRange::clear_has_start() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void DescriptorProto_ReservedRange::clear_start() {
    start_ = 0;
    clear_has_start();
  }
  ::google::protobuf::int32 DescriptorProto_ReservedRange::start() const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ReservedRange.start)
    return start_;
  }
  void DescriptorProto_ReservedRange::set_start(::google::protobuf::int32 value) {
    set_has_start();
    start_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ReservedRange.start)
  }
  
  // optional int32 end = 2;
  bool DescriptorProto_ReservedRange::has_end() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void DescriptorProto_ReservedRange::set_has_end() {
    _has_bits_[0] |= 0x00000002u;
  }
  void DescriptorProto_ReservedRange::clear_has_end() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void DescriptorProto_ReservedRange::clear_end() {
    end_ = 0;
    clear_has_end();
  }
  ::google::protobuf::int32 DescriptorProto_ReservedRange::end() const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ReservedRange.end)
    return end_;
  }
  void DescriptorProto_ReservedRange::set_end(::google::protobuf::int32 value) {
    set_has_end();
    end_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ReservedRange.end)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void DescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::MessageOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::MessageOptions* DescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::MessageOptions* temp = new ::google::protobuf::MessageOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::MessageOptions* DescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.DescriptorProto.options)
    clear_has_options();
    ::google::protobuf::MessageOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void DescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::MessageOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::MessageOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::MessageOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void DescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::MessageOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.DescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int DescriptorProto::kNameFieldNumber;
  const int DescriptorProto::kFieldFieldNumber;
  const int DescriptorProto::kExtensionFieldNumber;
  const int DescriptorProto::kNestedTypeFieldNumber;
  const int DescriptorProto::kEnumTypeFieldNumber;
  const int DescriptorProto::kExtensionRangeFieldNumber;
  const int DescriptorProto::kOneofDeclFieldNumber;
  const int DescriptorProto::kOptionsFieldNumber;
  const int DescriptorProto::kReservedRangeFieldNumber;
  const int DescriptorProto::kReservedNameFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  DescriptorProto::DescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.DescriptorProto)
  }
  DescriptorProto::DescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    field_(arena),
    nested_type_(arena),
    enum_type_(arena),
    extension_range_(arena),
    extension_(arena),
    oneof_decl_(arena),
    reserved_range_(arena),
    reserved_name_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto)
  }
  DescriptorProto::DescriptorProto(const DescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        field_(from.field_),
        nested_type_(from.nested_type_),
        enum_type_(from.enum_type_),
        extension_range_(from.extension_range_),
        extension_(from.extension_),
        oneof_decl_(from.oneof_decl_),
        reserved_range_(from.reserved_range_),
        reserved_name_(from.reserved_name_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::MessageOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto)
  }
  
  void DescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    options_ = NULL;
  }
  
  DescriptorProto::~DescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto)
    SharedDtor();
  }
  
  void DescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void DescriptorProto::ArenaDtor(void* object) {
    DescriptorProto* _this = reinterpret_cast< DescriptorProto* >(object);
    (void)_this;
  }
  void DescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void DescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* DescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const DescriptorProto& DescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  DescriptorProto* DescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<DescriptorProto>(arena);
  }
  
  void DescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    field_.Clear();
    nested_type_.Clear();
    enum_type_.Clear();
    extension_range_.Clear();
    extension_.Clear();
    oneof_decl_.Clear();
    reserved_range_.Clear();
    reserved_name_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::MessageOptions::Clear();
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool DescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.DescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.DescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.FieldDescriptorProto field = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_field()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.DescriptorProto nested_type = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_nested_type()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_enum_type()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_extension_range()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.FieldDescriptorProto extension = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_extension()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.MessageOptions options = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_oneof_decl()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
        case 9: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_reserved_range()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated string reserved_name = 10;
        case 10: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->add_reserved_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->reserved_name(this->reserved_name_size() - 1).data(),
              static_cast<int>(this->reserved_name(this->reserved_name_size() - 1).length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.DescriptorProto.reserved_name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.DescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.DescriptorProto)
    return false;
  #undef DO_
  }
  
  void DescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.DescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.DescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto field = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->field_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        2, this->field(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.DescriptorProto nested_type = 3;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->nested_type_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        3, this->nested_type(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->enum_type_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        4, this->enum_type(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_range_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        5, this->extension_range(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        6, this->extension(static_cast<int>(i)), output);
    }
  
    // optional .google.protobuf.MessageOptions options = 7;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        7, *this->options_, output);
    }
  
    // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->oneof_decl_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        8, this->oneof_decl(static_cast<int>(i)), output);
    }
  
    // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->reserved_range_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        9, this->reserved_range(static_cast<int>(i)), output);
    }
  
    // repeated string reserved_name = 10;
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->reserved_name(i).data(), static_cast<int>(this->reserved_name(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.DescriptorProto.reserved_name");
      ::google::protobuf::internal::WireFormatLite::WriteString(
        10, this->reserved_name(i), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto)
  }
  
  ::google::protobuf::uint8* DescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.DescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto field = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->field_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          2, this->field(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.DescriptorProto nested_type = 3;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->nested_type_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          3, this->nested_type(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->enum_type_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          4, this->enum_type(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_range_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          5, this->extension_range(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->extension_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          6, this->extension(static_cast<int>(i)), deterministic, target);
    }
  
    // optional .google.protobuf.MessageOptions options = 7;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          7, *this->options_, deterministic, target);
    }
  
    // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->oneof_decl_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          8, this->oneof_decl(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->reserved_range_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          9, this->reserved_range(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated string reserved_name = 10;
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->reserved_name(i).data(), static_cast<int>(this->reserved_name(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.DescriptorProto.reserved_name");
      target = ::google::protobuf::internal::WireFormatLite::
        WriteStringToArray(10, this->reserved_name(i), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto)
    return target;
  }
  
  size_t DescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.FieldDescriptorProto field = 2;
    {
      unsigned int count = static_cast<unsigned int>(this->field_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->field(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.DescriptorProto nested_type = 3;
    {
      unsigned int count = static_cast<unsigned int>(this->nested_type_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->nested_type(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
    {
      unsigned int count = static_cast<unsigned int>(this->enum_type_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->enum_type(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
    {
      unsigned int count = static_cast<unsigned int>(this->extension_range_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->extension_range(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.FieldDescriptorProto extension = 6;
    {
      unsigned int count = static_cast<unsigned int>(this->extension_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->extension(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
    {
      unsigned int count = static_cast<unsigned int>(this->oneof_decl_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->oneof_decl(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
    {
      unsigned int count = static_cast<unsigned int>(this->reserved_range_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->reserved_range(static_cast<int>(i)));
      }
    }
  
    // repeated string reserved_name = 10;
    total_size += 1 *
        ::google::protobuf::internal::FromIntSize(this->reserved_name_size());
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
        this->reserved_name(i));
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional .google.protobuf.MessageOptions options = 7;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void DescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.DescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const DescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const DescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.DescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.DescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void DescriptorProto::MergeFrom(const DescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    field_.MergeFrom(from.field_);
    nested_type_.MergeFrom(from.nested_type_);
    enum_type_.MergeFrom(from.enum_type_);
    extension_range_.MergeFrom(from.extension_range_);
    extension_.MergeFrom(from.extension_);
    oneof_decl_.MergeFrom(from.oneof_decl_);
    reserved_range_.MergeFrom(from.reserved_range_);
    reserved_name_.MergeFrom(from.reserved_name_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        mutable_options()->::google::protobuf::MessageOptions::MergeFrom(from.options());
      }
    }
  }
  
  void DescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.DescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void DescriptorProto::CopyFrom(const DescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.DescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool DescriptorProto::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->field())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->nested_type())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->enum_type())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->extension_range())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->extension())) return false;
    if (!::google::protobuf::internal::AllAreInitialized(this->oneof_decl())) return false;
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void DescriptorProto::Swap(DescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      DescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void DescriptorProto::UnsafeArenaSwap(DescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void DescriptorProto::InternalSwap(DescriptorProto* other) {
    using std::swap;
    field_.InternalSwap(&other->field_);
    nested_type_.InternalSwap(&other->nested_type_);
    enum_type_.InternalSwap(&other->enum_type_);
    extension_range_.InternalSwap(&other->extension_range_);
    extension_.InternalSwap(&other->extension_);
    oneof_decl_.InternalSwap(&other->oneof_decl_);
    reserved_range_.InternalSwap(&other->reserved_range_);
    reserved_name_.InternalSwap(&other->reserved_name_);
    name_.Swap(&other->name_);
    swap(options_, other->options_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata DescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // DescriptorProto
  
  // optional string name = 1;
  bool DescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void DescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void DescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void DescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& DescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.name)
    return name_.Get();
  }
  void DescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.name)
  }
  #if LANG_CXX11
  void DescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.DescriptorProto.name)
  }
  #endif
  void DescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.DescriptorProto.name)
  }
  void DescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.DescriptorProto.name)
  }
  ::std::string* DescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* DescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* DescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.DescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void DescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.name)
  }
  void DescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.DescriptorProto.name)
  }
  
  // repeated .google.protobuf.FieldDescriptorProto field = 2;
  int DescriptorProto::field_size() const {
    return field_.size();
  }
  void DescriptorProto::clear_field() {
    field_.Clear();
  }
  const ::google::protobuf::FieldDescriptorProto& DescriptorProto::field(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.field)
    return field_.Get(index);
  }
  ::google::protobuf::FieldDescriptorProto* DescriptorProto::mutable_field(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.field)
    return field_.Mutable(index);
  }
  ::google::protobuf::FieldDescriptorProto* DescriptorProto::add_field() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.field)
    return field_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >*
  DescriptorProto::mutable_field() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.field)
    return &field_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >&
  DescriptorProto::field() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.field)
    return field_;
  }
  
  // repeated .google.protobuf.FieldDescriptorProto extension = 6;
  int DescriptorProto::extension_size() const {
    return extension_.size();
  }
  void DescriptorProto::clear_extension() {
    extension_.Clear();
  }
  const ::google::protobuf::FieldDescriptorProto& DescriptorProto::extension(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.extension)
    return extension_.Get(index);
  }
  ::google::protobuf::FieldDescriptorProto* DescriptorProto::mutable_extension(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.extension)
    return extension_.Mutable(index);
  }
  ::google::protobuf::FieldDescriptorProto* DescriptorProto::add_extension() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.extension)
    return extension_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >*
  DescriptorProto::mutable_extension() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.extension)
    return &extension_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::FieldDescriptorProto >&
  DescriptorProto::extension() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.extension)
    return extension_;
  }
  
  // repeated .google.protobuf.DescriptorProto nested_type = 3;
  int DescriptorProto::nested_type_size() const {
    return nested_type_.size();
  }
  void DescriptorProto::clear_nested_type() {
    nested_type_.Clear();
  }
  const ::google::protobuf::DescriptorProto& DescriptorProto::nested_type(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.nested_type)
    return nested_type_.Get(index);
  }
  ::google::protobuf::DescriptorProto* DescriptorProto::mutable_nested_type(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.nested_type)
    return nested_type_.Mutable(index);
  }
  ::google::protobuf::DescriptorProto* DescriptorProto::add_nested_type() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.nested_type)
    return nested_type_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >*
  DescriptorProto::mutable_nested_type() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.nested_type)
    return &nested_type_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto >&
  DescriptorProto::nested_type() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.nested_type)
    return nested_type_;
  }
  
  // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
  int DescriptorProto::enum_type_size() const {
    return enum_type_.size();
  }
  void DescriptorProto::clear_enum_type() {
    enum_type_.Clear();
  }
  const ::google::protobuf::EnumDescriptorProto& DescriptorProto::enum_type(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.enum_type)
    return enum_type_.Get(index);
  }
  ::google::protobuf::EnumDescriptorProto* DescriptorProto::mutable_enum_type(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.enum_type)
    return enum_type_.Mutable(index);
  }
  ::google::protobuf::EnumDescriptorProto* DescriptorProto::add_enum_type() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.enum_type)
    return enum_type_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >*
  DescriptorProto::mutable_enum_type() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.enum_type)
    return &enum_type_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto >&
  DescriptorProto::enum_type() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.enum_type)
    return enum_type_;
  }
  
  // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
  int DescriptorProto::extension_range_size() const {
    return extension_range_.size();
  }
  void DescriptorProto::clear_extension_range() {
    extension_range_.Clear();
  }
  const ::google::protobuf::DescriptorProto_ExtensionRange& DescriptorProto::extension_range(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.extension_range)
    return extension_range_.Get(index);
  }
  ::google::protobuf::DescriptorProto_ExtensionRange* DescriptorProto::mutable_extension_range(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.extension_range)
    return extension_range_.Mutable(index);
  }
  ::google::protobuf::DescriptorProto_ExtensionRange* DescriptorProto::add_extension_range() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.extension_range)
    return extension_range_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ExtensionRange >*
  DescriptorProto::mutable_extension_range() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.extension_range)
    return &extension_range_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ExtensionRange >&
  DescriptorProto::extension_range() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.extension_range)
    return extension_range_;
  }
  
  // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
  int DescriptorProto::oneof_decl_size() const {
    return oneof_decl_.size();
  }
  void DescriptorProto::clear_oneof_decl() {
    oneof_decl_.Clear();
  }
  const ::google::protobuf::OneofDescriptorProto& DescriptorProto::oneof_decl(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.oneof_decl)
    return oneof_decl_.Get(index);
  }
  ::google::protobuf::OneofDescriptorProto* DescriptorProto::mutable_oneof_decl(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.oneof_decl)
    return oneof_decl_.Mutable(index);
  }
  ::google::protobuf::OneofDescriptorProto* DescriptorProto::add_oneof_decl() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.oneof_decl)
    return oneof_decl_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::OneofDescriptorProto >*
  DescriptorProto::mutable_oneof_decl() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.oneof_decl)
    return &oneof_decl_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::OneofDescriptorProto >&
  DescriptorProto::oneof_decl() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.oneof_decl)
    return oneof_decl_;
  }
  
  // optional .google.protobuf.MessageOptions options = 7;
  bool DescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void DescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000002u;
  }
  void DescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void DescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::MessageOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::MessageOptions& DescriptorProto::options() const {
    const ::google::protobuf::MessageOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::MessageOptions*>(
        &::google::protobuf::_MessageOptions_default_instance_);
  }
  ::google::protobuf::MessageOptions* DescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.options)
    return options_;
  }
  ::google::protobuf::MessageOptions* DescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::MessageOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void DescriptorProto::set_allocated_options(::google::protobuf::MessageOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.options)
  }
  
  // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
  int DescriptorProto::reserved_range_size() const {
    return reserved_range_.size();
  }
  void DescriptorProto::clear_reserved_range() {
    reserved_range_.Clear();
  }
  const ::google::protobuf::DescriptorProto_ReservedRange& DescriptorProto::reserved_range(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.reserved_range)
    return reserved_range_.Get(index);
  }
  ::google::protobuf::DescriptorProto_ReservedRange* DescriptorProto::mutable_reserved_range(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.reserved_range)
    return reserved_range_.Mutable(index);
  }
  ::google::protobuf::DescriptorProto_ReservedRange* DescriptorProto::add_reserved_range() {
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_range)
    return reserved_range_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ReservedRange >*
  DescriptorProto::mutable_reserved_range() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.reserved_range)
    return &reserved_range_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::DescriptorProto_ReservedRange >&
  DescriptorProto::reserved_range() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.reserved_range)
    return reserved_range_;
  }
  
  // repeated string reserved_name = 10;
  int DescriptorProto::reserved_name_size() const {
    return reserved_name_.size();
  }
  void DescriptorProto::clear_reserved_name() {
    reserved_name_.Clear();
  }
  const ::std::string& DescriptorProto::reserved_name(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.reserved_name)
    return reserved_name_.Get(index);
  }
  ::std::string* DescriptorProto::mutable_reserved_name(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.reserved_name)
    return reserved_name_.Mutable(index);
  }
  void DescriptorProto::set_reserved_name(int index, const ::std::string& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.reserved_name)
    reserved_name_.Mutable(index)->assign(value);
  }
  #if LANG_CXX11
  void DescriptorProto::set_reserved_name(int index, ::std::string&& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.reserved_name)
    reserved_name_.Mutable(index)->assign(std::move(value));
  }
  #endif
  void DescriptorProto::set_reserved_name(int index, const char* value) {
    GOOGLE_DCHECK(value != NULL);
    reserved_name_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:google.protobuf.DescriptorProto.reserved_name)
  }
  void DescriptorProto::set_reserved_name(int index, const char* value, size_t size) {
    reserved_name_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.DescriptorProto.reserved_name)
  }
  ::std::string* DescriptorProto::add_reserved_name() {
    // @@protoc_insertion_point(field_add_mutable:google.protobuf.DescriptorProto.reserved_name)
    return reserved_name_.Add();
  }
  void DescriptorProto::add_reserved_name(const ::std::string& value) {
    reserved_name_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_name)
  }
  #if LANG_CXX11
  void DescriptorProto::add_reserved_name(::std::string&& value) {
    reserved_name_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_name)
  }
  #endif
  void DescriptorProto::add_reserved_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    reserved_name_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:google.protobuf.DescriptorProto.reserved_name)
  }
  void DescriptorProto::add_reserved_name(const char* value, size_t size) {
    reserved_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:google.protobuf.DescriptorProto.reserved_name)
  }
  const ::google::protobuf::RepeatedPtrField< ::std::string>&
  DescriptorProto::reserved_name() const {
    // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.reserved_name)
    return reserved_name_;
  }
  ::google::protobuf::RepeatedPtrField< ::std::string>*
  DescriptorProto::mutable_reserved_name() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.reserved_name)
    return &reserved_name_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int ExtensionRangeOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  ExtensionRangeOptions::ExtensionRangeOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.ExtensionRangeOptions)
  }
  ExtensionRangeOptions::ExtensionRangeOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.ExtensionRangeOptions)
  }
  ExtensionRangeOptions::ExtensionRangeOptions(const ExtensionRangeOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    // @@protoc_insertion_point(copy_constructor:google.protobuf.ExtensionRangeOptions)
  }
  
  void ExtensionRangeOptions::SharedCtor() {
    _cached_size_ = 0;
  }
  
  ExtensionRangeOptions::~ExtensionRangeOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.ExtensionRangeOptions)
    SharedDtor();
  }
  
  void ExtensionRangeOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void ExtensionRangeOptions::ArenaDtor(void* object) {
    ExtensionRangeOptions* _this = reinterpret_cast< ExtensionRangeOptions* >(object);
    (void)_this;
  }
  void ExtensionRangeOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void ExtensionRangeOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* ExtensionRangeOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const ExtensionRangeOptions& ExtensionRangeOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  ExtensionRangeOptions* ExtensionRangeOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<ExtensionRangeOptions>(arena);
  }
  
  void ExtensionRangeOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.ExtensionRangeOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool ExtensionRangeOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.ExtensionRangeOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.ExtensionRangeOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.ExtensionRangeOptions)
    return false;
  #undef DO_
  }
  
  void ExtensionRangeOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.ExtensionRangeOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.ExtensionRangeOptions)
  }
  
  ::google::protobuf::uint8* ExtensionRangeOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ExtensionRangeOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ExtensionRangeOptions)
    return target;
  }
  
  size_t ExtensionRangeOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ExtensionRangeOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void ExtensionRangeOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.ExtensionRangeOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const ExtensionRangeOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const ExtensionRangeOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.ExtensionRangeOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.ExtensionRangeOptions)
      MergeFrom(*source);
    }
  }
  
  void ExtensionRangeOptions::MergeFrom(const ExtensionRangeOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ExtensionRangeOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  }
  
  void ExtensionRangeOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.ExtensionRangeOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void ExtensionRangeOptions::CopyFrom(const ExtensionRangeOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.ExtensionRangeOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool ExtensionRangeOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void ExtensionRangeOptions::Swap(ExtensionRangeOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      ExtensionRangeOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void ExtensionRangeOptions::UnsafeArenaSwap(ExtensionRangeOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void ExtensionRangeOptions::InternalSwap(ExtensionRangeOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata ExtensionRangeOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // ExtensionRangeOptions
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int ExtensionRangeOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void ExtensionRangeOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& ExtensionRangeOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* ExtensionRangeOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* ExtensionRangeOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  ExtensionRangeOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  ExtensionRangeOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void FieldDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::FieldOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::FieldOptions* FieldDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::FieldOptions* temp = new ::google::protobuf::FieldOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::FieldOptions* FieldDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::FieldOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void FieldDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::FieldOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::FieldOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::FieldOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::FieldOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int FieldDescriptorProto::kNameFieldNumber;
  const int FieldDescriptorProto::kNumberFieldNumber;
  const int FieldDescriptorProto::kLabelFieldNumber;
  const int FieldDescriptorProto::kTypeFieldNumber;
  const int FieldDescriptorProto::kTypeNameFieldNumber;
  const int FieldDescriptorProto::kExtendeeFieldNumber;
  const int FieldDescriptorProto::kDefaultValueFieldNumber;
  const int FieldDescriptorProto::kOneofIndexFieldNumber;
  const int FieldDescriptorProto::kJsonNameFieldNumber;
  const int FieldDescriptorProto::kOptionsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  FieldDescriptorProto::FieldDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.FieldDescriptorProto)
  }
  FieldDescriptorProto::FieldDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldDescriptorProto)
  }
  FieldDescriptorProto::FieldDescriptorProto(const FieldDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    extendee_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_extendee()) {
      extendee_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.extendee(),
        GetArenaNoVirtual());
    }
    type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_type_name()) {
      type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_name(),
        GetArenaNoVirtual());
    }
    default_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_default_value()) {
      default_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.default_value(),
        GetArenaNoVirtual());
    }
    json_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_json_name()) {
      json_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.json_name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::FieldOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    ::memcpy(&number_, &from.number_,
      static_cast<size_t>(reinterpret_cast<char*>(&type_) -
      reinterpret_cast<char*>(&number_)) + sizeof(type_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.FieldDescriptorProto)
  }
  
  void FieldDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    extendee_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    type_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    default_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    json_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&options_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&oneof_index_) -
        reinterpret_cast<char*>(&options_)) + sizeof(oneof_index_));
    label_ = 1;
    type_ = 1;
  }
  
  FieldDescriptorProto::~FieldDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.FieldDescriptorProto)
    SharedDtor();
  }
  
  void FieldDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    extendee_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    type_name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    default_value_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    json_name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void FieldDescriptorProto::ArenaDtor(void* object) {
    FieldDescriptorProto* _this = reinterpret_cast< FieldDescriptorProto* >(object);
    (void)_this;
  }
  void FieldDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void FieldDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* FieldDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const FieldDescriptorProto& FieldDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  FieldDescriptorProto* FieldDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<FieldDescriptorProto>(arena);
  }
  
  void FieldDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.FieldDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 63u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!extendee_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        extendee_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000004u) {
        GOOGLE_DCHECK(!type_name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000008u) {
        GOOGLE_DCHECK(!default_value_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        default_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000010u) {
        GOOGLE_DCHECK(!json_name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        json_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000020u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::FieldOptions::Clear();
      }
    }
    if (cached_has_bits & 192u) {
      ::memset(&number_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&oneof_index_) -
          reinterpret_cast<char*>(&number_)) + sizeof(oneof_index_));
    }
    if (cached_has_bits & 768u) {
      label_ = 1;
      type_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool FieldDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.FieldDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FieldDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string extendee = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_extendee()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->extendee().data(), static_cast<int>(this->extendee().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FieldDescriptorProto.extendee");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 number = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_number();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &number_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::FieldDescriptorProto_Label_IsValid(value)) {
              set_label(static_cast< ::google::protobuf::FieldDescriptorProto_Label >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  4, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::FieldDescriptorProto_Type_IsValid(value)) {
              set_type(static_cast< ::google::protobuf::FieldDescriptorProto_Type >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  5, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string type_name = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_type_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->type_name().data(), static_cast<int>(this->type_name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FieldDescriptorProto.type_name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string default_value = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_default_value()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->default_value().data(), static_cast<int>(this->default_value().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FieldDescriptorProto.default_value");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FieldOptions options = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 oneof_index = 9;
        case 9: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
            set_has_oneof_index();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &oneof_index_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string json_name = 10;
        case 10: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_json_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->json_name().data(), static_cast<int>(this->json_name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FieldDescriptorProto.json_name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.FieldDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.FieldDescriptorProto)
    return false;
  #undef DO_
  }
  
  void FieldDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.FieldDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // optional string extendee = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->extendee().data(), static_cast<int>(this->extendee().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.extendee");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->extendee(), output);
    }
  
    // optional int32 number = 3;
    if (cached_has_bits & 0x00000040u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->number(), output);
    }
  
    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
    if (cached_has_bits & 0x00000100u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        4, this->label(), output);
    }
  
    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
    if (cached_has_bits & 0x00000200u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        5, this->type(), output);
    }
  
    // optional string type_name = 6;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->type_name().data(), static_cast<int>(this->type_name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.type_name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        6, this->type_name(), output);
    }
  
    // optional string default_value = 7;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->default_value().data(), static_cast<int>(this->default_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.default_value");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        7, this->default_value(), output);
    }
  
    // optional .google.protobuf.FieldOptions options = 8;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        8, *this->options_, output);
    }
  
    // optional int32 oneof_index = 9;
    if (cached_has_bits & 0x00000080u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->oneof_index(), output);
    }
  
    // optional string json_name = 10;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->json_name().data(), static_cast<int>(this->json_name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.json_name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        10, this->json_name(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.FieldDescriptorProto)
  }
  
  ::google::protobuf::uint8* FieldDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // optional string extendee = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->extendee().data(), static_cast<int>(this->extendee().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.extendee");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          2, this->extendee(), target);
    }
  
    // optional int32 number = 3;
    if (cached_has_bits & 0x00000040u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->number(), target);
    }
  
    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
    if (cached_has_bits & 0x00000100u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        4, this->label(), target);
    }
  
    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
    if (cached_has_bits & 0x00000200u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        5, this->type(), target);
    }
  
    // optional string type_name = 6;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->type_name().data(), static_cast<int>(this->type_name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.type_name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          6, this->type_name(), target);
    }
  
    // optional string default_value = 7;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->default_value().data(), static_cast<int>(this->default_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.default_value");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          7, this->default_value(), target);
    }
  
    // optional .google.protobuf.FieldOptions options = 8;
    if (cached_has_bits & 0x00000020u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          8, *this->options_, deterministic, target);
    }
  
    // optional int32 oneof_index = 9;
    if (cached_has_bits & 0x00000080u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(9, this->oneof_index(), target);
    }
  
    // optional string json_name = 10;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->json_name().data(), static_cast<int>(this->json_name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FieldDescriptorProto.json_name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          10, this->json_name(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldDescriptorProto)
    return target;
  }
  
  size_t FieldDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 255u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional string extendee = 2;
      if (has_extendee()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->extendee());
      }
  
      // optional string type_name = 6;
      if (has_type_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->type_name());
      }
  
      // optional string default_value = 7;
      if (has_default_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->default_value());
      }
  
      // optional string json_name = 10;
      if (has_json_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->json_name());
      }
  
      // optional .google.protobuf.FieldOptions options = 8;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
      // optional int32 number = 3;
      if (has_number()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->number());
      }
  
      // optional int32 oneof_index = 9;
      if (has_oneof_index()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->oneof_index());
      }
  
    }
    if (_has_bits_[8 / 32] & 768u) {
      // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
      if (has_label()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->label());
      }
  
      // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
      if (has_type()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->type());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void FieldDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.FieldDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const FieldDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const FieldDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.FieldDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.FieldDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void FieldDescriptorProto::MergeFrom(const FieldDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 255u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        set_extendee(from.extendee());
      }
      if (cached_has_bits & 0x00000004u) {
        set_type_name(from.type_name());
      }
      if (cached_has_bits & 0x00000008u) {
        set_default_value(from.default_value());
      }
      if (cached_has_bits & 0x00000010u) {
        set_json_name(from.json_name());
      }
      if (cached_has_bits & 0x00000020u) {
        mutable_options()->::google::protobuf::FieldOptions::MergeFrom(from.options());
      }
      if (cached_has_bits & 0x00000040u) {
        number_ = from.number_;
      }
      if (cached_has_bits & 0x00000080u) {
        oneof_index_ = from.oneof_index_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
    if (cached_has_bits & 768u) {
      if (cached_has_bits & 0x00000100u) {
        label_ = from.label_;
      }
      if (cached_has_bits & 0x00000200u) {
        type_ = from.type_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void FieldDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.FieldDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void FieldDescriptorProto::CopyFrom(const FieldDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.FieldDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool FieldDescriptorProto::IsInitialized() const {
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void FieldDescriptorProto::Swap(FieldDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      FieldDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void FieldDescriptorProto::UnsafeArenaSwap(FieldDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void FieldDescriptorProto::InternalSwap(FieldDescriptorProto* other) {
    using std::swap;
    name_.Swap(&other->name_);
    extendee_.Swap(&other->extendee_);
    type_name_.Swap(&other->type_name_);
    default_value_.Swap(&other->default_value_);
    json_name_.Swap(&other->json_name_);
    swap(options_, other->options_);
    swap(number_, other->number_);
    swap(oneof_index_, other->oneof_index_);
    swap(label_, other->label_);
    swap(type_, other->type_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata FieldDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // FieldDescriptorProto
  
  // optional string name = 1;
  bool FieldDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void FieldDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void FieldDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void FieldDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& FieldDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.name)
    return name_.Get();
  }
  void FieldDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.name)
  }
  #if LANG_CXX11
  void FieldDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FieldDescriptorProto.name)
  }
  #endif
  void FieldDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FieldDescriptorProto.name)
  }
  void FieldDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldDescriptorProto.name)
  }
  ::std::string* FieldDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FieldDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.name)
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.name)
  }
  
  // optional int32 number = 3;
  bool FieldDescriptorProto::has_number() const {
    return (_has_bits_[0] & 0x00000040u) != 0;
  }
  void FieldDescriptorProto::set_has_number() {
    _has_bits_[0] |= 0x00000040u;
  }
  void FieldDescriptorProto::clear_has_number() {
    _has_bits_[0] &= ~0x00000040u;
  }
  void FieldDescriptorProto::clear_number() {
    number_ = 0;
    clear_has_number();
  }
  ::google::protobuf::int32 FieldDescriptorProto::number() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.number)
    return number_;
  }
  void FieldDescriptorProto::set_number(::google::protobuf::int32 value) {
    set_has_number();
    number_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.number)
  }
  
  // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
  bool FieldDescriptorProto::has_label() const {
    return (_has_bits_[0] & 0x00000100u) != 0;
  }
  void FieldDescriptorProto::set_has_label() {
    _has_bits_[0] |= 0x00000100u;
  }
  void FieldDescriptorProto::clear_has_label() {
    _has_bits_[0] &= ~0x00000100u;
  }
  void FieldDescriptorProto::clear_label() {
    label_ = 1;
    clear_has_label();
  }
  ::google::protobuf::FieldDescriptorProto_Label FieldDescriptorProto::label() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.label)
    return static_cast< ::google::protobuf::FieldDescriptorProto_Label >(label_);
  }
  void FieldDescriptorProto::set_label(::google::protobuf::FieldDescriptorProto_Label value) {
    assert(::google::protobuf::FieldDescriptorProto_Label_IsValid(value));
    set_has_label();
    label_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.label)
  }
  
  // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
  bool FieldDescriptorProto::has_type() const {
    return (_has_bits_[0] & 0x00000200u) != 0;
  }
  void FieldDescriptorProto::set_has_type() {
    _has_bits_[0] |= 0x00000200u;
  }
  void FieldDescriptorProto::clear_has_type() {
    _has_bits_[0] &= ~0x00000200u;
  }
  void FieldDescriptorProto::clear_type() {
    type_ = 1;
    clear_has_type();
  }
  ::google::protobuf::FieldDescriptorProto_Type FieldDescriptorProto::type() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.type)
    return static_cast< ::google::protobuf::FieldDescriptorProto_Type >(type_);
  }
  void FieldDescriptorProto::set_type(::google::protobuf::FieldDescriptorProto_Type value) {
    assert(::google::protobuf::FieldDescriptorProto_Type_IsValid(value));
    set_has_type();
    type_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.type)
  }
  
  // optional string type_name = 6;
  bool FieldDescriptorProto::has_type_name() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void FieldDescriptorProto::set_has_type_name() {
    _has_bits_[0] |= 0x00000004u;
  }
  void FieldDescriptorProto::clear_has_type_name() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void FieldDescriptorProto::clear_type_name() {
    type_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_type_name();
  }
  const ::std::string& FieldDescriptorProto::type_name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.type_name)
    return type_name_.Get();
  }
  void FieldDescriptorProto::set_type_name(const ::std::string& value) {
    set_has_type_name();
    type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.type_name)
  }
  #if LANG_CXX11
  void FieldDescriptorProto::set_type_name(::std::string&& value) {
    set_has_type_name();
    type_name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FieldDescriptorProto.type_name)
  }
  #endif
  void FieldDescriptorProto::set_type_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_type_name();
    type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FieldDescriptorProto.type_name)
  }
  void FieldDescriptorProto::set_type_name(const char* value,
      size_t size) {
    set_has_type_name();
    type_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldDescriptorProto.type_name)
  }
  ::std::string* FieldDescriptorProto::mutable_type_name() {
    set_has_type_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.type_name)
    return type_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::release_type_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.type_name)
    clear_has_type_name();
    return type_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::unsafe_arena_release_type_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.type_name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_type_name();
    return type_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FieldDescriptorProto::set_allocated_type_name(::std::string* type_name) {
    if (type_name != NULL) {
      set_has_type_name();
    } else {
      clear_has_type_name();
    }
    type_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.type_name)
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_type_name(
      ::std::string* type_name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (type_name != NULL) {
      set_has_type_name();
    } else {
      clear_has_type_name();
    }
    type_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        type_name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.type_name)
  }
  
  // optional string extendee = 2;
  bool FieldDescriptorProto::has_extendee() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void FieldDescriptorProto::set_has_extendee() {
    _has_bits_[0] |= 0x00000002u;
  }
  void FieldDescriptorProto::clear_has_extendee() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void FieldDescriptorProto::clear_extendee() {
    extendee_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_extendee();
  }
  const ::std::string& FieldDescriptorProto::extendee() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.extendee)
    return extendee_.Get();
  }
  void FieldDescriptorProto::set_extendee(const ::std::string& value) {
    set_has_extendee();
    extendee_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.extendee)
  }
  #if LANG_CXX11
  void FieldDescriptorProto::set_extendee(::std::string&& value) {
    set_has_extendee();
    extendee_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FieldDescriptorProto.extendee)
  }
  #endif
  void FieldDescriptorProto::set_extendee(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_extendee();
    extendee_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FieldDescriptorProto.extendee)
  }
  void FieldDescriptorProto::set_extendee(const char* value,
      size_t size) {
    set_has_extendee();
    extendee_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldDescriptorProto.extendee)
  }
  ::std::string* FieldDescriptorProto::mutable_extendee() {
    set_has_extendee();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.extendee)
    return extendee_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::release_extendee() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.extendee)
    clear_has_extendee();
    return extendee_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::unsafe_arena_release_extendee() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.extendee)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_extendee();
    return extendee_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FieldDescriptorProto::set_allocated_extendee(::std::string* extendee) {
    if (extendee != NULL) {
      set_has_extendee();
    } else {
      clear_has_extendee();
    }
    extendee_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), extendee,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.extendee)
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_extendee(
      ::std::string* extendee) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (extendee != NULL) {
      set_has_extendee();
    } else {
      clear_has_extendee();
    }
    extendee_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        extendee, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.extendee)
  }
  
  // optional string default_value = 7;
  bool FieldDescriptorProto::has_default_value() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void FieldDescriptorProto::set_has_default_value() {
    _has_bits_[0] |= 0x00000008u;
  }
  void FieldDescriptorProto::clear_has_default_value() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void FieldDescriptorProto::clear_default_value() {
    default_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_default_value();
  }
  const ::std::string& FieldDescriptorProto::default_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.default_value)
    return default_value_.Get();
  }
  void FieldDescriptorProto::set_default_value(const ::std::string& value) {
    set_has_default_value();
    default_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.default_value)
  }
  #if LANG_CXX11
  void FieldDescriptorProto::set_default_value(::std::string&& value) {
    set_has_default_value();
    default_value_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FieldDescriptorProto.default_value)
  }
  #endif
  void FieldDescriptorProto::set_default_value(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_default_value();
    default_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FieldDescriptorProto.default_value)
  }
  void FieldDescriptorProto::set_default_value(const char* value,
      size_t size) {
    set_has_default_value();
    default_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldDescriptorProto.default_value)
  }
  ::std::string* FieldDescriptorProto::mutable_default_value() {
    set_has_default_value();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.default_value)
    return default_value_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::release_default_value() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.default_value)
    clear_has_default_value();
    return default_value_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::unsafe_arena_release_default_value() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.default_value)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_default_value();
    return default_value_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FieldDescriptorProto::set_allocated_default_value(::std::string* default_value) {
    if (default_value != NULL) {
      set_has_default_value();
    } else {
      clear_has_default_value();
    }
    default_value_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), default_value,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.default_value)
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_default_value(
      ::std::string* default_value) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (default_value != NULL) {
      set_has_default_value();
    } else {
      clear_has_default_value();
    }
    default_value_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        default_value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.default_value)
  }
  
  // optional int32 oneof_index = 9;
  bool FieldDescriptorProto::has_oneof_index() const {
    return (_has_bits_[0] & 0x00000080u) != 0;
  }
  void FieldDescriptorProto::set_has_oneof_index() {
    _has_bits_[0] |= 0x00000080u;
  }
  void FieldDescriptorProto::clear_has_oneof_index() {
    _has_bits_[0] &= ~0x00000080u;
  }
  void FieldDescriptorProto::clear_oneof_index() {
    oneof_index_ = 0;
    clear_has_oneof_index();
  }
  ::google::protobuf::int32 FieldDescriptorProto::oneof_index() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.oneof_index)
    return oneof_index_;
  }
  void FieldDescriptorProto::set_oneof_index(::google::protobuf::int32 value) {
    set_has_oneof_index();
    oneof_index_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.oneof_index)
  }
  
  // optional string json_name = 10;
  bool FieldDescriptorProto::has_json_name() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void FieldDescriptorProto::set_has_json_name() {
    _has_bits_[0] |= 0x00000010u;
  }
  void FieldDescriptorProto::clear_has_json_name() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void FieldDescriptorProto::clear_json_name() {
    json_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_json_name();
  }
  const ::std::string& FieldDescriptorProto::json_name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.json_name)
    return json_name_.Get();
  }
  void FieldDescriptorProto::set_json_name(const ::std::string& value) {
    set_has_json_name();
    json_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.json_name)
  }
  #if LANG_CXX11
  void FieldDescriptorProto::set_json_name(::std::string&& value) {
    set_has_json_name();
    json_name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FieldDescriptorProto.json_name)
  }
  #endif
  void FieldDescriptorProto::set_json_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_json_name();
    json_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FieldDescriptorProto.json_name)
  }
  void FieldDescriptorProto::set_json_name(const char* value,
      size_t size) {
    set_has_json_name();
    json_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldDescriptorProto.json_name)
  }
  ::std::string* FieldDescriptorProto::mutable_json_name() {
    set_has_json_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.json_name)
    return json_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::release_json_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.json_name)
    clear_has_json_name();
    return json_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FieldDescriptorProto::unsafe_arena_release_json_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FieldDescriptorProto.json_name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_json_name();
    return json_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FieldDescriptorProto::set_allocated_json_name(::std::string* json_name) {
    if (json_name != NULL) {
      set_has_json_name();
    } else {
      clear_has_json_name();
    }
    json_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), json_name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.json_name)
  }
  void FieldDescriptorProto::unsafe_arena_set_allocated_json_name(
      ::std::string* json_name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (json_name != NULL) {
      set_has_json_name();
    } else {
      clear_has_json_name();
    }
    json_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        json_name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.json_name)
  }
  
  // optional .google.protobuf.FieldOptions options = 8;
  bool FieldDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000020u) != 0;
  }
  void FieldDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000020u;
  }
  void FieldDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000020u;
  }
  void FieldDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::FieldOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::FieldOptions& FieldDescriptorProto::options() const {
    const ::google::protobuf::FieldOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::FieldOptions*>(
        &::google::protobuf::_FieldOptions_default_instance_);
  }
  ::google::protobuf::FieldOptions* FieldDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::FieldOptions* FieldDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::FieldOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void FieldDescriptorProto::set_allocated_options(::google::protobuf::FieldOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.options)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void OneofDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::OneofOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::OneofOptions* OneofDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::OneofOptions* temp = new ::google::protobuf::OneofOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::OneofOptions* OneofDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.OneofDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::OneofOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void OneofDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::OneofOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::OneofOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::OneofOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void OneofDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::OneofOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.OneofDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int OneofDescriptorProto::kNameFieldNumber;
  const int OneofDescriptorProto::kOptionsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  OneofDescriptorProto::OneofDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.OneofDescriptorProto)
  }
  OneofDescriptorProto::OneofDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.OneofDescriptorProto)
  }
  OneofDescriptorProto::OneofDescriptorProto(const OneofDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::OneofOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.OneofDescriptorProto)
  }
  
  void OneofDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    options_ = NULL;
  }
  
  OneofDescriptorProto::~OneofDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.OneofDescriptorProto)
    SharedDtor();
  }
  
  void OneofDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void OneofDescriptorProto::ArenaDtor(void* object) {
    OneofDescriptorProto* _this = reinterpret_cast< OneofDescriptorProto* >(object);
    (void)_this;
  }
  void OneofDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void OneofDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* OneofDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const OneofDescriptorProto& OneofDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  OneofDescriptorProto* OneofDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<OneofDescriptorProto>(arena);
  }
  
  void OneofDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.OneofDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::OneofOptions::Clear();
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool OneofDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.OneofDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.OneofDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.OneofOptions options = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.OneofDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.OneofDescriptorProto)
    return false;
  #undef DO_
  }
  
  void OneofDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.OneofDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.OneofDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // optional .google.protobuf.OneofOptions options = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        2, *this->options_, output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.OneofDescriptorProto)
  }
  
  ::google::protobuf::uint8* OneofDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.OneofDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // optional .google.protobuf.OneofOptions options = 2;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          2, *this->options_, deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.OneofDescriptorProto)
    return target;
  }
  
  size_t OneofDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 3u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional .google.protobuf.OneofOptions options = 2;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void OneofDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.OneofDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const OneofDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const OneofDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.OneofDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.OneofDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void OneofDescriptorProto::MergeFrom(const OneofDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        mutable_options()->::google::protobuf::OneofOptions::MergeFrom(from.options());
      }
    }
  }
  
  void OneofDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.OneofDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void OneofDescriptorProto::CopyFrom(const OneofDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.OneofDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool OneofDescriptorProto::IsInitialized() const {
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void OneofDescriptorProto::Swap(OneofDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      OneofDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void OneofDescriptorProto::UnsafeArenaSwap(OneofDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void OneofDescriptorProto::InternalSwap(OneofDescriptorProto* other) {
    using std::swap;
    name_.Swap(&other->name_);
    swap(options_, other->options_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata OneofDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // OneofDescriptorProto
  
  // optional string name = 1;
  bool OneofDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void OneofDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void OneofDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void OneofDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& OneofDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.OneofDescriptorProto.name)
    return name_.Get();
  }
  void OneofDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.OneofDescriptorProto.name)
  }
  #if LANG_CXX11
  void OneofDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.OneofDescriptorProto.name)
  }
  #endif
  void OneofDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.OneofDescriptorProto.name)
  }
  void OneofDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.OneofDescriptorProto.name)
  }
  ::std::string* OneofDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.OneofDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* OneofDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.OneofDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* OneofDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.OneofDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void OneofDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.OneofDescriptorProto.name)
  }
  void OneofDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.OneofDescriptorProto.name)
  }
  
  // optional .google.protobuf.OneofOptions options = 2;
  bool OneofDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void OneofDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000002u;
  }
  void OneofDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void OneofDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::OneofOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::OneofOptions& OneofDescriptorProto::options() const {
    const ::google::protobuf::OneofOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.OneofDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::OneofOptions*>(
        &::google::protobuf::_OneofOptions_default_instance_);
  }
  ::google::protobuf::OneofOptions* OneofDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.OneofDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::OneofOptions* OneofDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.OneofDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::OneofOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void OneofDescriptorProto::set_allocated_options(::google::protobuf::OneofOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.OneofDescriptorProto.options)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int EnumDescriptorProto_EnumReservedRange::kStartFieldNumber;
  const int EnumDescriptorProto_EnumReservedRange::kEndFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  }
  EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  }
  EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(const EnumDescriptorProto_EnumReservedRange& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::memcpy(&start_, &from.start_,
      static_cast<size_t>(reinterpret_cast<char*>(&end_) -
      reinterpret_cast<char*>(&start_)) + sizeof(end_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  }
  
  void EnumDescriptorProto_EnumReservedRange::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&start_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&start_)) + sizeof(end_));
  }
  
  EnumDescriptorProto_EnumReservedRange::~EnumDescriptorProto_EnumReservedRange() {
    // @@protoc_insertion_point(destructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    SharedDtor();
  }
  
  void EnumDescriptorProto_EnumReservedRange::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void EnumDescriptorProto_EnumReservedRange::ArenaDtor(void* object) {
    EnumDescriptorProto_EnumReservedRange* _this = reinterpret_cast< EnumDescriptorProto_EnumReservedRange* >(object);
    (void)_this;
  }
  void EnumDescriptorProto_EnumReservedRange::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void EnumDescriptorProto_EnumReservedRange::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* EnumDescriptorProto_EnumReservedRange::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const EnumDescriptorProto_EnumReservedRange& EnumDescriptorProto_EnumReservedRange::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto_EnumReservedRange::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<EnumDescriptorProto_EnumReservedRange>(arena);
  }
  
  void EnumDescriptorProto_EnumReservedRange::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      ::memset(&start_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&end_) -
          reinterpret_cast<char*>(&start_)) + sizeof(end_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool EnumDescriptorProto_EnumReservedRange::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional int32 start = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_start();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &start_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 end = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_end();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &end_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    return false;
  #undef DO_
  }
  
  void EnumDescriptorProto_EnumReservedRange::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->start(), output);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->end(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  }
  
  ::google::protobuf::uint8* EnumDescriptorProto_EnumReservedRange::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->start(), target);
    }
  
    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->end(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    return target;
  }
  
  size_t EnumDescriptorProto_EnumReservedRange::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 3u) {
      // optional int32 start = 1;
      if (has_start()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->start());
      }
  
      // optional int32 end = 2;
      if (has_end()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->end());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void EnumDescriptorProto_EnumReservedRange::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    GOOGLE_DCHECK_NE(&from, this);
    const EnumDescriptorProto_EnumReservedRange* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const EnumDescriptorProto_EnumReservedRange>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.EnumDescriptorProto.EnumReservedRange)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.EnumDescriptorProto.EnumReservedRange)
      MergeFrom(*source);
    }
  }
  
  void EnumDescriptorProto_EnumReservedRange::MergeFrom(const EnumDescriptorProto_EnumReservedRange& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        start_ = from.start_;
      }
      if (cached_has_bits & 0x00000002u) {
        end_ = from.end_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void EnumDescriptorProto_EnumReservedRange::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void EnumDescriptorProto_EnumReservedRange::CopyFrom(const EnumDescriptorProto_EnumReservedRange& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool EnumDescriptorProto_EnumReservedRange::IsInitialized() const {
    return true;
  }
  
  void EnumDescriptorProto_EnumReservedRange::Swap(EnumDescriptorProto_EnumReservedRange* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      EnumDescriptorProto_EnumReservedRange* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void EnumDescriptorProto_EnumReservedRange::UnsafeArenaSwap(EnumDescriptorProto_EnumReservedRange* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void EnumDescriptorProto_EnumReservedRange::InternalSwap(EnumDescriptorProto_EnumReservedRange* other) {
    using std::swap;
    swap(start_, other->start_);
    swap(end_, other->end_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata EnumDescriptorProto_EnumReservedRange::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // EnumDescriptorProto_EnumReservedRange
  
  // optional int32 start = 1;
  bool EnumDescriptorProto_EnumReservedRange::has_start() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void EnumDescriptorProto_EnumReservedRange::set_has_start() {
    _has_bits_[0] |= 0x00000001u;
  }
  void EnumDescriptorProto_EnumReservedRange::clear_has_start() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void EnumDescriptorProto_EnumReservedRange::clear_start() {
    start_ = 0;
    clear_has_start();
  }
  ::google::protobuf::int32 EnumDescriptorProto_EnumReservedRange::start() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.EnumReservedRange.start)
    return start_;
  }
  void EnumDescriptorProto_EnumReservedRange::set_start(::google::protobuf::int32 value) {
    set_has_start();
    start_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.EnumReservedRange.start)
  }
  
  // optional int32 end = 2;
  bool EnumDescriptorProto_EnumReservedRange::has_end() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void EnumDescriptorProto_EnumReservedRange::set_has_end() {
    _has_bits_[0] |= 0x00000002u;
  }
  void EnumDescriptorProto_EnumReservedRange::clear_has_end() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void EnumDescriptorProto_EnumReservedRange::clear_end() {
    end_ = 0;
    clear_has_end();
  }
  ::google::protobuf::int32 EnumDescriptorProto_EnumReservedRange::end() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.EnumReservedRange.end)
    return end_;
  }
  void EnumDescriptorProto_EnumReservedRange::set_end(::google::protobuf::int32 value) {
    set_has_end();
    end_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.EnumReservedRange.end)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void EnumDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::EnumOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::EnumOptions* EnumDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::EnumOptions* temp = new ::google::protobuf::EnumOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::EnumOptions* EnumDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.EnumDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::EnumOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void EnumDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::EnumOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::EnumOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::EnumOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void EnumDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::EnumOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int EnumDescriptorProto::kNameFieldNumber;
  const int EnumDescriptorProto::kValueFieldNumber;
  const int EnumDescriptorProto::kOptionsFieldNumber;
  const int EnumDescriptorProto::kReservedRangeFieldNumber;
  const int EnumDescriptorProto::kReservedNameFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  EnumDescriptorProto::EnumDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.EnumDescriptorProto)
  }
  EnumDescriptorProto::EnumDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    value_(arena),
    reserved_range_(arena),
    reserved_name_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumDescriptorProto)
  }
  EnumDescriptorProto::EnumDescriptorProto(const EnumDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        value_(from.value_),
        reserved_range_(from.reserved_range_),
        reserved_name_(from.reserved_name_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::EnumOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumDescriptorProto)
  }
  
  void EnumDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    options_ = NULL;
  }
  
  EnumDescriptorProto::~EnumDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.EnumDescriptorProto)
    SharedDtor();
  }
  
  void EnumDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void EnumDescriptorProto::ArenaDtor(void* object) {
    EnumDescriptorProto* _this = reinterpret_cast< EnumDescriptorProto* >(object);
    (void)_this;
  }
  void EnumDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void EnumDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* EnumDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const EnumDescriptorProto& EnumDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  EnumDescriptorProto* EnumDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<EnumDescriptorProto>(arena);
  }
  
  void EnumDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.EnumDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    value_.Clear();
    reserved_range_.Clear();
    reserved_name_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::EnumOptions::Clear();
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool EnumDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.EnumDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.EnumDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_value()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.EnumOptions options = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_reserved_range()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated string reserved_name = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->add_reserved_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->reserved_name(this->reserved_name_size() - 1).data(),
              static_cast<int>(this->reserved_name(this->reserved_name_size() - 1).length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.EnumDescriptorProto.reserved_name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.EnumDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.EnumDescriptorProto)
    return false;
  #undef DO_
  }
  
  void EnumDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.EnumDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        2, this->value(static_cast<int>(i)), output);
    }
  
    // optional .google.protobuf.EnumOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        3, *this->options_, output);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->reserved_range_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        4, this->reserved_range(static_cast<int>(i)), output);
    }
  
    // repeated string reserved_name = 5;
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->reserved_name(i).data(), static_cast<int>(this->reserved_name(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumDescriptorProto.reserved_name");
      ::google::protobuf::internal::WireFormatLite::WriteString(
        5, this->reserved_name(i), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.EnumDescriptorProto)
  }
  
  ::google::protobuf::uint8* EnumDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->value_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          2, this->value(static_cast<int>(i)), deterministic, target);
    }
  
    // optional .google.protobuf.EnumOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          3, *this->options_, deterministic, target);
    }
  
    // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->reserved_range_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          4, this->reserved_range(static_cast<int>(i)), deterministic, target);
    }
  
    // repeated string reserved_name = 5;
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->reserved_name(i).data(), static_cast<int>(this->reserved_name(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumDescriptorProto.reserved_name");
      target = ::google::protobuf::internal::WireFormatLite::
        WriteStringToArray(5, this->reserved_name(i), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumDescriptorProto)
    return target;
  }
  
  size_t EnumDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
    {
      unsigned int count = static_cast<unsigned int>(this->value_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->value(static_cast<int>(i)));
      }
    }
  
    // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
    {
      unsigned int count = static_cast<unsigned int>(this->reserved_range_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->reserved_range(static_cast<int>(i)));
      }
    }
  
    // repeated string reserved_name = 5;
    total_size += 1 *
        ::google::protobuf::internal::FromIntSize(this->reserved_name_size());
    for (int i = 0, n = this->reserved_name_size(); i < n; i++) {
      total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
        this->reserved_name(i));
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional .google.protobuf.EnumOptions options = 3;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void EnumDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.EnumDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const EnumDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const EnumDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.EnumDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.EnumDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void EnumDescriptorProto::MergeFrom(const EnumDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    value_.MergeFrom(from.value_);
    reserved_range_.MergeFrom(from.reserved_range_);
    reserved_name_.MergeFrom(from.reserved_name_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        mutable_options()->::google::protobuf::EnumOptions::MergeFrom(from.options());
      }
    }
  }
  
  void EnumDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.EnumDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void EnumDescriptorProto::CopyFrom(const EnumDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool EnumDescriptorProto::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->value())) return false;
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void EnumDescriptorProto::Swap(EnumDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      EnumDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void EnumDescriptorProto::UnsafeArenaSwap(EnumDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void EnumDescriptorProto::InternalSwap(EnumDescriptorProto* other) {
    using std::swap;
    value_.InternalSwap(&other->value_);
    reserved_range_.InternalSwap(&other->reserved_range_);
    reserved_name_.InternalSwap(&other->reserved_name_);
    name_.Swap(&other->name_);
    swap(options_, other->options_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata EnumDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // EnumDescriptorProto
  
  // optional string name = 1;
  bool EnumDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void EnumDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void EnumDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void EnumDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& EnumDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.name)
    return name_.Get();
  }
  void EnumDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.name)
  }
  #if LANG_CXX11
  void EnumDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.EnumDescriptorProto.name)
  }
  #endif
  void EnumDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.EnumDescriptorProto.name)
  }
  void EnumDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.EnumDescriptorProto.name)
  }
  ::std::string* EnumDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* EnumDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.EnumDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* EnumDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.EnumDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void EnumDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumDescriptorProto.name)
  }
  void EnumDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumDescriptorProto.name)
  }
  
  // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
  int EnumDescriptorProto::value_size() const {
    return value_.size();
  }
  void EnumDescriptorProto::clear_value() {
    value_.Clear();
  }
  const ::google::protobuf::EnumValueDescriptorProto& EnumDescriptorProto::value(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.value)
    return value_.Get(index);
  }
  ::google::protobuf::EnumValueDescriptorProto* EnumDescriptorProto::mutable_value(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.value)
    return value_.Mutable(index);
  }
  ::google::protobuf::EnumValueDescriptorProto* EnumDescriptorProto::add_value() {
    // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.value)
    return value_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumValueDescriptorProto >*
  EnumDescriptorProto::mutable_value() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.value)
    return &value_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumValueDescriptorProto >&
  EnumDescriptorProto::value() const {
    // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.value)
    return value_;
  }
  
  // optional .google.protobuf.EnumOptions options = 3;
  bool EnumDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void EnumDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000002u;
  }
  void EnumDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void EnumDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::EnumOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::EnumOptions& EnumDescriptorProto::options() const {
    const ::google::protobuf::EnumOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::EnumOptions*>(
        &::google::protobuf::_EnumOptions_default_instance_);
  }
  ::google::protobuf::EnumOptions* EnumDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::EnumOptions* EnumDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.EnumDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::EnumOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void EnumDescriptorProto::set_allocated_options(::google::protobuf::EnumOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumDescriptorProto.options)
  }
  
  // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
  int EnumDescriptorProto::reserved_range_size() const {
    return reserved_range_.size();
  }
  void EnumDescriptorProto::clear_reserved_range() {
    reserved_range_.Clear();
  }
  const ::google::protobuf::EnumDescriptorProto_EnumReservedRange& EnumDescriptorProto::reserved_range(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.reserved_range)
    return reserved_range_.Get(index);
  }
  ::google::protobuf::EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto::mutable_reserved_range(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.reserved_range)
    return reserved_range_.Mutable(index);
  }
  ::google::protobuf::EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto::add_reserved_range() {
    // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_range)
    return reserved_range_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto_EnumReservedRange >*
  EnumDescriptorProto::mutable_reserved_range() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.reserved_range)
    return &reserved_range_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::EnumDescriptorProto_EnumReservedRange >&
  EnumDescriptorProto::reserved_range() const {
    // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.reserved_range)
    return reserved_range_;
  }
  
  // repeated string reserved_name = 5;
  int EnumDescriptorProto::reserved_name_size() const {
    return reserved_name_.size();
  }
  void EnumDescriptorProto::clear_reserved_name() {
    reserved_name_.Clear();
  }
  const ::std::string& EnumDescriptorProto::reserved_name(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.reserved_name)
    return reserved_name_.Get(index);
  }
  ::std::string* EnumDescriptorProto::mutable_reserved_name(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.reserved_name)
    return reserved_name_.Mutable(index);
  }
  void EnumDescriptorProto::set_reserved_name(int index, const ::std::string& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.reserved_name)
    reserved_name_.Mutable(index)->assign(value);
  }
  #if LANG_CXX11
  void EnumDescriptorProto::set_reserved_name(int index, ::std::string&& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.reserved_name)
    reserved_name_.Mutable(index)->assign(std::move(value));
  }
  #endif
  void EnumDescriptorProto::set_reserved_name(int index, const char* value) {
    GOOGLE_DCHECK(value != NULL);
    reserved_name_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  void EnumDescriptorProto::set_reserved_name(int index, const char* value, size_t size) {
    reserved_name_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  ::std::string* EnumDescriptorProto::add_reserved_name() {
    // @@protoc_insertion_point(field_add_mutable:google.protobuf.EnumDescriptorProto.reserved_name)
    return reserved_name_.Add();
  }
  void EnumDescriptorProto::add_reserved_name(const ::std::string& value) {
    reserved_name_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  #if LANG_CXX11
  void EnumDescriptorProto::add_reserved_name(::std::string&& value) {
    reserved_name_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  #endif
  void EnumDescriptorProto::add_reserved_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    reserved_name_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  void EnumDescriptorProto::add_reserved_name(const char* value, size_t size) {
    reserved_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:google.protobuf.EnumDescriptorProto.reserved_name)
  }
  const ::google::protobuf::RepeatedPtrField< ::std::string>&
  EnumDescriptorProto::reserved_name() const {
    // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.reserved_name)
    return reserved_name_;
  }
  ::google::protobuf::RepeatedPtrField< ::std::string>*
  EnumDescriptorProto::mutable_reserved_name() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.reserved_name)
    return &reserved_name_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void EnumValueDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::EnumValueOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::EnumValueOptions* temp = new ::google::protobuf::EnumValueOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.EnumValueDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::EnumValueOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void EnumValueDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::EnumValueOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::EnumValueOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::EnumValueOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void EnumValueDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::EnumValueOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumValueDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int EnumValueDescriptorProto::kNameFieldNumber;
  const int EnumValueDescriptorProto::kNumberFieldNumber;
  const int EnumValueDescriptorProto::kOptionsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  EnumValueDescriptorProto::EnumValueDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.EnumValueDescriptorProto)
  }
  EnumValueDescriptorProto::EnumValueDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumValueDescriptorProto)
  }
  EnumValueDescriptorProto::EnumValueDescriptorProto(const EnumValueDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::EnumValueOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    number_ = from.number_;
    // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumValueDescriptorProto)
  }
  
  void EnumValueDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&options_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&number_) -
        reinterpret_cast<char*>(&options_)) + sizeof(number_));
  }
  
  EnumValueDescriptorProto::~EnumValueDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.EnumValueDescriptorProto)
    SharedDtor();
  }
  
  void EnumValueDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void EnumValueDescriptorProto::ArenaDtor(void* object) {
    EnumValueDescriptorProto* _this = reinterpret_cast< EnumValueDescriptorProto* >(object);
    (void)_this;
  }
  void EnumValueDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void EnumValueDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* EnumValueDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const EnumValueDescriptorProto& EnumValueDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  EnumValueDescriptorProto* EnumValueDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<EnumValueDescriptorProto>(arena);
  }
  
  void EnumValueDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.EnumValueDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::EnumValueOptions::Clear();
      }
    }
    number_ = 0;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool EnumValueDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.EnumValueDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.EnumValueDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 number = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_number();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &number_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.EnumValueOptions options = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.EnumValueDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.EnumValueDescriptorProto)
    return false;
  #undef DO_
  }
  
  void EnumValueDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.EnumValueDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumValueDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // optional int32 number = 2;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->number(), output);
    }
  
    // optional .google.protobuf.EnumValueOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        3, *this->options_, output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.EnumValueDescriptorProto)
  }
  
  ::google::protobuf::uint8* EnumValueDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.EnumValueDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // optional int32 number = 2;
    if (cached_has_bits & 0x00000004u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->number(), target);
    }
  
    // optional .google.protobuf.EnumValueOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          3, *this->options_, deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueDescriptorProto)
    return target;
  }
  
  size_t EnumValueDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 7u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional .google.protobuf.EnumValueOptions options = 3;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
      // optional int32 number = 2;
      if (has_number()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->number());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void EnumValueDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.EnumValueDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const EnumValueDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const EnumValueDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.EnumValueDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.EnumValueDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void EnumValueDescriptorProto::MergeFrom(const EnumValueDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        mutable_options()->::google::protobuf::EnumValueOptions::MergeFrom(from.options());
      }
      if (cached_has_bits & 0x00000004u) {
        number_ = from.number_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void EnumValueDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.EnumValueDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void EnumValueDescriptorProto::CopyFrom(const EnumValueDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumValueDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool EnumValueDescriptorProto::IsInitialized() const {
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void EnumValueDescriptorProto::Swap(EnumValueDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      EnumValueDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void EnumValueDescriptorProto::UnsafeArenaSwap(EnumValueDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void EnumValueDescriptorProto::InternalSwap(EnumValueDescriptorProto* other) {
    using std::swap;
    name_.Swap(&other->name_);
    swap(options_, other->options_);
    swap(number_, other->number_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata EnumValueDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // EnumValueDescriptorProto
  
  // optional string name = 1;
  bool EnumValueDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void EnumValueDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void EnumValueDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void EnumValueDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& EnumValueDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.name)
    return name_.Get();
  }
  void EnumValueDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.EnumValueDescriptorProto.name)
  }
  #if LANG_CXX11
  void EnumValueDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.EnumValueDescriptorProto.name)
  }
  #endif
  void EnumValueDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.EnumValueDescriptorProto.name)
  }
  void EnumValueDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.EnumValueDescriptorProto.name)
  }
  ::std::string* EnumValueDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* EnumValueDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.EnumValueDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* EnumValueDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.EnumValueDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void EnumValueDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumValueDescriptorProto.name)
  }
  void EnumValueDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumValueDescriptorProto.name)
  }
  
  // optional int32 number = 2;
  bool EnumValueDescriptorProto::has_number() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void EnumValueDescriptorProto::set_has_number() {
    _has_bits_[0] |= 0x00000004u;
  }
  void EnumValueDescriptorProto::clear_has_number() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void EnumValueDescriptorProto::clear_number() {
    number_ = 0;
    clear_has_number();
  }
  ::google::protobuf::int32 EnumValueDescriptorProto::number() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.number)
    return number_;
  }
  void EnumValueDescriptorProto::set_number(::google::protobuf::int32 value) {
    set_has_number();
    number_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumValueDescriptorProto.number)
  }
  
  // optional .google.protobuf.EnumValueOptions options = 3;
  bool EnumValueDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void EnumValueDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000002u;
  }
  void EnumValueDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void EnumValueDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::EnumValueOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::EnumValueOptions& EnumValueDescriptorProto::options() const {
    const ::google::protobuf::EnumValueOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::EnumValueOptions*>(
        &::google::protobuf::_EnumValueOptions_default_instance_);
  }
  ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::EnumValueOptions* EnumValueDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.EnumValueDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::EnumValueOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void EnumValueDescriptorProto::set_allocated_options(::google::protobuf::EnumValueOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumValueDescriptorProto.options)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void ServiceDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::ServiceOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::ServiceOptions* ServiceDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::ServiceOptions* temp = new ::google::protobuf::ServiceOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::ServiceOptions* ServiceDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.ServiceDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::ServiceOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void ServiceDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::ServiceOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::ServiceOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::ServiceOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void ServiceDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::ServiceOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.ServiceDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int ServiceDescriptorProto::kNameFieldNumber;
  const int ServiceDescriptorProto::kMethodFieldNumber;
  const int ServiceDescriptorProto::kOptionsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  ServiceDescriptorProto::ServiceDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.ServiceDescriptorProto)
  }
  ServiceDescriptorProto::ServiceDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    method_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.ServiceDescriptorProto)
  }
  ServiceDescriptorProto::ServiceDescriptorProto(const ServiceDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        method_(from.method_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::ServiceOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.ServiceDescriptorProto)
  }
  
  void ServiceDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    options_ = NULL;
  }
  
  ServiceDescriptorProto::~ServiceDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.ServiceDescriptorProto)
    SharedDtor();
  }
  
  void ServiceDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void ServiceDescriptorProto::ArenaDtor(void* object) {
    ServiceDescriptorProto* _this = reinterpret_cast< ServiceDescriptorProto* >(object);
    (void)_this;
  }
  void ServiceDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void ServiceDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* ServiceDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const ServiceDescriptorProto& ServiceDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  ServiceDescriptorProto* ServiceDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<ServiceDescriptorProto>(arena);
  }
  
  void ServiceDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.ServiceDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    method_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::ServiceOptions::Clear();
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool ServiceDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.ServiceDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.ServiceDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.MethodDescriptorProto method = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_method()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.ServiceOptions options = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.ServiceDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.ServiceDescriptorProto)
    return false;
  #undef DO_
  }
  
  void ServiceDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.ServiceDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.ServiceDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // repeated .google.protobuf.MethodDescriptorProto method = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->method_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        2, this->method(static_cast<int>(i)), output);
    }
  
    // optional .google.protobuf.ServiceOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        3, *this->options_, output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.ServiceDescriptorProto)
  }
  
  ::google::protobuf::uint8* ServiceDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.ServiceDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // repeated .google.protobuf.MethodDescriptorProto method = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->method_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          2, this->method(static_cast<int>(i)), deterministic, target);
    }
  
    // optional .google.protobuf.ServiceOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          3, *this->options_, deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceDescriptorProto)
    return target;
  }
  
  size_t ServiceDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.MethodDescriptorProto method = 2;
    {
      unsigned int count = static_cast<unsigned int>(this->method_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->method(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional .google.protobuf.ServiceOptions options = 3;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void ServiceDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.ServiceDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const ServiceDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const ServiceDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.ServiceDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.ServiceDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void ServiceDescriptorProto::MergeFrom(const ServiceDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    method_.MergeFrom(from.method_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        mutable_options()->::google::protobuf::ServiceOptions::MergeFrom(from.options());
      }
    }
  }
  
  void ServiceDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.ServiceDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void ServiceDescriptorProto::CopyFrom(const ServiceDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.ServiceDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool ServiceDescriptorProto::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->method())) return false;
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void ServiceDescriptorProto::Swap(ServiceDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      ServiceDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void ServiceDescriptorProto::UnsafeArenaSwap(ServiceDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void ServiceDescriptorProto::InternalSwap(ServiceDescriptorProto* other) {
    using std::swap;
    method_.InternalSwap(&other->method_);
    name_.Swap(&other->name_);
    swap(options_, other->options_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata ServiceDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // ServiceDescriptorProto
  
  // optional string name = 1;
  bool ServiceDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void ServiceDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void ServiceDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void ServiceDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& ServiceDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.name)
    return name_.Get();
  }
  void ServiceDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.ServiceDescriptorProto.name)
  }
  #if LANG_CXX11
  void ServiceDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.ServiceDescriptorProto.name)
  }
  #endif
  void ServiceDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.ServiceDescriptorProto.name)
  }
  void ServiceDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.ServiceDescriptorProto.name)
  }
  ::std::string* ServiceDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* ServiceDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.ServiceDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* ServiceDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.ServiceDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void ServiceDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.ServiceDescriptorProto.name)
  }
  void ServiceDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.ServiceDescriptorProto.name)
  }
  
  // repeated .google.protobuf.MethodDescriptorProto method = 2;
  int ServiceDescriptorProto::method_size() const {
    return method_.size();
  }
  void ServiceDescriptorProto::clear_method() {
    method_.Clear();
  }
  const ::google::protobuf::MethodDescriptorProto& ServiceDescriptorProto::method(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.method)
    return method_.Get(index);
  }
  ::google::protobuf::MethodDescriptorProto* ServiceDescriptorProto::mutable_method(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.method)
    return method_.Mutable(index);
  }
  ::google::protobuf::MethodDescriptorProto* ServiceDescriptorProto::add_method() {
    // @@protoc_insertion_point(field_add:google.protobuf.ServiceDescriptorProto.method)
    return method_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::MethodDescriptorProto >*
  ServiceDescriptorProto::mutable_method() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.ServiceDescriptorProto.method)
    return &method_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::MethodDescriptorProto >&
  ServiceDescriptorProto::method() const {
    // @@protoc_insertion_point(field_list:google.protobuf.ServiceDescriptorProto.method)
    return method_;
  }
  
  // optional .google.protobuf.ServiceOptions options = 3;
  bool ServiceDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void ServiceDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000002u;
  }
  void ServiceDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void ServiceDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::ServiceOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::ServiceOptions& ServiceDescriptorProto::options() const {
    const ::google::protobuf::ServiceOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::ServiceOptions*>(
        &::google::protobuf::_ServiceOptions_default_instance_);
  }
  ::google::protobuf::ServiceOptions* ServiceDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::ServiceOptions* ServiceDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.ServiceDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::ServiceOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void ServiceDescriptorProto::set_allocated_options(::google::protobuf::ServiceOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.ServiceDescriptorProto.options)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  void MethodDescriptorProto::_slow_mutable_options() {
    options_ = ::google::protobuf::Arena::CreateMessage< ::google::protobuf::MethodOptions >(
        GetArenaNoVirtual());
  }
  ::google::protobuf::MethodOptions* MethodDescriptorProto::_slow_release_options() {
    if (options_ == NULL) {
      return NULL;
    } else {
      ::google::protobuf::MethodOptions* temp = new ::google::protobuf::MethodOptions(*options_);
      options_ = NULL;
      return temp;
    }
  }
  ::google::protobuf::MethodOptions* MethodDescriptorProto::unsafe_arena_release_options() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.MethodDescriptorProto.options)
    clear_has_options();
    ::google::protobuf::MethodOptions* temp = options_;
    options_ = NULL;
    return temp;
  }
  void MethodDescriptorProto::_slow_set_allocated_options(
      ::google::protobuf::Arena* message_arena, ::google::protobuf::MethodOptions** options) {
      if (message_arena != NULL && 
          ::google::protobuf::Arena::GetArena(*options) == NULL) {
        message_arena->Own(*options);
      } else if (message_arena !=
                 ::google::protobuf::Arena::GetArena(*options)) {
        ::google::protobuf::MethodOptions* new_options = 
              ::google::protobuf::Arena::CreateMessage< ::google::protobuf::MethodOptions >(
              message_arena);
        new_options->CopyFrom(**options);
        *options = new_options;
      }
  }
  void MethodDescriptorProto::unsafe_arena_set_allocated_options(
      ::google::protobuf::MethodOptions* options) {
    if (GetArenaNoVirtual() == NULL) {
      delete options_;
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.MethodDescriptorProto.options)
  }
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int MethodDescriptorProto::kNameFieldNumber;
  const int MethodDescriptorProto::kInputTypeFieldNumber;
  const int MethodDescriptorProto::kOutputTypeFieldNumber;
  const int MethodDescriptorProto::kOptionsFieldNumber;
  const int MethodDescriptorProto::kClientStreamingFieldNumber;
  const int MethodDescriptorProto::kServerStreamingFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  MethodDescriptorProto::MethodDescriptorProto()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.MethodDescriptorProto)
  }
  MethodDescriptorProto::MethodDescriptorProto(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.MethodDescriptorProto)
  }
  MethodDescriptorProto::MethodDescriptorProto(const MethodDescriptorProto& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name()) {
      name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name(),
        GetArenaNoVirtual());
    }
    input_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_input_type()) {
      input_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.input_type(),
        GetArenaNoVirtual());
    }
    output_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_output_type()) {
      output_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.output_type(),
        GetArenaNoVirtual());
    }
    if (from.has_options()) {
      options_ = new ::google::protobuf::MethodOptions(*from.options_);
    } else {
      options_ = NULL;
    }
    ::memcpy(&client_streaming_, &from.client_streaming_,
      static_cast<size_t>(reinterpret_cast<char*>(&server_streaming_) -
      reinterpret_cast<char*>(&client_streaming_)) + sizeof(server_streaming_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.MethodDescriptorProto)
  }
  
  void MethodDescriptorProto::SharedCtor() {
    _cached_size_ = 0;
    name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    input_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    output_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&options_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&server_streaming_) -
        reinterpret_cast<char*>(&options_)) + sizeof(server_streaming_));
  }
  
  MethodDescriptorProto::~MethodDescriptorProto() {
    // @@protoc_insertion_point(destructor:google.protobuf.MethodDescriptorProto)
    SharedDtor();
  }
  
  void MethodDescriptorProto::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    input_type_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    output_type_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    if (this != internal_default_instance()) delete options_;
  }
  
  void MethodDescriptorProto::ArenaDtor(void* object) {
    MethodDescriptorProto* _this = reinterpret_cast< MethodDescriptorProto* >(object);
    (void)_this;
  }
  void MethodDescriptorProto::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void MethodDescriptorProto::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* MethodDescriptorProto::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const MethodDescriptorProto& MethodDescriptorProto::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  MethodDescriptorProto* MethodDescriptorProto::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<MethodDescriptorProto>(arena);
  }
  
  void MethodDescriptorProto::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.MethodDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 15u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!name_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!input_type_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        input_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000004u) {
        GOOGLE_DCHECK(!output_type_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        output_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000008u) {
        GOOGLE_DCHECK(options_ != NULL);
        options_->::google::protobuf::MethodOptions::Clear();
      }
    }
    if (cached_has_bits & 48u) {
      ::memset(&client_streaming_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&server_streaming_) -
          reinterpret_cast<char*>(&client_streaming_)) + sizeof(server_streaming_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool MethodDescriptorProto::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.MethodDescriptorProto)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string name = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name().data(), static_cast<int>(this->name().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.MethodDescriptorProto.name");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string input_type = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_input_type()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->input_type().data(), static_cast<int>(this->input_type().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.MethodDescriptorProto.input_type");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string output_type = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_output_type()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->output_type().data(), static_cast<int>(this->output_type().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.MethodDescriptorProto.output_type");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.MethodOptions options = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                 input, mutable_options()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool client_streaming = 5 [default = false];
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            set_has_client_streaming();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &client_streaming_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool server_streaming = 6 [default = false];
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
            set_has_server_streaming();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &server_streaming_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.MethodDescriptorProto)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.MethodDescriptorProto)
    return false;
  #undef DO_
  }
  
  void MethodDescriptorProto::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.MethodDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.name");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name(), output);
    }
  
    // optional string input_type = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->input_type().data(), static_cast<int>(this->input_type().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.input_type");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->input_type(), output);
    }
  
    // optional string output_type = 3;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->output_type().data(), static_cast<int>(this->output_type().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.output_type");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->output_type(), output);
    }
  
    // optional .google.protobuf.MethodOptions options = 4;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        4, *this->options_, output);
    }
  
    // optional bool client_streaming = 5 [default = false];
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->client_streaming(), output);
    }
  
    // optional bool server_streaming = 6 [default = false];
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->server_streaming(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.MethodDescriptorProto)
  }
  
  ::google::protobuf::uint8* MethodDescriptorProto::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodDescriptorProto)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name().data(), static_cast<int>(this->name().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.name");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name(), target);
    }
  
    // optional string input_type = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->input_type().data(), static_cast<int>(this->input_type().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.input_type");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          2, this->input_type(), target);
    }
  
    // optional string output_type = 3;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->output_type().data(), static_cast<int>(this->output_type().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.MethodDescriptorProto.output_type");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          3, this->output_type(), target);
    }
  
    // optional .google.protobuf.MethodOptions options = 4;
    if (cached_has_bits & 0x00000008u) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          4, *this->options_, deterministic, target);
    }
  
    // optional bool client_streaming = 5 [default = false];
    if (cached_has_bits & 0x00000010u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->client_streaming(), target);
    }
  
    // optional bool server_streaming = 6 [default = false];
    if (cached_has_bits & 0x00000020u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->server_streaming(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodDescriptorProto)
    return target;
  }
  
  size_t MethodDescriptorProto::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodDescriptorProto)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (_has_bits_[0 / 32] & 63u) {
      // optional string name = 1;
      if (has_name()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->name());
      }
  
      // optional string input_type = 2;
      if (has_input_type()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->input_type());
      }
  
      // optional string output_type = 3;
      if (has_output_type()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->output_type());
      }
  
      // optional .google.protobuf.MethodOptions options = 4;
      if (has_options()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            *this->options_);
      }
  
      // optional bool client_streaming = 5 [default = false];
      if (has_client_streaming()) {
        total_size += 1 + 1;
      }
  
      // optional bool server_streaming = 6 [default = false];
      if (has_server_streaming()) {
        total_size += 1 + 1;
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void MethodDescriptorProto::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.MethodDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    const MethodDescriptorProto* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const MethodDescriptorProto>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.MethodDescriptorProto)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.MethodDescriptorProto)
      MergeFrom(*source);
    }
  }
  
  void MethodDescriptorProto::MergeFrom(const MethodDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodDescriptorProto)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 63u) {
      if (cached_has_bits & 0x00000001u) {
        set_name(from.name());
      }
      if (cached_has_bits & 0x00000002u) {
        set_input_type(from.input_type());
      }
      if (cached_has_bits & 0x00000004u) {
        set_output_type(from.output_type());
      }
      if (cached_has_bits & 0x00000008u) {
        mutable_options()->::google::protobuf::MethodOptions::MergeFrom(from.options());
      }
      if (cached_has_bits & 0x00000010u) {
        client_streaming_ = from.client_streaming_;
      }
      if (cached_has_bits & 0x00000020u) {
        server_streaming_ = from.server_streaming_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void MethodDescriptorProto::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.MethodDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void MethodDescriptorProto::CopyFrom(const MethodDescriptorProto& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.MethodDescriptorProto)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool MethodDescriptorProto::IsInitialized() const {
    if (has_options()) {
      if (!this->options_->IsInitialized()) return false;
    }
    return true;
  }
  
  void MethodDescriptorProto::Swap(MethodDescriptorProto* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      MethodDescriptorProto* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void MethodDescriptorProto::UnsafeArenaSwap(MethodDescriptorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void MethodDescriptorProto::InternalSwap(MethodDescriptorProto* other) {
    using std::swap;
    name_.Swap(&other->name_);
    input_type_.Swap(&other->input_type_);
    output_type_.Swap(&other->output_type_);
    swap(options_, other->options_);
    swap(client_streaming_, other->client_streaming_);
    swap(server_streaming_, other->server_streaming_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata MethodDescriptorProto::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // MethodDescriptorProto
  
  // optional string name = 1;
  bool MethodDescriptorProto::has_name() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void MethodDescriptorProto::set_has_name() {
    _has_bits_[0] |= 0x00000001u;
  }
  void MethodDescriptorProto::clear_has_name() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void MethodDescriptorProto::clear_name() {
    name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name();
  }
  const ::std::string& MethodDescriptorProto::name() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.name)
    return name_.Get();
  }
  void MethodDescriptorProto::set_name(const ::std::string& value) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.name)
  }
  #if LANG_CXX11
  void MethodDescriptorProto::set_name(::std::string&& value) {
    set_has_name();
    name_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.MethodDescriptorProto.name)
  }
  #endif
  void MethodDescriptorProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.MethodDescriptorProto.name)
  }
  void MethodDescriptorProto::set_name(const char* value,
      size_t size) {
    set_has_name();
    name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.MethodDescriptorProto.name)
  }
  ::std::string* MethodDescriptorProto::mutable_name() {
    set_has_name();
    // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.name)
    return name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::release_name() {
    // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.name)
    clear_has_name();
    return name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::unsafe_arena_release_name() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.MethodDescriptorProto.name)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name();
    return name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void MethodDescriptorProto::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.name)
  }
  void MethodDescriptorProto::unsafe_arena_set_allocated_name(
      ::std::string* name) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name != NULL) {
      set_has_name();
    } else {
      clear_has_name();
    }
    name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.MethodDescriptorProto.name)
  }
  
  // optional string input_type = 2;
  bool MethodDescriptorProto::has_input_type() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void MethodDescriptorProto::set_has_input_type() {
    _has_bits_[0] |= 0x00000002u;
  }
  void MethodDescriptorProto::clear_has_input_type() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void MethodDescriptorProto::clear_input_type() {
    input_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_input_type();
  }
  const ::std::string& MethodDescriptorProto::input_type() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.input_type)
    return input_type_.Get();
  }
  void MethodDescriptorProto::set_input_type(const ::std::string& value) {
    set_has_input_type();
    input_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.input_type)
  }
  #if LANG_CXX11
  void MethodDescriptorProto::set_input_type(::std::string&& value) {
    set_has_input_type();
    input_type_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.MethodDescriptorProto.input_type)
  }
  #endif
  void MethodDescriptorProto::set_input_type(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_input_type();
    input_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.MethodDescriptorProto.input_type)
  }
  void MethodDescriptorProto::set_input_type(const char* value,
      size_t size) {
    set_has_input_type();
    input_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.MethodDescriptorProto.input_type)
  }
  ::std::string* MethodDescriptorProto::mutable_input_type() {
    set_has_input_type();
    // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.input_type)
    return input_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::release_input_type() {
    // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.input_type)
    clear_has_input_type();
    return input_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::unsafe_arena_release_input_type() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.MethodDescriptorProto.input_type)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_input_type();
    return input_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void MethodDescriptorProto::set_allocated_input_type(::std::string* input_type) {
    if (input_type != NULL) {
      set_has_input_type();
    } else {
      clear_has_input_type();
    }
    input_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), input_type,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.input_type)
  }
  void MethodDescriptorProto::unsafe_arena_set_allocated_input_type(
      ::std::string* input_type) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (input_type != NULL) {
      set_has_input_type();
    } else {
      clear_has_input_type();
    }
    input_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        input_type, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.MethodDescriptorProto.input_type)
  }
  
  // optional string output_type = 3;
  bool MethodDescriptorProto::has_output_type() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void MethodDescriptorProto::set_has_output_type() {
    _has_bits_[0] |= 0x00000004u;
  }
  void MethodDescriptorProto::clear_has_output_type() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void MethodDescriptorProto::clear_output_type() {
    output_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_output_type();
  }
  const ::std::string& MethodDescriptorProto::output_type() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.output_type)
    return output_type_.Get();
  }
  void MethodDescriptorProto::set_output_type(const ::std::string& value) {
    set_has_output_type();
    output_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.output_type)
  }
  #if LANG_CXX11
  void MethodDescriptorProto::set_output_type(::std::string&& value) {
    set_has_output_type();
    output_type_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.MethodDescriptorProto.output_type)
  }
  #endif
  void MethodDescriptorProto::set_output_type(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_output_type();
    output_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.MethodDescriptorProto.output_type)
  }
  void MethodDescriptorProto::set_output_type(const char* value,
      size_t size) {
    set_has_output_type();
    output_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.MethodDescriptorProto.output_type)
  }
  ::std::string* MethodDescriptorProto::mutable_output_type() {
    set_has_output_type();
    // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.output_type)
    return output_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::release_output_type() {
    // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.output_type)
    clear_has_output_type();
    return output_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* MethodDescriptorProto::unsafe_arena_release_output_type() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.MethodDescriptorProto.output_type)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_output_type();
    return output_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void MethodDescriptorProto::set_allocated_output_type(::std::string* output_type) {
    if (output_type != NULL) {
      set_has_output_type();
    } else {
      clear_has_output_type();
    }
    output_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), output_type,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.output_type)
  }
  void MethodDescriptorProto::unsafe_arena_set_allocated_output_type(
      ::std::string* output_type) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (output_type != NULL) {
      set_has_output_type();
    } else {
      clear_has_output_type();
    }
    output_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        output_type, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.MethodDescriptorProto.output_type)
  }
  
  // optional .google.protobuf.MethodOptions options = 4;
  bool MethodDescriptorProto::has_options() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void MethodDescriptorProto::set_has_options() {
    _has_bits_[0] |= 0x00000008u;
  }
  void MethodDescriptorProto::clear_has_options() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void MethodDescriptorProto::clear_options() {
    if (options_ != NULL) options_->::google::protobuf::MethodOptions::Clear();
    clear_has_options();
  }
  const ::google::protobuf::MethodOptions& MethodDescriptorProto::options() const {
    const ::google::protobuf::MethodOptions* p = options_;
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.options)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::MethodOptions*>(
        &::google::protobuf::_MethodOptions_default_instance_);
  }
  ::google::protobuf::MethodOptions* MethodDescriptorProto::mutable_options() {
    set_has_options();
    if (options_ == NULL) {
      _slow_mutable_options();
    }
    // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.options)
    return options_;
  }
  ::google::protobuf::MethodOptions* MethodDescriptorProto::release_options() {
    // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.options)
    clear_has_options();
    if (GetArenaNoVirtual() != NULL) {
      return _slow_release_options();
    } else {
      ::google::protobuf::MethodOptions* temp = options_;
      options_ = NULL;
      return temp;
    }
  }
   void MethodDescriptorProto::set_allocated_options(::google::protobuf::MethodOptions* options) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete options_;
    }
    if (options != NULL) {
      _slow_set_allocated_options(message_arena, &options);
    }
    options_ = options;
    if (options) {
      set_has_options();
    } else {
      clear_has_options();
    }
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.options)
  }
  
  // optional bool client_streaming = 5 [default = false];
  bool MethodDescriptorProto::has_client_streaming() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void MethodDescriptorProto::set_has_client_streaming() {
    _has_bits_[0] |= 0x00000010u;
  }
  void MethodDescriptorProto::clear_has_client_streaming() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void MethodDescriptorProto::clear_client_streaming() {
    client_streaming_ = false;
    clear_has_client_streaming();
  }
  bool MethodDescriptorProto::client_streaming() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.client_streaming)
    return client_streaming_;
  }
  void MethodDescriptorProto::set_client_streaming(bool value) {
    set_has_client_streaming();
    client_streaming_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.client_streaming)
  }
  
  // optional bool server_streaming = 6 [default = false];
  bool MethodDescriptorProto::has_server_streaming() const {
    return (_has_bits_[0] & 0x00000020u) != 0;
  }
  void MethodDescriptorProto::set_has_server_streaming() {
    _has_bits_[0] |= 0x00000020u;
  }
  void MethodDescriptorProto::clear_has_server_streaming() {
    _has_bits_[0] &= ~0x00000020u;
  }
  void MethodDescriptorProto::clear_server_streaming() {
    server_streaming_ = false;
    clear_has_server_streaming();
  }
  bool MethodDescriptorProto::server_streaming() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.server_streaming)
    return server_streaming_;
  }
  void MethodDescriptorProto::set_server_streaming(bool value) {
    set_has_server_streaming();
    server_streaming_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.server_streaming)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int FileOptions::kJavaPackageFieldNumber;
  const int FileOptions::kJavaOuterClassnameFieldNumber;
  const int FileOptions::kJavaMultipleFilesFieldNumber;
  const int FileOptions::kJavaGenerateEqualsAndHashFieldNumber;
  const int FileOptions::kJavaStringCheckUtf8FieldNumber;
  const int FileOptions::kOptimizeForFieldNumber;
  const int FileOptions::kGoPackageFieldNumber;
  const int FileOptions::kCcGenericServicesFieldNumber;
  const int FileOptions::kJavaGenericServicesFieldNumber;
  const int FileOptions::kPyGenericServicesFieldNumber;
  const int FileOptions::kPhpGenericServicesFieldNumber;
  const int FileOptions::kDeprecatedFieldNumber;
  const int FileOptions::kCcEnableArenasFieldNumber;
  const int FileOptions::kObjcClassPrefixFieldNumber;
  const int FileOptions::kCsharpNamespaceFieldNumber;
  const int FileOptions::kSwiftPrefixFieldNumber;
  const int FileOptions::kPhpClassPrefixFieldNumber;
  const int FileOptions::kPhpNamespaceFieldNumber;
  const int FileOptions::kPhpMetadataNamespaceFieldNumber;
  const int FileOptions::kRubyPackageFieldNumber;
  const int FileOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  FileOptions::FileOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.FileOptions)
  }
  FileOptions::FileOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.FileOptions)
  }
  FileOptions::FileOptions(const FileOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    java_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_java_package()) {
      java_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.java_package(),
        GetArenaNoVirtual());
    }
    java_outer_classname_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_java_outer_classname()) {
      java_outer_classname_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.java_outer_classname(),
        GetArenaNoVirtual());
    }
    go_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_go_package()) {
      go_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.go_package(),
        GetArenaNoVirtual());
    }
    objc_class_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_objc_class_prefix()) {
      objc_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.objc_class_prefix(),
        GetArenaNoVirtual());
    }
    csharp_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_csharp_namespace()) {
      csharp_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.csharp_namespace(),
        GetArenaNoVirtual());
    }
    swift_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_swift_prefix()) {
      swift_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.swift_prefix(),
        GetArenaNoVirtual());
    }
    php_class_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_php_class_prefix()) {
      php_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.php_class_prefix(),
        GetArenaNoVirtual());
    }
    php_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_php_namespace()) {
      php_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.php_namespace(),
        GetArenaNoVirtual());
    }
    php_metadata_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_php_metadata_namespace()) {
      php_metadata_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.php_metadata_namespace(),
        GetArenaNoVirtual());
    }
    ruby_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_ruby_package()) {
      ruby_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.ruby_package(),
        GetArenaNoVirtual());
    }
    ::memcpy(&java_multiple_files_, &from.java_multiple_files_,
      static_cast<size_t>(reinterpret_cast<char*>(&optimize_for_) -
      reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(optimize_for_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.FileOptions)
  }
  
  void FileOptions::SharedCtor() {
    _cached_size_ = 0;
    java_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    java_outer_classname_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    go_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    objc_class_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    csharp_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    swift_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    php_class_prefix_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    php_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    php_metadata_namespace_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ruby_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&java_multiple_files_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&cc_enable_arenas_) -
        reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(cc_enable_arenas_));
    optimize_for_ = 1;
  }
  
  FileOptions::~FileOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.FileOptions)
    SharedDtor();
  }
  
  void FileOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    java_package_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    java_outer_classname_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    go_package_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    objc_class_prefix_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    csharp_namespace_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    swift_prefix_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    php_class_prefix_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    php_namespace_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    php_metadata_namespace_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    ruby_package_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
  }
  
  void FileOptions::ArenaDtor(void* object) {
    FileOptions* _this = reinterpret_cast< FileOptions* >(object);
    (void)_this;
  }
  void FileOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void FileOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* FileOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const FileOptions& FileOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  FileOptions* FileOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<FileOptions>(arena);
  }
  
  void FileOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.FileOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 255u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!java_package_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        java_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!java_outer_classname_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        java_outer_classname_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000004u) {
        GOOGLE_DCHECK(!go_package_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        go_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000008u) {
        GOOGLE_DCHECK(!objc_class_prefix_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        objc_class_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000010u) {
        GOOGLE_DCHECK(!csharp_namespace_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        csharp_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000020u) {
        GOOGLE_DCHECK(!swift_prefix_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        swift_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000040u) {
        GOOGLE_DCHECK(!php_class_prefix_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        php_class_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000080u) {
        GOOGLE_DCHECK(!php_namespace_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        php_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
    }
    if (cached_has_bits & 768u) {
      if (cached_has_bits & 0x00000100u) {
        GOOGLE_DCHECK(!php_metadata_namespace_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        php_metadata_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000200u) {
        GOOGLE_DCHECK(!ruby_package_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        ruby_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
    }
    if (cached_has_bits & 64512u) {
      ::memset(&java_multiple_files_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&py_generic_services_) -
          reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(py_generic_services_));
    }
    if (cached_has_bits & 983040u) {
      ::memset(&php_generic_services_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&cc_enable_arenas_) -
          reinterpret_cast<char*>(&php_generic_services_)) + sizeof(cc_enable_arenas_));
      optimize_for_ = 1;
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool FileOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.FileOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional string java_package = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_java_package()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->java_package().data(), static_cast<int>(this->java_package().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.java_package");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string java_outer_classname = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_java_outer_classname()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->java_outer_classname().data(), static_cast<int>(this->java_outer_classname().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.java_outer_classname");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
        case 9: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::FileOptions_OptimizeMode_IsValid(value)) {
              set_optimize_for(static_cast< ::google::protobuf::FileOptions_OptimizeMode >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  9, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool java_multiple_files = 10 [default = false];
        case 10: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(80u /* 80 & 0xFF */)) {
            set_has_java_multiple_files();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &java_multiple_files_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string go_package = 11;
        case 11: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_go_package()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->go_package().data(), static_cast<int>(this->go_package().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.go_package");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool cc_generic_services = 16 [default = false];
        case 16: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(128u /* 128 & 0xFF */)) {
            set_has_cc_generic_services();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &cc_generic_services_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool java_generic_services = 17 [default = false];
        case 17: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(136u /* 136 & 0xFF */)) {
            set_has_java_generic_services();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &java_generic_services_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool py_generic_services = 18 [default = false];
        case 18: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(144u /* 144 & 0xFF */)) {
            set_has_py_generic_services();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &py_generic_services_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
        case 20: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(160u /* 160 & 0xFF */)) {
            set_has_java_generate_equals_and_hash();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &java_generate_equals_and_hash_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool deprecated = 23 [default = false];
        case 23: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(184u /* 184 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool java_string_check_utf8 = 27 [default = false];
        case 27: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(216u /* 216 & 0xFF */)) {
            set_has_java_string_check_utf8();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &java_string_check_utf8_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool cc_enable_arenas = 31 [default = false];
        case 31: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(248u /* 248 & 0xFF */)) {
            set_has_cc_enable_arenas();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &cc_enable_arenas_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string objc_class_prefix = 36;
        case 36: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 290 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_objc_class_prefix()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->objc_class_prefix().data(), static_cast<int>(this->objc_class_prefix().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.objc_class_prefix");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string csharp_namespace = 37;
        case 37: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(42u /* 298 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_csharp_namespace()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->csharp_namespace().data(), static_cast<int>(this->csharp_namespace().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.csharp_namespace");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string swift_prefix = 39;
        case 39: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 314 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_swift_prefix()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->swift_prefix().data(), static_cast<int>(this->swift_prefix().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.swift_prefix");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string php_class_prefix = 40;
        case 40: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 322 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_php_class_prefix()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->php_class_prefix().data(), static_cast<int>(this->php_class_prefix().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.php_class_prefix");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string php_namespace = 41;
        case 41: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(74u /* 330 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_php_namespace()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->php_namespace().data(), static_cast<int>(this->php_namespace().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.php_namespace");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool php_generic_services = 42 [default = false];
        case 42: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(80u /* 336 & 0xFF */)) {
            set_has_php_generic_services();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &php_generic_services_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string php_metadata_namespace = 44;
        case 44: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(98u /* 354 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_php_metadata_namespace()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->php_metadata_namespace().data(), static_cast<int>(this->php_metadata_namespace().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.php_metadata_namespace");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string ruby_package = 45;
        case 45: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(106u /* 362 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_ruby_package()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->ruby_package().data(), static_cast<int>(this->ruby_package().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.FileOptions.ruby_package");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.FileOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.FileOptions)
    return false;
  #undef DO_
  }
  
  void FileOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.FileOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string java_package = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->java_package().data(), static_cast<int>(this->java_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.java_package");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->java_package(), output);
    }
  
    // optional string java_outer_classname = 8;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->java_outer_classname().data(), static_cast<int>(this->java_outer_classname().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.java_outer_classname");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        8, this->java_outer_classname(), output);
    }
  
    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
    if (cached_has_bits & 0x00080000u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        9, this->optimize_for(), output);
    }
  
    // optional bool java_multiple_files = 10 [default = false];
    if (cached_has_bits & 0x00000400u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->java_multiple_files(), output);
    }
  
    // optional string go_package = 11;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->go_package().data(), static_cast<int>(this->go_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.go_package");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        11, this->go_package(), output);
    }
  
    // optional bool cc_generic_services = 16 [default = false];
    if (cached_has_bits & 0x00002000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->cc_generic_services(), output);
    }
  
    // optional bool java_generic_services = 17 [default = false];
    if (cached_has_bits & 0x00004000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->java_generic_services(), output);
    }
  
    // optional bool py_generic_services = 18 [default = false];
    if (cached_has_bits & 0x00008000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->py_generic_services(), output);
    }
  
    // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
    if (cached_has_bits & 0x00000800u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->java_generate_equals_and_hash(), output);
    }
  
    // optional bool deprecated = 23 [default = false];
    if (cached_has_bits & 0x00020000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(23, this->deprecated(), output);
    }
  
    // optional bool java_string_check_utf8 = 27 [default = false];
    if (cached_has_bits & 0x00001000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(27, this->java_string_check_utf8(), output);
    }
  
    // optional bool cc_enable_arenas = 31 [default = false];
    if (cached_has_bits & 0x00040000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(31, this->cc_enable_arenas(), output);
    }
  
    // optional string objc_class_prefix = 36;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->objc_class_prefix().data(), static_cast<int>(this->objc_class_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.objc_class_prefix");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        36, this->objc_class_prefix(), output);
    }
  
    // optional string csharp_namespace = 37;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->csharp_namespace().data(), static_cast<int>(this->csharp_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.csharp_namespace");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        37, this->csharp_namespace(), output);
    }
  
    // optional string swift_prefix = 39;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->swift_prefix().data(), static_cast<int>(this->swift_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.swift_prefix");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        39, this->swift_prefix(), output);
    }
  
    // optional string php_class_prefix = 40;
    if (cached_has_bits & 0x00000040u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_class_prefix().data(), static_cast<int>(this->php_class_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_class_prefix");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        40, this->php_class_prefix(), output);
    }
  
    // optional string php_namespace = 41;
    if (cached_has_bits & 0x00000080u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_namespace().data(), static_cast<int>(this->php_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_namespace");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        41, this->php_namespace(), output);
    }
  
    // optional bool php_generic_services = 42 [default = false];
    if (cached_has_bits & 0x00010000u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(42, this->php_generic_services(), output);
    }
  
    // optional string php_metadata_namespace = 44;
    if (cached_has_bits & 0x00000100u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_metadata_namespace().data(), static_cast<int>(this->php_metadata_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_metadata_namespace");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        44, this->php_metadata_namespace(), output);
    }
  
    // optional string ruby_package = 45;
    if (cached_has_bits & 0x00000200u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->ruby_package().data(), static_cast<int>(this->ruby_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.ruby_package");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        45, this->ruby_package(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.FileOptions)
  }
  
  ::google::protobuf::uint8* FileOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional string java_package = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->java_package().data(), static_cast<int>(this->java_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.java_package");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->java_package(), target);
    }
  
    // optional string java_outer_classname = 8;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->java_outer_classname().data(), static_cast<int>(this->java_outer_classname().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.java_outer_classname");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          8, this->java_outer_classname(), target);
    }
  
    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
    if (cached_has_bits & 0x00080000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        9, this->optimize_for(), target);
    }
  
    // optional bool java_multiple_files = 10 [default = false];
    if (cached_has_bits & 0x00000400u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->java_multiple_files(), target);
    }
  
    // optional string go_package = 11;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->go_package().data(), static_cast<int>(this->go_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.go_package");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          11, this->go_package(), target);
    }
  
    // optional bool cc_generic_services = 16 [default = false];
    if (cached_has_bits & 0x00002000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->cc_generic_services(), target);
    }
  
    // optional bool java_generic_services = 17 [default = false];
    if (cached_has_bits & 0x00004000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->java_generic_services(), target);
    }
  
    // optional bool py_generic_services = 18 [default = false];
    if (cached_has_bits & 0x00008000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->py_generic_services(), target);
    }
  
    // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
    if (cached_has_bits & 0x00000800u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->java_generate_equals_and_hash(), target);
    }
  
    // optional bool deprecated = 23 [default = false];
    if (cached_has_bits & 0x00020000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(23, this->deprecated(), target);
    }
  
    // optional bool java_string_check_utf8 = 27 [default = false];
    if (cached_has_bits & 0x00001000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(27, this->java_string_check_utf8(), target);
    }
  
    // optional bool cc_enable_arenas = 31 [default = false];
    if (cached_has_bits & 0x00040000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(31, this->cc_enable_arenas(), target);
    }
  
    // optional string objc_class_prefix = 36;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->objc_class_prefix().data(), static_cast<int>(this->objc_class_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.objc_class_prefix");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          36, this->objc_class_prefix(), target);
    }
  
    // optional string csharp_namespace = 37;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->csharp_namespace().data(), static_cast<int>(this->csharp_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.csharp_namespace");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          37, this->csharp_namespace(), target);
    }
  
    // optional string swift_prefix = 39;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->swift_prefix().data(), static_cast<int>(this->swift_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.swift_prefix");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          39, this->swift_prefix(), target);
    }
  
    // optional string php_class_prefix = 40;
    if (cached_has_bits & 0x00000040u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_class_prefix().data(), static_cast<int>(this->php_class_prefix().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_class_prefix");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          40, this->php_class_prefix(), target);
    }
  
    // optional string php_namespace = 41;
    if (cached_has_bits & 0x00000080u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_namespace().data(), static_cast<int>(this->php_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_namespace");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          41, this->php_namespace(), target);
    }
  
    // optional bool php_generic_services = 42 [default = false];
    if (cached_has_bits & 0x00010000u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(42, this->php_generic_services(), target);
    }
  
    // optional string php_metadata_namespace = 44;
    if (cached_has_bits & 0x00000100u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->php_metadata_namespace().data(), static_cast<int>(this->php_metadata_namespace().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.php_metadata_namespace");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          44, this->php_metadata_namespace(), target);
    }
  
    // optional string ruby_package = 45;
    if (cached_has_bits & 0x00000200u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->ruby_package().data(), static_cast<int>(this->ruby_package().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.FileOptions.ruby_package");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          45, this->ruby_package(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileOptions)
    return target;
  }
  
  size_t FileOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 255u) {
      // optional string java_package = 1;
      if (has_java_package()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->java_package());
      }
  
      // optional string java_outer_classname = 8;
      if (has_java_outer_classname()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->java_outer_classname());
      }
  
      // optional string go_package = 11;
      if (has_go_package()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->go_package());
      }
  
      // optional string objc_class_prefix = 36;
      if (has_objc_class_prefix()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->objc_class_prefix());
      }
  
      // optional string csharp_namespace = 37;
      if (has_csharp_namespace()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->csharp_namespace());
      }
  
      // optional string swift_prefix = 39;
      if (has_swift_prefix()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->swift_prefix());
      }
  
      // optional string php_class_prefix = 40;
      if (has_php_class_prefix()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->php_class_prefix());
      }
  
      // optional string php_namespace = 41;
      if (has_php_namespace()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->php_namespace());
      }
  
    }
    if (_has_bits_[8 / 32] & 65280u) {
      // optional string php_metadata_namespace = 44;
      if (has_php_metadata_namespace()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->php_metadata_namespace());
      }
  
      // optional string ruby_package = 45;
      if (has_ruby_package()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->ruby_package());
      }
  
      // optional bool java_multiple_files = 10 [default = false];
      if (has_java_multiple_files()) {
        total_size += 1 + 1;
      }
  
      // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
      if (has_java_generate_equals_and_hash()) {
        total_size += 2 + 1;
      }
  
      // optional bool java_string_check_utf8 = 27 [default = false];
      if (has_java_string_check_utf8()) {
        total_size += 2 + 1;
      }
  
      // optional bool cc_generic_services = 16 [default = false];
      if (has_cc_generic_services()) {
        total_size += 2 + 1;
      }
  
      // optional bool java_generic_services = 17 [default = false];
      if (has_java_generic_services()) {
        total_size += 2 + 1;
      }
  
      // optional bool py_generic_services = 18 [default = false];
      if (has_py_generic_services()) {
        total_size += 2 + 1;
      }
  
    }
    if (_has_bits_[16 / 32] & 983040u) {
      // optional bool php_generic_services = 42 [default = false];
      if (has_php_generic_services()) {
        total_size += 2 + 1;
      }
  
      // optional bool deprecated = 23 [default = false];
      if (has_deprecated()) {
        total_size += 2 + 1;
      }
  
      // optional bool cc_enable_arenas = 31 [default = false];
      if (has_cc_enable_arenas()) {
        total_size += 2 + 1;
      }
  
      // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
      if (has_optimize_for()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->optimize_for());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void FileOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.FileOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const FileOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const FileOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.FileOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.FileOptions)
      MergeFrom(*source);
    }
  }
  
  void FileOptions::MergeFrom(const FileOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 255u) {
      if (cached_has_bits & 0x00000001u) {
        set_java_package(from.java_package());
      }
      if (cached_has_bits & 0x00000002u) {
        set_java_outer_classname(from.java_outer_classname());
      }
      if (cached_has_bits & 0x00000004u) {
        set_go_package(from.go_package());
      }
      if (cached_has_bits & 0x00000008u) {
        set_objc_class_prefix(from.objc_class_prefix());
      }
      if (cached_has_bits & 0x00000010u) {
        set_csharp_namespace(from.csharp_namespace());
      }
      if (cached_has_bits & 0x00000020u) {
        set_swift_prefix(from.swift_prefix());
      }
      if (cached_has_bits & 0x00000040u) {
        set_php_class_prefix(from.php_class_prefix());
      }
      if (cached_has_bits & 0x00000080u) {
        set_php_namespace(from.php_namespace());
      }
    }
    if (cached_has_bits & 65280u) {
      if (cached_has_bits & 0x00000100u) {
        set_php_metadata_namespace(from.php_metadata_namespace());
      }
      if (cached_has_bits & 0x00000200u) {
        set_ruby_package(from.ruby_package());
      }
      if (cached_has_bits & 0x00000400u) {
        java_multiple_files_ = from.java_multiple_files_;
      }
      if (cached_has_bits & 0x00000800u) {
        java_generate_equals_and_hash_ = from.java_generate_equals_and_hash_;
      }
      if (cached_has_bits & 0x00001000u) {
        java_string_check_utf8_ = from.java_string_check_utf8_;
      }
      if (cached_has_bits & 0x00002000u) {
        cc_generic_services_ = from.cc_generic_services_;
      }
      if (cached_has_bits & 0x00004000u) {
        java_generic_services_ = from.java_generic_services_;
      }
      if (cached_has_bits & 0x00008000u) {
        py_generic_services_ = from.py_generic_services_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
    if (cached_has_bits & 983040u) {
      if (cached_has_bits & 0x00010000u) {
        php_generic_services_ = from.php_generic_services_;
      }
      if (cached_has_bits & 0x00020000u) {
        deprecated_ = from.deprecated_;
      }
      if (cached_has_bits & 0x00040000u) {
        cc_enable_arenas_ = from.cc_enable_arenas_;
      }
      if (cached_has_bits & 0x00080000u) {
        optimize_for_ = from.optimize_for_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void FileOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.FileOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void FileOptions::CopyFrom(const FileOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.FileOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool FileOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void FileOptions::Swap(FileOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      FileOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void FileOptions::UnsafeArenaSwap(FileOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void FileOptions::InternalSwap(FileOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    java_package_.Swap(&other->java_package_);
    java_outer_classname_.Swap(&other->java_outer_classname_);
    go_package_.Swap(&other->go_package_);
    objc_class_prefix_.Swap(&other->objc_class_prefix_);
    csharp_namespace_.Swap(&other->csharp_namespace_);
    swift_prefix_.Swap(&other->swift_prefix_);
    php_class_prefix_.Swap(&other->php_class_prefix_);
    php_namespace_.Swap(&other->php_namespace_);
    php_metadata_namespace_.Swap(&other->php_metadata_namespace_);
    ruby_package_.Swap(&other->ruby_package_);
    swap(java_multiple_files_, other->java_multiple_files_);
    swap(java_generate_equals_and_hash_, other->java_generate_equals_and_hash_);
    swap(java_string_check_utf8_, other->java_string_check_utf8_);
    swap(cc_generic_services_, other->cc_generic_services_);
    swap(java_generic_services_, other->java_generic_services_);
    swap(py_generic_services_, other->py_generic_services_);
    swap(php_generic_services_, other->php_generic_services_);
    swap(deprecated_, other->deprecated_);
    swap(cc_enable_arenas_, other->cc_enable_arenas_);
    swap(optimize_for_, other->optimize_for_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata FileOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // FileOptions
  
  // optional string java_package = 1;
  bool FileOptions::has_java_package() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void FileOptions::set_has_java_package() {
    _has_bits_[0] |= 0x00000001u;
  }
  void FileOptions::clear_has_java_package() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void FileOptions::clear_java_package() {
    java_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_java_package();
  }
  const ::std::string& FileOptions::java_package() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_package)
    return java_package_.Get();
  }
  void FileOptions::set_java_package(const ::std::string& value) {
    set_has_java_package();
    java_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_package)
  }
  #if LANG_CXX11
  void FileOptions::set_java_package(::std::string&& value) {
    set_has_java_package();
    java_package_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.java_package)
  }
  #endif
  void FileOptions::set_java_package(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_java_package();
    java_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.java_package)
  }
  void FileOptions::set_java_package(const char* value,
      size_t size) {
    set_has_java_package();
    java_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.java_package)
  }
  ::std::string* FileOptions::mutable_java_package() {
    set_has_java_package();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.java_package)
    return java_package_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_java_package() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.java_package)
    clear_has_java_package();
    return java_package_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_java_package() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.java_package)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_java_package();
    return java_package_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_java_package(::std::string* java_package) {
    if (java_package != NULL) {
      set_has_java_package();
    } else {
      clear_has_java_package();
    }
    java_package_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), java_package,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.java_package)
  }
  void FileOptions::unsafe_arena_set_allocated_java_package(
      ::std::string* java_package) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (java_package != NULL) {
      set_has_java_package();
    } else {
      clear_has_java_package();
    }
    java_package_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        java_package, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.java_package)
  }
  
  // optional string java_outer_classname = 8;
  bool FileOptions::has_java_outer_classname() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void FileOptions::set_has_java_outer_classname() {
    _has_bits_[0] |= 0x00000002u;
  }
  void FileOptions::clear_has_java_outer_classname() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void FileOptions::clear_java_outer_classname() {
    java_outer_classname_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_java_outer_classname();
  }
  const ::std::string& FileOptions::java_outer_classname() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_outer_classname)
    return java_outer_classname_.Get();
  }
  void FileOptions::set_java_outer_classname(const ::std::string& value) {
    set_has_java_outer_classname();
    java_outer_classname_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_outer_classname)
  }
  #if LANG_CXX11
  void FileOptions::set_java_outer_classname(::std::string&& value) {
    set_has_java_outer_classname();
    java_outer_classname_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.java_outer_classname)
  }
  #endif
  void FileOptions::set_java_outer_classname(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_java_outer_classname();
    java_outer_classname_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.java_outer_classname)
  }
  void FileOptions::set_java_outer_classname(const char* value,
      size_t size) {
    set_has_java_outer_classname();
    java_outer_classname_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.java_outer_classname)
  }
  ::std::string* FileOptions::mutable_java_outer_classname() {
    set_has_java_outer_classname();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.java_outer_classname)
    return java_outer_classname_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_java_outer_classname() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.java_outer_classname)
    clear_has_java_outer_classname();
    return java_outer_classname_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_java_outer_classname() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.java_outer_classname)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_java_outer_classname();
    return java_outer_classname_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_java_outer_classname(::std::string* java_outer_classname) {
    if (java_outer_classname != NULL) {
      set_has_java_outer_classname();
    } else {
      clear_has_java_outer_classname();
    }
    java_outer_classname_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), java_outer_classname,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.java_outer_classname)
  }
  void FileOptions::unsafe_arena_set_allocated_java_outer_classname(
      ::std::string* java_outer_classname) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (java_outer_classname != NULL) {
      set_has_java_outer_classname();
    } else {
      clear_has_java_outer_classname();
    }
    java_outer_classname_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        java_outer_classname, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.java_outer_classname)
  }
  
  // optional bool java_multiple_files = 10 [default = false];
  bool FileOptions::has_java_multiple_files() const {
    return (_has_bits_[0] & 0x00000400u) != 0;
  }
  void FileOptions::set_has_java_multiple_files() {
    _has_bits_[0] |= 0x00000400u;
  }
  void FileOptions::clear_has_java_multiple_files() {
    _has_bits_[0] &= ~0x00000400u;
  }
  void FileOptions::clear_java_multiple_files() {
    java_multiple_files_ = false;
    clear_has_java_multiple_files();
  }
  bool FileOptions::java_multiple_files() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_multiple_files)
    return java_multiple_files_;
  }
  void FileOptions::set_java_multiple_files(bool value) {
    set_has_java_multiple_files();
    java_multiple_files_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_multiple_files)
  }
  
  // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
  bool FileOptions::has_java_generate_equals_and_hash() const {
    return (_has_bits_[0] & 0x00000800u) != 0;
  }
  void FileOptions::set_has_java_generate_equals_and_hash() {
    _has_bits_[0] |= 0x00000800u;
  }
  void FileOptions::clear_has_java_generate_equals_and_hash() {
    _has_bits_[0] &= ~0x00000800u;
  }
  void FileOptions::clear_java_generate_equals_and_hash() {
    java_generate_equals_and_hash_ = false;
    clear_has_java_generate_equals_and_hash();
  }
  bool FileOptions::java_generate_equals_and_hash() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_generate_equals_and_hash)
    return java_generate_equals_and_hash_;
  }
  void FileOptions::set_java_generate_equals_and_hash(bool value) {
    set_has_java_generate_equals_and_hash();
    java_generate_equals_and_hash_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_generate_equals_and_hash)
  }
  
  // optional bool java_string_check_utf8 = 27 [default = false];
  bool FileOptions::has_java_string_check_utf8() const {
    return (_has_bits_[0] & 0x00001000u) != 0;
  }
  void FileOptions::set_has_java_string_check_utf8() {
    _has_bits_[0] |= 0x00001000u;
  }
  void FileOptions::clear_has_java_string_check_utf8() {
    _has_bits_[0] &= ~0x00001000u;
  }
  void FileOptions::clear_java_string_check_utf8() {
    java_string_check_utf8_ = false;
    clear_has_java_string_check_utf8();
  }
  bool FileOptions::java_string_check_utf8() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_string_check_utf8)
    return java_string_check_utf8_;
  }
  void FileOptions::set_java_string_check_utf8(bool value) {
    set_has_java_string_check_utf8();
    java_string_check_utf8_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_string_check_utf8)
  }
  
  // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
  bool FileOptions::has_optimize_for() const {
    return (_has_bits_[0] & 0x00080000u) != 0;
  }
  void FileOptions::set_has_optimize_for() {
    _has_bits_[0] |= 0x00080000u;
  }
  void FileOptions::clear_has_optimize_for() {
    _has_bits_[0] &= ~0x00080000u;
  }
  void FileOptions::clear_optimize_for() {
    optimize_for_ = 1;
    clear_has_optimize_for();
  }
  ::google::protobuf::FileOptions_OptimizeMode FileOptions::optimize_for() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.optimize_for)
    return static_cast< ::google::protobuf::FileOptions_OptimizeMode >(optimize_for_);
  }
  void FileOptions::set_optimize_for(::google::protobuf::FileOptions_OptimizeMode value) {
    assert(::google::protobuf::FileOptions_OptimizeMode_IsValid(value));
    set_has_optimize_for();
    optimize_for_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.optimize_for)
  }
  
  // optional string go_package = 11;
  bool FileOptions::has_go_package() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void FileOptions::set_has_go_package() {
    _has_bits_[0] |= 0x00000004u;
  }
  void FileOptions::clear_has_go_package() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void FileOptions::clear_go_package() {
    go_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_go_package();
  }
  const ::std::string& FileOptions::go_package() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.go_package)
    return go_package_.Get();
  }
  void FileOptions::set_go_package(const ::std::string& value) {
    set_has_go_package();
    go_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.go_package)
  }
  #if LANG_CXX11
  void FileOptions::set_go_package(::std::string&& value) {
    set_has_go_package();
    go_package_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.go_package)
  }
  #endif
  void FileOptions::set_go_package(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_go_package();
    go_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.go_package)
  }
  void FileOptions::set_go_package(const char* value,
      size_t size) {
    set_has_go_package();
    go_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.go_package)
  }
  ::std::string* FileOptions::mutable_go_package() {
    set_has_go_package();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.go_package)
    return go_package_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_go_package() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.go_package)
    clear_has_go_package();
    return go_package_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_go_package() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.go_package)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_go_package();
    return go_package_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_go_package(::std::string* go_package) {
    if (go_package != NULL) {
      set_has_go_package();
    } else {
      clear_has_go_package();
    }
    go_package_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), go_package,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.go_package)
  }
  void FileOptions::unsafe_arena_set_allocated_go_package(
      ::std::string* go_package) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (go_package != NULL) {
      set_has_go_package();
    } else {
      clear_has_go_package();
    }
    go_package_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        go_package, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.go_package)
  }
  
  // optional bool cc_generic_services = 16 [default = false];
  bool FileOptions::has_cc_generic_services() const {
    return (_has_bits_[0] & 0x00002000u) != 0;
  }
  void FileOptions::set_has_cc_generic_services() {
    _has_bits_[0] |= 0x00002000u;
  }
  void FileOptions::clear_has_cc_generic_services() {
    _has_bits_[0] &= ~0x00002000u;
  }
  void FileOptions::clear_cc_generic_services() {
    cc_generic_services_ = false;
    clear_has_cc_generic_services();
  }
  bool FileOptions::cc_generic_services() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.cc_generic_services)
    return cc_generic_services_;
  }
  void FileOptions::set_cc_generic_services(bool value) {
    set_has_cc_generic_services();
    cc_generic_services_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.cc_generic_services)
  }
  
  // optional bool java_generic_services = 17 [default = false];
  bool FileOptions::has_java_generic_services() const {
    return (_has_bits_[0] & 0x00004000u) != 0;
  }
  void FileOptions::set_has_java_generic_services() {
    _has_bits_[0] |= 0x00004000u;
  }
  void FileOptions::clear_has_java_generic_services() {
    _has_bits_[0] &= ~0x00004000u;
  }
  void FileOptions::clear_java_generic_services() {
    java_generic_services_ = false;
    clear_has_java_generic_services();
  }
  bool FileOptions::java_generic_services() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_generic_services)
    return java_generic_services_;
  }
  void FileOptions::set_java_generic_services(bool value) {
    set_has_java_generic_services();
    java_generic_services_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_generic_services)
  }
  
  // optional bool py_generic_services = 18 [default = false];
  bool FileOptions::has_py_generic_services() const {
    return (_has_bits_[0] & 0x00008000u) != 0;
  }
  void FileOptions::set_has_py_generic_services() {
    _has_bits_[0] |= 0x00008000u;
  }
  void FileOptions::clear_has_py_generic_services() {
    _has_bits_[0] &= ~0x00008000u;
  }
  void FileOptions::clear_py_generic_services() {
    py_generic_services_ = false;
    clear_has_py_generic_services();
  }
  bool FileOptions::py_generic_services() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.py_generic_services)
    return py_generic_services_;
  }
  void FileOptions::set_py_generic_services(bool value) {
    set_has_py_generic_services();
    py_generic_services_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.py_generic_services)
  }
  
  // optional bool php_generic_services = 42 [default = false];
  bool FileOptions::has_php_generic_services() const {
    return (_has_bits_[0] & 0x00010000u) != 0;
  }
  void FileOptions::set_has_php_generic_services() {
    _has_bits_[0] |= 0x00010000u;
  }
  void FileOptions::clear_has_php_generic_services() {
    _has_bits_[0] &= ~0x00010000u;
  }
  void FileOptions::clear_php_generic_services() {
    php_generic_services_ = false;
    clear_has_php_generic_services();
  }
  bool FileOptions::php_generic_services() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_generic_services)
    return php_generic_services_;
  }
  void FileOptions::set_php_generic_services(bool value) {
    set_has_php_generic_services();
    php_generic_services_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_generic_services)
  }
  
  // optional bool deprecated = 23 [default = false];
  bool FileOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00020000u) != 0;
  }
  void FileOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00020000u;
  }
  void FileOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00020000u;
  }
  void FileOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool FileOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.deprecated)
    return deprecated_;
  }
  void FileOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.deprecated)
  }
  
  // optional bool cc_enable_arenas = 31 [default = false];
  bool FileOptions::has_cc_enable_arenas() const {
    return (_has_bits_[0] & 0x00040000u) != 0;
  }
  void FileOptions::set_has_cc_enable_arenas() {
    _has_bits_[0] |= 0x00040000u;
  }
  void FileOptions::clear_has_cc_enable_arenas() {
    _has_bits_[0] &= ~0x00040000u;
  }
  void FileOptions::clear_cc_enable_arenas() {
    cc_enable_arenas_ = false;
    clear_has_cc_enable_arenas();
  }
  bool FileOptions::cc_enable_arenas() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.cc_enable_arenas)
    return cc_enable_arenas_;
  }
  void FileOptions::set_cc_enable_arenas(bool value) {
    set_has_cc_enable_arenas();
    cc_enable_arenas_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.cc_enable_arenas)
  }
  
  // optional string objc_class_prefix = 36;
  bool FileOptions::has_objc_class_prefix() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void FileOptions::set_has_objc_class_prefix() {
    _has_bits_[0] |= 0x00000008u;
  }
  void FileOptions::clear_has_objc_class_prefix() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void FileOptions::clear_objc_class_prefix() {
    objc_class_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_objc_class_prefix();
  }
  const ::std::string& FileOptions::objc_class_prefix() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.objc_class_prefix)
    return objc_class_prefix_.Get();
  }
  void FileOptions::set_objc_class_prefix(const ::std::string& value) {
    set_has_objc_class_prefix();
    objc_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.objc_class_prefix)
  }
  #if LANG_CXX11
  void FileOptions::set_objc_class_prefix(::std::string&& value) {
    set_has_objc_class_prefix();
    objc_class_prefix_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.objc_class_prefix)
  }
  #endif
  void FileOptions::set_objc_class_prefix(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_objc_class_prefix();
    objc_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.objc_class_prefix)
  }
  void FileOptions::set_objc_class_prefix(const char* value,
      size_t size) {
    set_has_objc_class_prefix();
    objc_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.objc_class_prefix)
  }
  ::std::string* FileOptions::mutable_objc_class_prefix() {
    set_has_objc_class_prefix();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.objc_class_prefix)
    return objc_class_prefix_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_objc_class_prefix() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.objc_class_prefix)
    clear_has_objc_class_prefix();
    return objc_class_prefix_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_objc_class_prefix() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.objc_class_prefix)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_objc_class_prefix();
    return objc_class_prefix_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_objc_class_prefix(::std::string* objc_class_prefix) {
    if (objc_class_prefix != NULL) {
      set_has_objc_class_prefix();
    } else {
      clear_has_objc_class_prefix();
    }
    objc_class_prefix_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), objc_class_prefix,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.objc_class_prefix)
  }
  void FileOptions::unsafe_arena_set_allocated_objc_class_prefix(
      ::std::string* objc_class_prefix) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (objc_class_prefix != NULL) {
      set_has_objc_class_prefix();
    } else {
      clear_has_objc_class_prefix();
    }
    objc_class_prefix_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        objc_class_prefix, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.objc_class_prefix)
  }
  
  // optional string csharp_namespace = 37;
  bool FileOptions::has_csharp_namespace() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void FileOptions::set_has_csharp_namespace() {
    _has_bits_[0] |= 0x00000010u;
  }
  void FileOptions::clear_has_csharp_namespace() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void FileOptions::clear_csharp_namespace() {
    csharp_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_csharp_namespace();
  }
  const ::std::string& FileOptions::csharp_namespace() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.csharp_namespace)
    return csharp_namespace_.Get();
  }
  void FileOptions::set_csharp_namespace(const ::std::string& value) {
    set_has_csharp_namespace();
    csharp_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.csharp_namespace)
  }
  #if LANG_CXX11
  void FileOptions::set_csharp_namespace(::std::string&& value) {
    set_has_csharp_namespace();
    csharp_namespace_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.csharp_namespace)
  }
  #endif
  void FileOptions::set_csharp_namespace(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_csharp_namespace();
    csharp_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.csharp_namespace)
  }
  void FileOptions::set_csharp_namespace(const char* value,
      size_t size) {
    set_has_csharp_namespace();
    csharp_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.csharp_namespace)
  }
  ::std::string* FileOptions::mutable_csharp_namespace() {
    set_has_csharp_namespace();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.csharp_namespace)
    return csharp_namespace_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_csharp_namespace() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.csharp_namespace)
    clear_has_csharp_namespace();
    return csharp_namespace_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_csharp_namespace() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.csharp_namespace)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_csharp_namespace();
    return csharp_namespace_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_csharp_namespace(::std::string* csharp_namespace) {
    if (csharp_namespace != NULL) {
      set_has_csharp_namespace();
    } else {
      clear_has_csharp_namespace();
    }
    csharp_namespace_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), csharp_namespace,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.csharp_namespace)
  }
  void FileOptions::unsafe_arena_set_allocated_csharp_namespace(
      ::std::string* csharp_namespace) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (csharp_namespace != NULL) {
      set_has_csharp_namespace();
    } else {
      clear_has_csharp_namespace();
    }
    csharp_namespace_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        csharp_namespace, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.csharp_namespace)
  }
  
  // optional string swift_prefix = 39;
  bool FileOptions::has_swift_prefix() const {
    return (_has_bits_[0] & 0x00000020u) != 0;
  }
  void FileOptions::set_has_swift_prefix() {
    _has_bits_[0] |= 0x00000020u;
  }
  void FileOptions::clear_has_swift_prefix() {
    _has_bits_[0] &= ~0x00000020u;
  }
  void FileOptions::clear_swift_prefix() {
    swift_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_swift_prefix();
  }
  const ::std::string& FileOptions::swift_prefix() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.swift_prefix)
    return swift_prefix_.Get();
  }
  void FileOptions::set_swift_prefix(const ::std::string& value) {
    set_has_swift_prefix();
    swift_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.swift_prefix)
  }
  #if LANG_CXX11
  void FileOptions::set_swift_prefix(::std::string&& value) {
    set_has_swift_prefix();
    swift_prefix_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.swift_prefix)
  }
  #endif
  void FileOptions::set_swift_prefix(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_swift_prefix();
    swift_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.swift_prefix)
  }
  void FileOptions::set_swift_prefix(const char* value,
      size_t size) {
    set_has_swift_prefix();
    swift_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.swift_prefix)
  }
  ::std::string* FileOptions::mutable_swift_prefix() {
    set_has_swift_prefix();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.swift_prefix)
    return swift_prefix_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_swift_prefix() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.swift_prefix)
    clear_has_swift_prefix();
    return swift_prefix_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_swift_prefix() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.swift_prefix)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_swift_prefix();
    return swift_prefix_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_swift_prefix(::std::string* swift_prefix) {
    if (swift_prefix != NULL) {
      set_has_swift_prefix();
    } else {
      clear_has_swift_prefix();
    }
    swift_prefix_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), swift_prefix,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.swift_prefix)
  }
  void FileOptions::unsafe_arena_set_allocated_swift_prefix(
      ::std::string* swift_prefix) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (swift_prefix != NULL) {
      set_has_swift_prefix();
    } else {
      clear_has_swift_prefix();
    }
    swift_prefix_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        swift_prefix, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.swift_prefix)
  }
  
  // optional string php_class_prefix = 40;
  bool FileOptions::has_php_class_prefix() const {
    return (_has_bits_[0] & 0x00000040u) != 0;
  }
  void FileOptions::set_has_php_class_prefix() {
    _has_bits_[0] |= 0x00000040u;
  }
  void FileOptions::clear_has_php_class_prefix() {
    _has_bits_[0] &= ~0x00000040u;
  }
  void FileOptions::clear_php_class_prefix() {
    php_class_prefix_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_php_class_prefix();
  }
  const ::std::string& FileOptions::php_class_prefix() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_class_prefix)
    return php_class_prefix_.Get();
  }
  void FileOptions::set_php_class_prefix(const ::std::string& value) {
    set_has_php_class_prefix();
    php_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_class_prefix)
  }
  #if LANG_CXX11
  void FileOptions::set_php_class_prefix(::std::string&& value) {
    set_has_php_class_prefix();
    php_class_prefix_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.php_class_prefix)
  }
  #endif
  void FileOptions::set_php_class_prefix(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_php_class_prefix();
    php_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.php_class_prefix)
  }
  void FileOptions::set_php_class_prefix(const char* value,
      size_t size) {
    set_has_php_class_prefix();
    php_class_prefix_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.php_class_prefix)
  }
  ::std::string* FileOptions::mutable_php_class_prefix() {
    set_has_php_class_prefix();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_class_prefix)
    return php_class_prefix_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_php_class_prefix() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_class_prefix)
    clear_has_php_class_prefix();
    return php_class_prefix_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_php_class_prefix() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.php_class_prefix)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_php_class_prefix();
    return php_class_prefix_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_php_class_prefix(::std::string* php_class_prefix) {
    if (php_class_prefix != NULL) {
      set_has_php_class_prefix();
    } else {
      clear_has_php_class_prefix();
    }
    php_class_prefix_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), php_class_prefix,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_class_prefix)
  }
  void FileOptions::unsafe_arena_set_allocated_php_class_prefix(
      ::std::string* php_class_prefix) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (php_class_prefix != NULL) {
      set_has_php_class_prefix();
    } else {
      clear_has_php_class_prefix();
    }
    php_class_prefix_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        php_class_prefix, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.php_class_prefix)
  }
  
  // optional string php_namespace = 41;
  bool FileOptions::has_php_namespace() const {
    return (_has_bits_[0] & 0x00000080u) != 0;
  }
  void FileOptions::set_has_php_namespace() {
    _has_bits_[0] |= 0x00000080u;
  }
  void FileOptions::clear_has_php_namespace() {
    _has_bits_[0] &= ~0x00000080u;
  }
  void FileOptions::clear_php_namespace() {
    php_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_php_namespace();
  }
  const ::std::string& FileOptions::php_namespace() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_namespace)
    return php_namespace_.Get();
  }
  void FileOptions::set_php_namespace(const ::std::string& value) {
    set_has_php_namespace();
    php_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_namespace)
  }
  #if LANG_CXX11
  void FileOptions::set_php_namespace(::std::string&& value) {
    set_has_php_namespace();
    php_namespace_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.php_namespace)
  }
  #endif
  void FileOptions::set_php_namespace(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_php_namespace();
    php_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.php_namespace)
  }
  void FileOptions::set_php_namespace(const char* value,
      size_t size) {
    set_has_php_namespace();
    php_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.php_namespace)
  }
  ::std::string* FileOptions::mutable_php_namespace() {
    set_has_php_namespace();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_namespace)
    return php_namespace_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_php_namespace() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_namespace)
    clear_has_php_namespace();
    return php_namespace_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_php_namespace() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.php_namespace)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_php_namespace();
    return php_namespace_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_php_namespace(::std::string* php_namespace) {
    if (php_namespace != NULL) {
      set_has_php_namespace();
    } else {
      clear_has_php_namespace();
    }
    php_namespace_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), php_namespace,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_namespace)
  }
  void FileOptions::unsafe_arena_set_allocated_php_namespace(
      ::std::string* php_namespace) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (php_namespace != NULL) {
      set_has_php_namespace();
    } else {
      clear_has_php_namespace();
    }
    php_namespace_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        php_namespace, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.php_namespace)
  }
  
  // optional string php_metadata_namespace = 44;
  bool FileOptions::has_php_metadata_namespace() const {
    return (_has_bits_[0] & 0x00000100u) != 0;
  }
  void FileOptions::set_has_php_metadata_namespace() {
    _has_bits_[0] |= 0x00000100u;
  }
  void FileOptions::clear_has_php_metadata_namespace() {
    _has_bits_[0] &= ~0x00000100u;
  }
  void FileOptions::clear_php_metadata_namespace() {
    php_metadata_namespace_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_php_metadata_namespace();
  }
  const ::std::string& FileOptions::php_metadata_namespace() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_metadata_namespace)
    return php_metadata_namespace_.Get();
  }
  void FileOptions::set_php_metadata_namespace(const ::std::string& value) {
    set_has_php_metadata_namespace();
    php_metadata_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_metadata_namespace)
  }
  #if LANG_CXX11
  void FileOptions::set_php_metadata_namespace(::std::string&& value) {
    set_has_php_metadata_namespace();
    php_metadata_namespace_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.php_metadata_namespace)
  }
  #endif
  void FileOptions::set_php_metadata_namespace(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_php_metadata_namespace();
    php_metadata_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.php_metadata_namespace)
  }
  void FileOptions::set_php_metadata_namespace(const char* value,
      size_t size) {
    set_has_php_metadata_namespace();
    php_metadata_namespace_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.php_metadata_namespace)
  }
  ::std::string* FileOptions::mutable_php_metadata_namespace() {
    set_has_php_metadata_namespace();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_metadata_namespace)
    return php_metadata_namespace_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_php_metadata_namespace() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_metadata_namespace)
    clear_has_php_metadata_namespace();
    return php_metadata_namespace_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_php_metadata_namespace() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.php_metadata_namespace)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_php_metadata_namespace();
    return php_metadata_namespace_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_php_metadata_namespace(::std::string* php_metadata_namespace) {
    if (php_metadata_namespace != NULL) {
      set_has_php_metadata_namespace();
    } else {
      clear_has_php_metadata_namespace();
    }
    php_metadata_namespace_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), php_metadata_namespace,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_metadata_namespace)
  }
  void FileOptions::unsafe_arena_set_allocated_php_metadata_namespace(
      ::std::string* php_metadata_namespace) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (php_metadata_namespace != NULL) {
      set_has_php_metadata_namespace();
    } else {
      clear_has_php_metadata_namespace();
    }
    php_metadata_namespace_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        php_metadata_namespace, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.php_metadata_namespace)
  }
  
  // optional string ruby_package = 45;
  bool FileOptions::has_ruby_package() const {
    return (_has_bits_[0] & 0x00000200u) != 0;
  }
  void FileOptions::set_has_ruby_package() {
    _has_bits_[0] |= 0x00000200u;
  }
  void FileOptions::clear_has_ruby_package() {
    _has_bits_[0] &= ~0x00000200u;
  }
  void FileOptions::clear_ruby_package() {
    ruby_package_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_ruby_package();
  }
  const ::std::string& FileOptions::ruby_package() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.ruby_package)
    return ruby_package_.Get();
  }
  void FileOptions::set_ruby_package(const ::std::string& value) {
    set_has_ruby_package();
    ruby_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.ruby_package)
  }
  #if LANG_CXX11
  void FileOptions::set_ruby_package(::std::string&& value) {
    set_has_ruby_package();
    ruby_package_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.FileOptions.ruby_package)
  }
  #endif
  void FileOptions::set_ruby_package(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_ruby_package();
    ruby_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.FileOptions.ruby_package)
  }
  void FileOptions::set_ruby_package(const char* value,
      size_t size) {
    set_has_ruby_package();
    ruby_package_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileOptions.ruby_package)
  }
  ::std::string* FileOptions::mutable_ruby_package() {
    set_has_ruby_package();
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.ruby_package)
    return ruby_package_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::release_ruby_package() {
    // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.ruby_package)
    clear_has_ruby_package();
    return ruby_package_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* FileOptions::unsafe_arena_release_ruby_package() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.FileOptions.ruby_package)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_ruby_package();
    return ruby_package_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void FileOptions::set_allocated_ruby_package(::std::string* ruby_package) {
    if (ruby_package != NULL) {
      set_has_ruby_package();
    } else {
      clear_has_ruby_package();
    }
    ruby_package_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ruby_package,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.ruby_package)
  }
  void FileOptions::unsafe_arena_set_allocated_ruby_package(
      ::std::string* ruby_package) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (ruby_package != NULL) {
      set_has_ruby_package();
    } else {
      clear_has_ruby_package();
    }
    ruby_package_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        ruby_package, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileOptions.ruby_package)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int FileOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void FileOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& FileOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* FileOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* FileOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.FileOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  FileOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  FileOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FileOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int MessageOptions::kMessageSetWireFormatFieldNumber;
  const int MessageOptions::kNoStandardDescriptorAccessorFieldNumber;
  const int MessageOptions::kDeprecatedFieldNumber;
  const int MessageOptions::kMapEntryFieldNumber;
  const int MessageOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  MessageOptions::MessageOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.MessageOptions)
  }
  MessageOptions::MessageOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.MessageOptions)
  }
  MessageOptions::MessageOptions(const MessageOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    ::memcpy(&message_set_wire_format_, &from.message_set_wire_format_,
      static_cast<size_t>(reinterpret_cast<char*>(&map_entry_) -
      reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.MessageOptions)
  }
  
  void MessageOptions::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&message_set_wire_format_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&map_entry_) -
        reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
  }
  
  MessageOptions::~MessageOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.MessageOptions)
    SharedDtor();
  }
  
  void MessageOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void MessageOptions::ArenaDtor(void* object) {
    MessageOptions* _this = reinterpret_cast< MessageOptions* >(object);
    (void)_this;
  }
  void MessageOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void MessageOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* MessageOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const MessageOptions& MessageOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  MessageOptions* MessageOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<MessageOptions>(arena);
  }
  
  void MessageOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.MessageOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 15u) {
      ::memset(&message_set_wire_format_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&map_entry_) -
          reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool MessageOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.MessageOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional bool message_set_wire_format = 1 [default = false];
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_message_set_wire_format();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &message_set_wire_format_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool no_standard_descriptor_accessor = 2 [default = false];
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_no_standard_descriptor_accessor();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &no_standard_descriptor_accessor_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool deprecated = 3 [default = false];
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool map_entry = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
            set_has_map_entry();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &map_entry_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.MessageOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.MessageOptions)
    return false;
  #undef DO_
  }
  
  void MessageOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.MessageOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool message_set_wire_format = 1 [default = false];
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->message_set_wire_format(), output);
    }
  
    // optional bool no_standard_descriptor_accessor = 2 [default = false];
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->no_standard_descriptor_accessor(), output);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->deprecated(), output);
    }
  
    // optional bool map_entry = 7;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->map_entry(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.MessageOptions)
  }
  
  ::google::protobuf::uint8* MessageOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MessageOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool message_set_wire_format = 1 [default = false];
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->message_set_wire_format(), target);
    }
  
    // optional bool no_standard_descriptor_accessor = 2 [default = false];
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->no_standard_descriptor_accessor(), target);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000004u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->deprecated(), target);
    }
  
    // optional bool map_entry = 7;
    if (cached_has_bits & 0x00000008u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->map_entry(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MessageOptions)
    return target;
  }
  
  size_t MessageOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MessageOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 15u) {
      // optional bool message_set_wire_format = 1 [default = false];
      if (has_message_set_wire_format()) {
        total_size += 1 + 1;
      }
  
      // optional bool no_standard_descriptor_accessor = 2 [default = false];
      if (has_no_standard_descriptor_accessor()) {
        total_size += 1 + 1;
      }
  
      // optional bool deprecated = 3 [default = false];
      if (has_deprecated()) {
        total_size += 1 + 1;
      }
  
      // optional bool map_entry = 7;
      if (has_map_entry()) {
        total_size += 1 + 1;
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void MessageOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.MessageOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const MessageOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const MessageOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.MessageOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.MessageOptions)
      MergeFrom(*source);
    }
  }
  
  void MessageOptions::MergeFrom(const MessageOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MessageOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 15u) {
      if (cached_has_bits & 0x00000001u) {
        message_set_wire_format_ = from.message_set_wire_format_;
      }
      if (cached_has_bits & 0x00000002u) {
        no_standard_descriptor_accessor_ = from.no_standard_descriptor_accessor_;
      }
      if (cached_has_bits & 0x00000004u) {
        deprecated_ = from.deprecated_;
      }
      if (cached_has_bits & 0x00000008u) {
        map_entry_ = from.map_entry_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void MessageOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.MessageOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void MessageOptions::CopyFrom(const MessageOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.MessageOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool MessageOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void MessageOptions::Swap(MessageOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      MessageOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void MessageOptions::UnsafeArenaSwap(MessageOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void MessageOptions::InternalSwap(MessageOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(message_set_wire_format_, other->message_set_wire_format_);
    swap(no_standard_descriptor_accessor_, other->no_standard_descriptor_accessor_);
    swap(deprecated_, other->deprecated_);
    swap(map_entry_, other->map_entry_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata MessageOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // MessageOptions
  
  // optional bool message_set_wire_format = 1 [default = false];
  bool MessageOptions::has_message_set_wire_format() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void MessageOptions::set_has_message_set_wire_format() {
    _has_bits_[0] |= 0x00000001u;
  }
  void MessageOptions::clear_has_message_set_wire_format() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void MessageOptions::clear_message_set_wire_format() {
    message_set_wire_format_ = false;
    clear_has_message_set_wire_format();
  }
  bool MessageOptions::message_set_wire_format() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.message_set_wire_format)
    return message_set_wire_format_;
  }
  void MessageOptions::set_message_set_wire_format(bool value) {
    set_has_message_set_wire_format();
    message_set_wire_format_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.message_set_wire_format)
  }
  
  // optional bool no_standard_descriptor_accessor = 2 [default = false];
  bool MessageOptions::has_no_standard_descriptor_accessor() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void MessageOptions::set_has_no_standard_descriptor_accessor() {
    _has_bits_[0] |= 0x00000002u;
  }
  void MessageOptions::clear_has_no_standard_descriptor_accessor() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void MessageOptions::clear_no_standard_descriptor_accessor() {
    no_standard_descriptor_accessor_ = false;
    clear_has_no_standard_descriptor_accessor();
  }
  bool MessageOptions::no_standard_descriptor_accessor() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.no_standard_descriptor_accessor)
    return no_standard_descriptor_accessor_;
  }
  void MessageOptions::set_no_standard_descriptor_accessor(bool value) {
    set_has_no_standard_descriptor_accessor();
    no_standard_descriptor_accessor_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.no_standard_descriptor_accessor)
  }
  
  // optional bool deprecated = 3 [default = false];
  bool MessageOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void MessageOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000004u;
  }
  void MessageOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void MessageOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool MessageOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.deprecated)
    return deprecated_;
  }
  void MessageOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.deprecated)
  }
  
  // optional bool map_entry = 7;
  bool MessageOptions::has_map_entry() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void MessageOptions::set_has_map_entry() {
    _has_bits_[0] |= 0x00000008u;
  }
  void MessageOptions::clear_has_map_entry() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void MessageOptions::clear_map_entry() {
    map_entry_ = false;
    clear_has_map_entry();
  }
  bool MessageOptions::map_entry() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.map_entry)
    return map_entry_;
  }
  void MessageOptions::set_map_entry(bool value) {
    set_has_map_entry();
    map_entry_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.map_entry)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int MessageOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void MessageOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& MessageOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* MessageOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.MessageOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* MessageOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.MessageOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  MessageOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.MessageOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  MessageOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.MessageOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int FieldOptions::kCtypeFieldNumber;
  const int FieldOptions::kPackedFieldNumber;
  const int FieldOptions::kJstypeFieldNumber;
  const int FieldOptions::kLazyFieldNumber;
  const int FieldOptions::kDeprecatedFieldNumber;
  const int FieldOptions::kWeakFieldNumber;
  const int FieldOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  FieldOptions::FieldOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.FieldOptions)
  }
  FieldOptions::FieldOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldOptions)
  }
  FieldOptions::FieldOptions(const FieldOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    ::memcpy(&ctype_, &from.ctype_,
      static_cast<size_t>(reinterpret_cast<char*>(&jstype_) -
      reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.FieldOptions)
  }
  
  void FieldOptions::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&ctype_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&jstype_) -
        reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
  }
  
  FieldOptions::~FieldOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.FieldOptions)
    SharedDtor();
  }
  
  void FieldOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void FieldOptions::ArenaDtor(void* object) {
    FieldOptions* _this = reinterpret_cast< FieldOptions* >(object);
    (void)_this;
  }
  void FieldOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void FieldOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* FieldOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const FieldOptions& FieldOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  FieldOptions* FieldOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<FieldOptions>(arena);
  }
  
  void FieldOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.FieldOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 63u) {
      ::memset(&ctype_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&jstype_) -
          reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool FieldOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.FieldOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::FieldOptions_CType_IsValid(value)) {
              set_ctype(static_cast< ::google::protobuf::FieldOptions_CType >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  1, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool packed = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_packed();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &packed_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool deprecated = 3 [default = false];
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool lazy = 5 [default = false];
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            set_has_lazy();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &lazy_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::FieldOptions_JSType_IsValid(value)) {
              set_jstype(static_cast< ::google::protobuf::FieldOptions_JSType >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  6, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool weak = 10 [default = false];
        case 10: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(80u /* 80 & 0xFF */)) {
            set_has_weak();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &weak_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.FieldOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.FieldOptions)
    return false;
  #undef DO_
  }
  
  void FieldOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.FieldOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        1, this->ctype(), output);
    }
  
    // optional bool packed = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->packed(), output);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->deprecated(), output);
    }
  
    // optional bool lazy = 5 [default = false];
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->lazy(), output);
    }
  
    // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        6, this->jstype(), output);
    }
  
    // optional bool weak = 10 [default = false];
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->weak(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.FieldOptions)
  }
  
  ::google::protobuf::uint8* FieldOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        1, this->ctype(), target);
    }
  
    // optional bool packed = 2;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->packed(), target);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000008u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->deprecated(), target);
    }
  
    // optional bool lazy = 5 [default = false];
    if (cached_has_bits & 0x00000004u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->lazy(), target);
    }
  
    // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
    if (cached_has_bits & 0x00000020u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        6, this->jstype(), target);
    }
  
    // optional bool weak = 10 [default = false];
    if (cached_has_bits & 0x00000010u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->weak(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldOptions)
    return target;
  }
  
  size_t FieldOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 63u) {
      // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
      if (has_ctype()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->ctype());
      }
  
      // optional bool packed = 2;
      if (has_packed()) {
        total_size += 1 + 1;
      }
  
      // optional bool lazy = 5 [default = false];
      if (has_lazy()) {
        total_size += 1 + 1;
      }
  
      // optional bool deprecated = 3 [default = false];
      if (has_deprecated()) {
        total_size += 1 + 1;
      }
  
      // optional bool weak = 10 [default = false];
      if (has_weak()) {
        total_size += 1 + 1;
      }
  
      // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
      if (has_jstype()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->jstype());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void FieldOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.FieldOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const FieldOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const FieldOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.FieldOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.FieldOptions)
      MergeFrom(*source);
    }
  }
  
  void FieldOptions::MergeFrom(const FieldOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 63u) {
      if (cached_has_bits & 0x00000001u) {
        ctype_ = from.ctype_;
      }
      if (cached_has_bits & 0x00000002u) {
        packed_ = from.packed_;
      }
      if (cached_has_bits & 0x00000004u) {
        lazy_ = from.lazy_;
      }
      if (cached_has_bits & 0x00000008u) {
        deprecated_ = from.deprecated_;
      }
      if (cached_has_bits & 0x00000010u) {
        weak_ = from.weak_;
      }
      if (cached_has_bits & 0x00000020u) {
        jstype_ = from.jstype_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void FieldOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.FieldOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void FieldOptions::CopyFrom(const FieldOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.FieldOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool FieldOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void FieldOptions::Swap(FieldOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      FieldOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void FieldOptions::UnsafeArenaSwap(FieldOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void FieldOptions::InternalSwap(FieldOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(ctype_, other->ctype_);
    swap(packed_, other->packed_);
    swap(lazy_, other->lazy_);
    swap(deprecated_, other->deprecated_);
    swap(weak_, other->weak_);
    swap(jstype_, other->jstype_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata FieldOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // FieldOptions
  
  // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
  bool FieldOptions::has_ctype() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void FieldOptions::set_has_ctype() {
    _has_bits_[0] |= 0x00000001u;
  }
  void FieldOptions::clear_has_ctype() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void FieldOptions::clear_ctype() {
    ctype_ = 0;
    clear_has_ctype();
  }
  ::google::protobuf::FieldOptions_CType FieldOptions::ctype() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.ctype)
    return static_cast< ::google::protobuf::FieldOptions_CType >(ctype_);
  }
  void FieldOptions::set_ctype(::google::protobuf::FieldOptions_CType value) {
    assert(::google::protobuf::FieldOptions_CType_IsValid(value));
    set_has_ctype();
    ctype_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.ctype)
  }
  
  // optional bool packed = 2;
  bool FieldOptions::has_packed() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void FieldOptions::set_has_packed() {
    _has_bits_[0] |= 0x00000002u;
  }
  void FieldOptions::clear_has_packed() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void FieldOptions::clear_packed() {
    packed_ = false;
    clear_has_packed();
  }
  bool FieldOptions::packed() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.packed)
    return packed_;
  }
  void FieldOptions::set_packed(bool value) {
    set_has_packed();
    packed_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.packed)
  }
  
  // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
  bool FieldOptions::has_jstype() const {
    return (_has_bits_[0] & 0x00000020u) != 0;
  }
  void FieldOptions::set_has_jstype() {
    _has_bits_[0] |= 0x00000020u;
  }
  void FieldOptions::clear_has_jstype() {
    _has_bits_[0] &= ~0x00000020u;
  }
  void FieldOptions::clear_jstype() {
    jstype_ = 0;
    clear_has_jstype();
  }
  ::google::protobuf::FieldOptions_JSType FieldOptions::jstype() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.jstype)
    return static_cast< ::google::protobuf::FieldOptions_JSType >(jstype_);
  }
  void FieldOptions::set_jstype(::google::protobuf::FieldOptions_JSType value) {
    assert(::google::protobuf::FieldOptions_JSType_IsValid(value));
    set_has_jstype();
    jstype_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.jstype)
  }
  
  // optional bool lazy = 5 [default = false];
  bool FieldOptions::has_lazy() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void FieldOptions::set_has_lazy() {
    _has_bits_[0] |= 0x00000004u;
  }
  void FieldOptions::clear_has_lazy() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void FieldOptions::clear_lazy() {
    lazy_ = false;
    clear_has_lazy();
  }
  bool FieldOptions::lazy() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.lazy)
    return lazy_;
  }
  void FieldOptions::set_lazy(bool value) {
    set_has_lazy();
    lazy_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.lazy)
  }
  
  // optional bool deprecated = 3 [default = false];
  bool FieldOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void FieldOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000008u;
  }
  void FieldOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void FieldOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool FieldOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.deprecated)
    return deprecated_;
  }
  void FieldOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.deprecated)
  }
  
  // optional bool weak = 10 [default = false];
  bool FieldOptions::has_weak() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void FieldOptions::set_has_weak() {
    _has_bits_[0] |= 0x00000010u;
  }
  void FieldOptions::clear_has_weak() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void FieldOptions::clear_weak() {
    weak_ = false;
    clear_has_weak();
  }
  bool FieldOptions::weak() const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.weak)
    return weak_;
  }
  void FieldOptions::set_weak(bool value) {
    set_has_weak();
    weak_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.weak)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int FieldOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void FieldOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& FieldOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* FieldOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.FieldOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* FieldOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.FieldOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  FieldOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.FieldOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  FieldOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.FieldOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int OneofOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  OneofOptions::OneofOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.OneofOptions)
  }
  OneofOptions::OneofOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.OneofOptions)
  }
  OneofOptions::OneofOptions(const OneofOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    // @@protoc_insertion_point(copy_constructor:google.protobuf.OneofOptions)
  }
  
  void OneofOptions::SharedCtor() {
    _cached_size_ = 0;
  }
  
  OneofOptions::~OneofOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.OneofOptions)
    SharedDtor();
  }
  
  void OneofOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void OneofOptions::ArenaDtor(void* object) {
    OneofOptions* _this = reinterpret_cast< OneofOptions* >(object);
    (void)_this;
  }
  void OneofOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void OneofOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* OneofOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const OneofOptions& OneofOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  OneofOptions* OneofOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<OneofOptions>(arena);
  }
  
  void OneofOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.OneofOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool OneofOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.OneofOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.OneofOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.OneofOptions)
    return false;
  #undef DO_
  }
  
  void OneofOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.OneofOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.OneofOptions)
  }
  
  ::google::protobuf::uint8* OneofOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.OneofOptions)
    return target;
  }
  
  size_t OneofOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void OneofOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.OneofOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const OneofOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const OneofOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.OneofOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.OneofOptions)
      MergeFrom(*source);
    }
  }
  
  void OneofOptions::MergeFrom(const OneofOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  }
  
  void OneofOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.OneofOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void OneofOptions::CopyFrom(const OneofOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.OneofOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool OneofOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void OneofOptions::Swap(OneofOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      OneofOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void OneofOptions::UnsafeArenaSwap(OneofOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void OneofOptions::InternalSwap(OneofOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata OneofOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // OneofOptions
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int OneofOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void OneofOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& OneofOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.OneofOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* OneofOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.OneofOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* OneofOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.OneofOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  OneofOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.OneofOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  OneofOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.OneofOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int EnumOptions::kAllowAliasFieldNumber;
  const int EnumOptions::kDeprecatedFieldNumber;
  const int EnumOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  EnumOptions::EnumOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.EnumOptions)
  }
  EnumOptions::EnumOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumOptions)
  }
  EnumOptions::EnumOptions(const EnumOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    ::memcpy(&allow_alias_, &from.allow_alias_,
      static_cast<size_t>(reinterpret_cast<char*>(&deprecated_) -
      reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumOptions)
  }
  
  void EnumOptions::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&allow_alias_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&deprecated_) -
        reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
  }
  
  EnumOptions::~EnumOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.EnumOptions)
    SharedDtor();
  }
  
  void EnumOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void EnumOptions::ArenaDtor(void* object) {
    EnumOptions* _this = reinterpret_cast< EnumOptions* >(object);
    (void)_this;
  }
  void EnumOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void EnumOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* EnumOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const EnumOptions& EnumOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  EnumOptions* EnumOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<EnumOptions>(arena);
  }
  
  void EnumOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.EnumOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      ::memset(&allow_alias_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&deprecated_) -
          reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool EnumOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.EnumOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional bool allow_alias = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_allow_alias();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &allow_alias_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bool deprecated = 3 [default = false];
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.EnumOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.EnumOptions)
    return false;
  #undef DO_
  }
  
  void EnumOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.EnumOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool allow_alias = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->allow_alias(), output);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->deprecated(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.EnumOptions)
  }
  
  ::google::protobuf::uint8* EnumOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool allow_alias = 2;
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->allow_alias(), target);
    }
  
    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->deprecated(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumOptions)
    return target;
  }
  
  size_t EnumOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional bool allow_alias = 2;
      if (has_allow_alias()) {
        total_size += 1 + 1;
      }
  
      // optional bool deprecated = 3 [default = false];
      if (has_deprecated()) {
        total_size += 1 + 1;
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void EnumOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.EnumOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const EnumOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const EnumOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.EnumOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.EnumOptions)
      MergeFrom(*source);
    }
  }
  
  void EnumOptions::MergeFrom(const EnumOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        allow_alias_ = from.allow_alias_;
      }
      if (cached_has_bits & 0x00000002u) {
        deprecated_ = from.deprecated_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void EnumOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.EnumOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void EnumOptions::CopyFrom(const EnumOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool EnumOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void EnumOptions::Swap(EnumOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      EnumOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void EnumOptions::UnsafeArenaSwap(EnumOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void EnumOptions::InternalSwap(EnumOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(allow_alias_, other->allow_alias_);
    swap(deprecated_, other->deprecated_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata EnumOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // EnumOptions
  
  // optional bool allow_alias = 2;
  bool EnumOptions::has_allow_alias() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void EnumOptions::set_has_allow_alias() {
    _has_bits_[0] |= 0x00000001u;
  }
  void EnumOptions::clear_has_allow_alias() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void EnumOptions::clear_allow_alias() {
    allow_alias_ = false;
    clear_has_allow_alias();
  }
  bool EnumOptions::allow_alias() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.allow_alias)
    return allow_alias_;
  }
  void EnumOptions::set_allow_alias(bool value) {
    set_has_allow_alias();
    allow_alias_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumOptions.allow_alias)
  }
  
  // optional bool deprecated = 3 [default = false];
  bool EnumOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void EnumOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000002u;
  }
  void EnumOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void EnumOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool EnumOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.deprecated)
    return deprecated_;
  }
  void EnumOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumOptions.deprecated)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int EnumOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void EnumOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& EnumOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* EnumOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* EnumOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.EnumOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  EnumOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  EnumOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.EnumOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int EnumValueOptions::kDeprecatedFieldNumber;
  const int EnumValueOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  EnumValueOptions::EnumValueOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.EnumValueOptions)
  }
  EnumValueOptions::EnumValueOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumValueOptions)
  }
  EnumValueOptions::EnumValueOptions(const EnumValueOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    deprecated_ = from.deprecated_;
    // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumValueOptions)
  }
  
  void EnumValueOptions::SharedCtor() {
    _cached_size_ = 0;
    deprecated_ = false;
  }
  
  EnumValueOptions::~EnumValueOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.EnumValueOptions)
    SharedDtor();
  }
  
  void EnumValueOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void EnumValueOptions::ArenaDtor(void* object) {
    EnumValueOptions* _this = reinterpret_cast< EnumValueOptions* >(object);
    (void)_this;
  }
  void EnumValueOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void EnumValueOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* EnumValueOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const EnumValueOptions& EnumValueOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  EnumValueOptions* EnumValueOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<EnumValueOptions>(arena);
  }
  
  void EnumValueOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.EnumValueOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    deprecated_ = false;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool EnumValueOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.EnumValueOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional bool deprecated = 1 [default = false];
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.EnumValueOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.EnumValueOptions)
    return false;
  #undef DO_
  }
  
  void EnumValueOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.EnumValueOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 1 [default = false];
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->deprecated(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.EnumValueOptions)
  }
  
  ::google::protobuf::uint8* EnumValueOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 1 [default = false];
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->deprecated(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueOptions)
    return target;
  }
  
  size_t EnumValueOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    // optional bool deprecated = 1 [default = false];
    if (has_deprecated()) {
      total_size += 1 + 1;
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void EnumValueOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.EnumValueOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const EnumValueOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const EnumValueOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.EnumValueOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.EnumValueOptions)
      MergeFrom(*source);
    }
  }
  
  void EnumValueOptions::MergeFrom(const EnumValueOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    if (from.has_deprecated()) {
      set_deprecated(from.deprecated());
    }
  }
  
  void EnumValueOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.EnumValueOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void EnumValueOptions::CopyFrom(const EnumValueOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumValueOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool EnumValueOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void EnumValueOptions::Swap(EnumValueOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      EnumValueOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void EnumValueOptions::UnsafeArenaSwap(EnumValueOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void EnumValueOptions::InternalSwap(EnumValueOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(deprecated_, other->deprecated_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata EnumValueOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // EnumValueOptions
  
  // optional bool deprecated = 1 [default = false];
  bool EnumValueOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void EnumValueOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000001u;
  }
  void EnumValueOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void EnumValueOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool EnumValueOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumValueOptions.deprecated)
    return deprecated_;
  }
  void EnumValueOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.EnumValueOptions.deprecated)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int EnumValueOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void EnumValueOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& EnumValueOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.EnumValueOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* EnumValueOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* EnumValueOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.EnumValueOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  EnumValueOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumValueOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  EnumValueOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.EnumValueOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int ServiceOptions::kDeprecatedFieldNumber;
  const int ServiceOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  ServiceOptions::ServiceOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.ServiceOptions)
  }
  ServiceOptions::ServiceOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.ServiceOptions)
  }
  ServiceOptions::ServiceOptions(const ServiceOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    deprecated_ = from.deprecated_;
    // @@protoc_insertion_point(copy_constructor:google.protobuf.ServiceOptions)
  }
  
  void ServiceOptions::SharedCtor() {
    _cached_size_ = 0;
    deprecated_ = false;
  }
  
  ServiceOptions::~ServiceOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.ServiceOptions)
    SharedDtor();
  }
  
  void ServiceOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void ServiceOptions::ArenaDtor(void* object) {
    ServiceOptions* _this = reinterpret_cast< ServiceOptions* >(object);
    (void)_this;
  }
  void ServiceOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void ServiceOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* ServiceOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const ServiceOptions& ServiceOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  ServiceOptions* ServiceOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<ServiceOptions>(arena);
  }
  
  void ServiceOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.ServiceOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    deprecated_ = false;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool ServiceOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.ServiceOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional bool deprecated = 33 [default = false];
        case 33: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 264 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.ServiceOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.ServiceOptions)
    return false;
  #undef DO_
  }
  
  void ServiceOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.ServiceOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 33 [default = false];
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(33, this->deprecated(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.ServiceOptions)
  }
  
  ::google::protobuf::uint8* ServiceOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 33 [default = false];
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(33, this->deprecated(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceOptions)
    return target;
  }
  
  size_t ServiceOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    // optional bool deprecated = 33 [default = false];
    if (has_deprecated()) {
      total_size += 2 + 1;
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void ServiceOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.ServiceOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const ServiceOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const ServiceOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.ServiceOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.ServiceOptions)
      MergeFrom(*source);
    }
  }
  
  void ServiceOptions::MergeFrom(const ServiceOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    if (from.has_deprecated()) {
      set_deprecated(from.deprecated());
    }
  }
  
  void ServiceOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.ServiceOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void ServiceOptions::CopyFrom(const ServiceOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.ServiceOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool ServiceOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void ServiceOptions::Swap(ServiceOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      ServiceOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void ServiceOptions::UnsafeArenaSwap(ServiceOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void ServiceOptions::InternalSwap(ServiceOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(deprecated_, other->deprecated_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata ServiceOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // ServiceOptions
  
  // optional bool deprecated = 33 [default = false];
  bool ServiceOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void ServiceOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000001u;
  }
  void ServiceOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void ServiceOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool ServiceOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.ServiceOptions.deprecated)
    return deprecated_;
  }
  void ServiceOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.ServiceOptions.deprecated)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int ServiceOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void ServiceOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& ServiceOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.ServiceOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* ServiceOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* ServiceOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.ServiceOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  ServiceOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.ServiceOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  ServiceOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.ServiceOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int MethodOptions::kDeprecatedFieldNumber;
  const int MethodOptions::kIdempotencyLevelFieldNumber;
  const int MethodOptions::kUninterpretedOptionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  MethodOptions::MethodOptions()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.MethodOptions)
  }
  MethodOptions::MethodOptions(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _extensions_(arena),
    _internal_metadata_(arena),
    uninterpreted_option_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.MethodOptions)
  }
  MethodOptions::MethodOptions(const MethodOptions& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        uninterpreted_option_(from.uninterpreted_option_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    _extensions_.MergeFrom(from._extensions_);
    ::memcpy(&deprecated_, &from.deprecated_,
      static_cast<size_t>(reinterpret_cast<char*>(&idempotency_level_) -
      reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.MethodOptions)
  }
  
  void MethodOptions::SharedCtor() {
    _cached_size_ = 0;
    ::memset(&deprecated_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&idempotency_level_) -
        reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
  }
  
  MethodOptions::~MethodOptions() {
    // @@protoc_insertion_point(destructor:google.protobuf.MethodOptions)
    SharedDtor();
  }
  
  void MethodOptions::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void MethodOptions::ArenaDtor(void* object) {
    MethodOptions* _this = reinterpret_cast< MethodOptions* >(object);
    (void)_this;
  }
  void MethodOptions::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void MethodOptions::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* MethodOptions::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const MethodOptions& MethodOptions::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  MethodOptions* MethodOptions::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<MethodOptions>(arena);
  }
  
  void MethodOptions::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.MethodOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _extensions_.Clear();
    uninterpreted_option_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      ::memset(&deprecated_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&idempotency_level_) -
          reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool MethodOptions::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.MethodOptions)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // optional bool deprecated = 33 [default = false];
        case 33: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 264 & 0xFF */)) {
            set_has_deprecated();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &deprecated_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
        case 34: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 272 & 0xFF */)) {
            int value;
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                   input, &value)));
            if (::google::protobuf::MethodOptions_IdempotencyLevel_IsValid(value)) {
              set_idempotency_level(static_cast< ::google::protobuf::MethodOptions_IdempotencyLevel >(value));
            } else {
              mutable_unknown_fields()->AddVarint(
                  34, static_cast< ::google::protobuf::uint64>(value));
            }
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
        case 999: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 7994 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_uninterpreted_option()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          if ((8000u <= tag)) {
            DO_(_extensions_.ParseField(tag, input,
                internal_default_instance(),
                _internal_metadata_.mutable_unknown_fields()));
            continue;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.MethodOptions)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.MethodOptions)
    return false;
  #undef DO_
  }
  
  void MethodOptions::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.MethodOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 33 [default = false];
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(33, this->deprecated(), output);
    }
  
    // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteEnum(
        34, this->idempotency_level(), output);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        999, this->uninterpreted_option(static_cast<int>(i)), output);
    }
  
    // Extension range [1000, 536870912)
    _extensions_.SerializeWithCachedSizes(
        1000, 536870912, output);
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.MethodOptions)
  }
  
  ::google::protobuf::uint8* MethodOptions::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodOptions)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // optional bool deprecated = 33 [default = false];
    if (cached_has_bits & 0x00000001u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(33, this->deprecated(), target);
    }
  
    // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
        34, this->idempotency_level(), target);
    }
  
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->uninterpreted_option_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          999, this->uninterpreted_option(static_cast<int>(i)), deterministic, target);
    }
  
    // Extension range [1000, 536870912)
    target = _extensions_.InternalSerializeWithCachedSizesToArray(
        1000, 536870912, deterministic, target);
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodOptions)
    return target;
  }
  
  size_t MethodOptions::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodOptions)
    size_t total_size = 0;
  
    total_size += _extensions_.ByteSize();
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
    {
      unsigned int count = static_cast<unsigned int>(this->uninterpreted_option_size());
      total_size += 2UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->uninterpreted_option(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional bool deprecated = 33 [default = false];
      if (has_deprecated()) {
        total_size += 2 + 1;
      }
  
      // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
      if (has_idempotency_level()) {
        total_size += 2 +
          ::google::protobuf::internal::WireFormatLite::EnumSize(this->idempotency_level());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void MethodOptions::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.MethodOptions)
    GOOGLE_DCHECK_NE(&from, this);
    const MethodOptions* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const MethodOptions>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.MethodOptions)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.MethodOptions)
      MergeFrom(*source);
    }
  }
  
  void MethodOptions::MergeFrom(const MethodOptions& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodOptions)
    GOOGLE_DCHECK_NE(&from, this);
    _extensions_.MergeFrom(from._extensions_);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        deprecated_ = from.deprecated_;
      }
      if (cached_has_bits & 0x00000002u) {
        idempotency_level_ = from.idempotency_level_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void MethodOptions::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.MethodOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void MethodOptions::CopyFrom(const MethodOptions& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.MethodOptions)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool MethodOptions::IsInitialized() const {
    if (!_extensions_.IsInitialized()) {
      return false;
    }
  
    if (!::google::protobuf::internal::AllAreInitialized(this->uninterpreted_option())) return false;
    return true;
  }
  
  void MethodOptions::Swap(MethodOptions* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      MethodOptions* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void MethodOptions::UnsafeArenaSwap(MethodOptions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void MethodOptions::InternalSwap(MethodOptions* other) {
    using std::swap;
    uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
    swap(deprecated_, other->deprecated_);
    swap(idempotency_level_, other->idempotency_level_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
    _extensions_.Swap(&other->_extensions_);
  }
  
  ::google::protobuf::Metadata MethodOptions::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // MethodOptions
  
  // optional bool deprecated = 33 [default = false];
  bool MethodOptions::has_deprecated() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void MethodOptions::set_has_deprecated() {
    _has_bits_[0] |= 0x00000001u;
  }
  void MethodOptions::clear_has_deprecated() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void MethodOptions::clear_deprecated() {
    deprecated_ = false;
    clear_has_deprecated();
  }
  bool MethodOptions::deprecated() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.deprecated)
    return deprecated_;
  }
  void MethodOptions::set_deprecated(bool value) {
    set_has_deprecated();
    deprecated_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MethodOptions.deprecated)
  }
  
  // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
  bool MethodOptions::has_idempotency_level() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void MethodOptions::set_has_idempotency_level() {
    _has_bits_[0] |= 0x00000002u;
  }
  void MethodOptions::clear_has_idempotency_level() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void MethodOptions::clear_idempotency_level() {
    idempotency_level_ = 0;
    clear_has_idempotency_level();
  }
  ::google::protobuf::MethodOptions_IdempotencyLevel MethodOptions::idempotency_level() const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.idempotency_level)
    return static_cast< ::google::protobuf::MethodOptions_IdempotencyLevel >(idempotency_level_);
  }
  void MethodOptions::set_idempotency_level(::google::protobuf::MethodOptions_IdempotencyLevel value) {
    assert(::google::protobuf::MethodOptions_IdempotencyLevel_IsValid(value));
    set_has_idempotency_level();
    idempotency_level_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.MethodOptions.idempotency_level)
  }
  
  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  int MethodOptions::uninterpreted_option_size() const {
    return uninterpreted_option_.size();
  }
  void MethodOptions::clear_uninterpreted_option() {
    uninterpreted_option_.Clear();
  }
  const ::google::protobuf::UninterpretedOption& MethodOptions::uninterpreted_option(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.uninterpreted_option)
    return uninterpreted_option_.Get(index);
  }
  ::google::protobuf::UninterpretedOption* MethodOptions::mutable_uninterpreted_option(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.MethodOptions.uninterpreted_option)
    return uninterpreted_option_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption* MethodOptions::add_uninterpreted_option() {
    // @@protoc_insertion_point(field_add:google.protobuf.MethodOptions.uninterpreted_option)
    return uninterpreted_option_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >*
  MethodOptions::mutable_uninterpreted_option() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.MethodOptions.uninterpreted_option)
    return &uninterpreted_option_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption >&
  MethodOptions::uninterpreted_option() const {
    // @@protoc_insertion_point(field_list:google.protobuf.MethodOptions.uninterpreted_option)
    return uninterpreted_option_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int UninterpretedOption_NamePart::kNamePartFieldNumber;
  const int UninterpretedOption_NamePart::kIsExtensionFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  UninterpretedOption_NamePart::UninterpretedOption_NamePart()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.UninterpretedOption.NamePart)
  }
  UninterpretedOption_NamePart::UninterpretedOption_NamePart(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.UninterpretedOption.NamePart)
  }
  UninterpretedOption_NamePart::UninterpretedOption_NamePart(const UninterpretedOption_NamePart& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    name_part_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_name_part()) {
      name_part_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_part(),
        GetArenaNoVirtual());
    }
    is_extension_ = from.is_extension_;
    // @@protoc_insertion_point(copy_constructor:google.protobuf.UninterpretedOption.NamePart)
  }
  
  void UninterpretedOption_NamePart::SharedCtor() {
    _cached_size_ = 0;
    name_part_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    is_extension_ = false;
  }
  
  UninterpretedOption_NamePart::~UninterpretedOption_NamePart() {
    // @@protoc_insertion_point(destructor:google.protobuf.UninterpretedOption.NamePart)
    SharedDtor();
  }
  
  void UninterpretedOption_NamePart::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    name_part_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
  }
  
  void UninterpretedOption_NamePart::ArenaDtor(void* object) {
    UninterpretedOption_NamePart* _this = reinterpret_cast< UninterpretedOption_NamePart* >(object);
    (void)_this;
  }
  void UninterpretedOption_NamePart::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void UninterpretedOption_NamePart::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* UninterpretedOption_NamePart::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const UninterpretedOption_NamePart& UninterpretedOption_NamePart::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  UninterpretedOption_NamePart* UninterpretedOption_NamePart::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<UninterpretedOption_NamePart>(arena);
  }
  
  void UninterpretedOption_NamePart::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.UninterpretedOption.NamePart)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    if (has_name_part()) {
      GOOGLE_DCHECK(!name_part_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
      name_part_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    }
    is_extension_ = false;
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool UninterpretedOption_NamePart::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.UninterpretedOption.NamePart)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // required string name_part = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_name_part()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->name_part().data(), static_cast<int>(this->name_part().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.UninterpretedOption.NamePart.name_part");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // required bool is_extension = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            set_has_is_extension();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                   input, &is_extension_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.UninterpretedOption.NamePart)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.UninterpretedOption.NamePart)
    return false;
  #undef DO_
  }
  
  void UninterpretedOption_NamePart::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.UninterpretedOption.NamePart)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required string name_part = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name_part().data(), static_cast<int>(this->name_part().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.NamePart.name_part");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        1, this->name_part(), output);
    }
  
    // required bool is_extension = 2;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->is_extension(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.UninterpretedOption.NamePart)
  }
  
  ::google::protobuf::uint8* UninterpretedOption_NamePart::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption.NamePart)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = _has_bits_[0];
    // required string name_part = 1;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->name_part().data(), static_cast<int>(this->name_part().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.NamePart.name_part");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          1, this->name_part(), target);
    }
  
    // required bool is_extension = 2;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->is_extension(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption.NamePart)
    return target;
  }
  
  size_t UninterpretedOption_NamePart::RequiredFieldsByteSizeFallback() const {
  // @@protoc_insertion_point(required_fields_byte_size_fallback_start:google.protobuf.UninterpretedOption.NamePart)
    size_t total_size = 0;
  
    if (has_name_part()) {
      // required string name_part = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->name_part());
    }
  
    if (has_is_extension()) {
      // required bool is_extension = 2;
      total_size += 1 + 1;
    }
  
    return total_size;
  }
  size_t UninterpretedOption_NamePart::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption.NamePart)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
      // required string name_part = 1;
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->name_part());
  
      // required bool is_extension = 2;
      total_size += 1 + 1;
  
    } else {
      total_size += RequiredFieldsByteSizeFallback();
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void UninterpretedOption_NamePart::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.UninterpretedOption.NamePart)
    GOOGLE_DCHECK_NE(&from, this);
    const UninterpretedOption_NamePart* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const UninterpretedOption_NamePart>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.UninterpretedOption.NamePart)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.UninterpretedOption.NamePart)
      MergeFrom(*source);
    }
  }
  
  void UninterpretedOption_NamePart::MergeFrom(const UninterpretedOption_NamePart& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption.NamePart)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_name_part(from.name_part());
      }
      if (cached_has_bits & 0x00000002u) {
        is_extension_ = from.is_extension_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void UninterpretedOption_NamePart::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.UninterpretedOption.NamePart)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void UninterpretedOption_NamePart::CopyFrom(const UninterpretedOption_NamePart& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.UninterpretedOption.NamePart)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool UninterpretedOption_NamePart::IsInitialized() const {
    if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
    return true;
  }
  
  void UninterpretedOption_NamePart::Swap(UninterpretedOption_NamePart* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      UninterpretedOption_NamePart* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void UninterpretedOption_NamePart::UnsafeArenaSwap(UninterpretedOption_NamePart* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void UninterpretedOption_NamePart::InternalSwap(UninterpretedOption_NamePart* other) {
    using std::swap;
    name_part_.Swap(&other->name_part_);
    swap(is_extension_, other->is_extension_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata UninterpretedOption_NamePart::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // UninterpretedOption_NamePart
  
  // required string name_part = 1;
  bool UninterpretedOption_NamePart::has_name_part() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void UninterpretedOption_NamePart::set_has_name_part() {
    _has_bits_[0] |= 0x00000001u;
  }
  void UninterpretedOption_NamePart::clear_has_name_part() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void UninterpretedOption_NamePart::clear_name_part() {
    name_part_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_name_part();
  }
  const ::std::string& UninterpretedOption_NamePart::name_part() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.NamePart.name_part)
    return name_part_.Get();
  }
  void UninterpretedOption_NamePart::set_name_part(const ::std::string& value) {
    set_has_name_part();
    name_part_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  #if LANG_CXX11
  void UninterpretedOption_NamePart::set_name_part(::std::string&& value) {
    set_has_name_part();
    name_part_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  #endif
  void UninterpretedOption_NamePart::set_name_part(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_name_part();
    name_part_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  void UninterpretedOption_NamePart::set_name_part(const char* value,
      size_t size) {
    set_has_name_part();
    name_part_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  ::std::string* UninterpretedOption_NamePart::mutable_name_part() {
    set_has_name_part();
    // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.NamePart.name_part)
    return name_part_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption_NamePart::release_name_part() {
    // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.NamePart.name_part)
    clear_has_name_part();
    return name_part_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption_NamePart::unsafe_arena_release_name_part() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.UninterpretedOption.NamePart.name_part)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_name_part();
    return name_part_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void UninterpretedOption_NamePart::set_allocated_name_part(::std::string* name_part) {
    if (name_part != NULL) {
      set_has_name_part();
    } else {
      clear_has_name_part();
    }
    name_part_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name_part,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  void UninterpretedOption_NamePart::unsafe_arena_set_allocated_name_part(
      ::std::string* name_part) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (name_part != NULL) {
      set_has_name_part();
    } else {
      clear_has_name_part();
    }
    name_part_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        name_part, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.UninterpretedOption.NamePart.name_part)
  }
  
  // required bool is_extension = 2;
  bool UninterpretedOption_NamePart::has_is_extension() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void UninterpretedOption_NamePart::set_has_is_extension() {
    _has_bits_[0] |= 0x00000002u;
  }
  void UninterpretedOption_NamePart::clear_has_is_extension() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void UninterpretedOption_NamePart::clear_is_extension() {
    is_extension_ = false;
    clear_has_is_extension();
  }
  bool UninterpretedOption_NamePart::is_extension() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.NamePart.is_extension)
    return is_extension_;
  }
  void UninterpretedOption_NamePart::set_is_extension(bool value) {
    set_has_is_extension();
    is_extension_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.NamePart.is_extension)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int UninterpretedOption::kNameFieldNumber;
  const int UninterpretedOption::kIdentifierValueFieldNumber;
  const int UninterpretedOption::kPositiveIntValueFieldNumber;
  const int UninterpretedOption::kNegativeIntValueFieldNumber;
  const int UninterpretedOption::kDoubleValueFieldNumber;
  const int UninterpretedOption::kStringValueFieldNumber;
  const int UninterpretedOption::kAggregateValueFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  UninterpretedOption::UninterpretedOption()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.UninterpretedOption)
  }
  UninterpretedOption::UninterpretedOption(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    name_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.UninterpretedOption)
  }
  UninterpretedOption::UninterpretedOption(const UninterpretedOption& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        name_(from.name_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    identifier_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_identifier_value()) {
      identifier_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.identifier_value(),
        GetArenaNoVirtual());
    }
    string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_string_value()) {
      string_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.string_value(),
        GetArenaNoVirtual());
    }
    aggregate_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_aggregate_value()) {
      aggregate_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.aggregate_value(),
        GetArenaNoVirtual());
    }
    ::memcpy(&positive_int_value_, &from.positive_int_value_,
      static_cast<size_t>(reinterpret_cast<char*>(&double_value_) -
      reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.UninterpretedOption)
  }
  
  void UninterpretedOption::SharedCtor() {
    _cached_size_ = 0;
    identifier_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    string_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    aggregate_value_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&positive_int_value_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&double_value_) -
        reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
  }
  
  UninterpretedOption::~UninterpretedOption() {
    // @@protoc_insertion_point(destructor:google.protobuf.UninterpretedOption)
    SharedDtor();
  }
  
  void UninterpretedOption::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    identifier_value_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    string_value_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    aggregate_value_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
  }
  
  void UninterpretedOption::ArenaDtor(void* object) {
    UninterpretedOption* _this = reinterpret_cast< UninterpretedOption* >(object);
    (void)_this;
  }
  void UninterpretedOption::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void UninterpretedOption::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* UninterpretedOption::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const UninterpretedOption& UninterpretedOption::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  UninterpretedOption* UninterpretedOption::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<UninterpretedOption>(arena);
  }
  
  void UninterpretedOption::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.UninterpretedOption)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    name_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!identifier_value_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        identifier_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!string_value_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        string_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000004u) {
        GOOGLE_DCHECK(!aggregate_value_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        aggregate_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
    }
    if (cached_has_bits & 56u) {
      ::memset(&positive_int_value_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&double_value_) -
          reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool UninterpretedOption::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.UninterpretedOption)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_name()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string identifier_value = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_identifier_value()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->identifier_value().data(), static_cast<int>(this->identifier_value().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.UninterpretedOption.identifier_value");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional uint64 positive_int_value = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_positive_int_value();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                   input, &positive_int_value_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int64 negative_int_value = 5;
        case 5: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
            set_has_negative_int_value();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                   input, &negative_int_value_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional double double_value = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {
            set_has_double_value();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                   input, &double_value_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional bytes string_value = 7;
        case 7: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                  input, this->mutable_string_value()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string aggregate_value = 8;
        case 8: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_aggregate_value()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->aggregate_value().data(), static_cast<int>(this->aggregate_value().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.UninterpretedOption.aggregate_value");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.UninterpretedOption)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.UninterpretedOption)
    return false;
  #undef DO_
  }
  
  void UninterpretedOption::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.UninterpretedOption)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->name_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        2, this->name(static_cast<int>(i)), output);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string identifier_value = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->identifier_value().data(), static_cast<int>(this->identifier_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.identifier_value");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->identifier_value(), output);
    }
  
    // optional uint64 positive_int_value = 4;
    if (cached_has_bits & 0x00000008u) {
      ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->positive_int_value(), output);
    }
  
    // optional int64 negative_int_value = 5;
    if (cached_has_bits & 0x00000010u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->negative_int_value(), output);
    }
  
    // optional double double_value = 6;
    if (cached_has_bits & 0x00000020u) {
      ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->double_value(), output);
    }
  
    // optional bytes string_value = 7;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
        7, this->string_value(), output);
    }
  
    // optional string aggregate_value = 8;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->aggregate_value().data(), static_cast<int>(this->aggregate_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.aggregate_value");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        8, this->aggregate_value(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.UninterpretedOption)
  }
  
  ::google::protobuf::uint8* UninterpretedOption::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->name_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          2, this->name(static_cast<int>(i)), deterministic, target);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string identifier_value = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->identifier_value().data(), static_cast<int>(this->identifier_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.identifier_value");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          3, this->identifier_value(), target);
    }
  
    // optional uint64 positive_int_value = 4;
    if (cached_has_bits & 0x00000008u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->positive_int_value(), target);
    }
  
    // optional int64 negative_int_value = 5;
    if (cached_has_bits & 0x00000010u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->negative_int_value(), target);
    }
  
    // optional double double_value = 6;
    if (cached_has_bits & 0x00000020u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->double_value(), target);
    }
  
    // optional bytes string_value = 7;
    if (cached_has_bits & 0x00000002u) {
      target =
        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
          7, this->string_value(), target);
    }
  
    // optional string aggregate_value = 8;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->aggregate_value().data(), static_cast<int>(this->aggregate_value().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.UninterpretedOption.aggregate_value");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          8, this->aggregate_value(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption)
    return target;
  }
  
  size_t UninterpretedOption::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
    {
      unsigned int count = static_cast<unsigned int>(this->name_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->name(static_cast<int>(i)));
      }
    }
  
    if (_has_bits_[0 / 32] & 63u) {
      // optional string identifier_value = 3;
      if (has_identifier_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->identifier_value());
      }
  
      // optional bytes string_value = 7;
      if (has_string_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::BytesSize(
            this->string_value());
      }
  
      // optional string aggregate_value = 8;
      if (has_aggregate_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->aggregate_value());
      }
  
      // optional uint64 positive_int_value = 4;
      if (has_positive_int_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::UInt64Size(
            this->positive_int_value());
      }
  
      // optional int64 negative_int_value = 5;
      if (has_negative_int_value()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int64Size(
            this->negative_int_value());
      }
  
      // optional double double_value = 6;
      if (has_double_value()) {
        total_size += 1 + 8;
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void UninterpretedOption::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.UninterpretedOption)
    GOOGLE_DCHECK_NE(&from, this);
    const UninterpretedOption* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const UninterpretedOption>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.UninterpretedOption)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.UninterpretedOption)
      MergeFrom(*source);
    }
  }
  
  void UninterpretedOption::MergeFrom(const UninterpretedOption& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    name_.MergeFrom(from.name_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 63u) {
      if (cached_has_bits & 0x00000001u) {
        set_identifier_value(from.identifier_value());
      }
      if (cached_has_bits & 0x00000002u) {
        set_string_value(from.string_value());
      }
      if (cached_has_bits & 0x00000004u) {
        set_aggregate_value(from.aggregate_value());
      }
      if (cached_has_bits & 0x00000008u) {
        positive_int_value_ = from.positive_int_value_;
      }
      if (cached_has_bits & 0x00000010u) {
        negative_int_value_ = from.negative_int_value_;
      }
      if (cached_has_bits & 0x00000020u) {
        double_value_ = from.double_value_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void UninterpretedOption::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.UninterpretedOption)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void UninterpretedOption::CopyFrom(const UninterpretedOption& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.UninterpretedOption)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool UninterpretedOption::IsInitialized() const {
    if (!::google::protobuf::internal::AllAreInitialized(this->name())) return false;
    return true;
  }
  
  void UninterpretedOption::Swap(UninterpretedOption* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      UninterpretedOption* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void UninterpretedOption::UnsafeArenaSwap(UninterpretedOption* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void UninterpretedOption::InternalSwap(UninterpretedOption* other) {
    using std::swap;
    name_.InternalSwap(&other->name_);
    identifier_value_.Swap(&other->identifier_value_);
    string_value_.Swap(&other->string_value_);
    aggregate_value_.Swap(&other->aggregate_value_);
    swap(positive_int_value_, other->positive_int_value_);
    swap(negative_int_value_, other->negative_int_value_);
    swap(double_value_, other->double_value_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata UninterpretedOption::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // UninterpretedOption
  
  // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
  int UninterpretedOption::name_size() const {
    return name_.size();
  }
  void UninterpretedOption::clear_name() {
    name_.Clear();
  }
  const ::google::protobuf::UninterpretedOption_NamePart& UninterpretedOption::name(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.name)
    return name_.Get(index);
  }
  ::google::protobuf::UninterpretedOption_NamePart* UninterpretedOption::mutable_name(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.name)
    return name_.Mutable(index);
  }
  ::google::protobuf::UninterpretedOption_NamePart* UninterpretedOption::add_name() {
    // @@protoc_insertion_point(field_add:google.protobuf.UninterpretedOption.name)
    return name_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >*
  UninterpretedOption::mutable_name() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.UninterpretedOption.name)
    return &name_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::UninterpretedOption_NamePart >&
  UninterpretedOption::name() const {
    // @@protoc_insertion_point(field_list:google.protobuf.UninterpretedOption.name)
    return name_;
  }
  
  // optional string identifier_value = 3;
  bool UninterpretedOption::has_identifier_value() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void UninterpretedOption::set_has_identifier_value() {
    _has_bits_[0] |= 0x00000001u;
  }
  void UninterpretedOption::clear_has_identifier_value() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void UninterpretedOption::clear_identifier_value() {
    identifier_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_identifier_value();
  }
  const ::std::string& UninterpretedOption::identifier_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.identifier_value)
    return identifier_value_.Get();
  }
  void UninterpretedOption::set_identifier_value(const ::std::string& value) {
    set_has_identifier_value();
    identifier_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.identifier_value)
  }
  #if LANG_CXX11
  void UninterpretedOption::set_identifier_value(::std::string&& value) {
    set_has_identifier_value();
    identifier_value_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.UninterpretedOption.identifier_value)
  }
  #endif
  void UninterpretedOption::set_identifier_value(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_identifier_value();
    identifier_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.UninterpretedOption.identifier_value)
  }
  void UninterpretedOption::set_identifier_value(const char* value,
      size_t size) {
    set_has_identifier_value();
    identifier_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.UninterpretedOption.identifier_value)
  }
  ::std::string* UninterpretedOption::mutable_identifier_value() {
    set_has_identifier_value();
    // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.identifier_value)
    return identifier_value_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::release_identifier_value() {
    // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.identifier_value)
    clear_has_identifier_value();
    return identifier_value_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::unsafe_arena_release_identifier_value() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.UninterpretedOption.identifier_value)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_identifier_value();
    return identifier_value_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void UninterpretedOption::set_allocated_identifier_value(::std::string* identifier_value) {
    if (identifier_value != NULL) {
      set_has_identifier_value();
    } else {
      clear_has_identifier_value();
    }
    identifier_value_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), identifier_value,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.identifier_value)
  }
  void UninterpretedOption::unsafe_arena_set_allocated_identifier_value(
      ::std::string* identifier_value) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (identifier_value != NULL) {
      set_has_identifier_value();
    } else {
      clear_has_identifier_value();
    }
    identifier_value_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        identifier_value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.UninterpretedOption.identifier_value)
  }
  
  // optional uint64 positive_int_value = 4;
  bool UninterpretedOption::has_positive_int_value() const {
    return (_has_bits_[0] & 0x00000008u) != 0;
  }
  void UninterpretedOption::set_has_positive_int_value() {
    _has_bits_[0] |= 0x00000008u;
  }
  void UninterpretedOption::clear_has_positive_int_value() {
    _has_bits_[0] &= ~0x00000008u;
  }
  void UninterpretedOption::clear_positive_int_value() {
    positive_int_value_ = GOOGLE_ULONGLONG(0);
    clear_has_positive_int_value();
  }
  ::google::protobuf::uint64 UninterpretedOption::positive_int_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.positive_int_value)
    return positive_int_value_;
  }
  void UninterpretedOption::set_positive_int_value(::google::protobuf::uint64 value) {
    set_has_positive_int_value();
    positive_int_value_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.positive_int_value)
  }
  
  // optional int64 negative_int_value = 5;
  bool UninterpretedOption::has_negative_int_value() const {
    return (_has_bits_[0] & 0x00000010u) != 0;
  }
  void UninterpretedOption::set_has_negative_int_value() {
    _has_bits_[0] |= 0x00000010u;
  }
  void UninterpretedOption::clear_has_negative_int_value() {
    _has_bits_[0] &= ~0x00000010u;
  }
  void UninterpretedOption::clear_negative_int_value() {
    negative_int_value_ = GOOGLE_LONGLONG(0);
    clear_has_negative_int_value();
  }
  ::google::protobuf::int64 UninterpretedOption::negative_int_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.negative_int_value)
    return negative_int_value_;
  }
  void UninterpretedOption::set_negative_int_value(::google::protobuf::int64 value) {
    set_has_negative_int_value();
    negative_int_value_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.negative_int_value)
  }
  
  // optional double double_value = 6;
  bool UninterpretedOption::has_double_value() const {
    return (_has_bits_[0] & 0x00000020u) != 0;
  }
  void UninterpretedOption::set_has_double_value() {
    _has_bits_[0] |= 0x00000020u;
  }
  void UninterpretedOption::clear_has_double_value() {
    _has_bits_[0] &= ~0x00000020u;
  }
  void UninterpretedOption::clear_double_value() {
    double_value_ = 0;
    clear_has_double_value();
  }
  double UninterpretedOption::double_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.double_value)
    return double_value_;
  }
  void UninterpretedOption::set_double_value(double value) {
    set_has_double_value();
    double_value_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.double_value)
  }
  
  // optional bytes string_value = 7;
  bool UninterpretedOption::has_string_value() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void UninterpretedOption::set_has_string_value() {
    _has_bits_[0] |= 0x00000002u;
  }
  void UninterpretedOption::clear_has_string_value() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void UninterpretedOption::clear_string_value() {
    string_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_string_value();
  }
  const ::std::string& UninterpretedOption::string_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.string_value)
    return string_value_.Get();
  }
  void UninterpretedOption::set_string_value(const ::std::string& value) {
    set_has_string_value();
    string_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.string_value)
  }
  #if LANG_CXX11
  void UninterpretedOption::set_string_value(::std::string&& value) {
    set_has_string_value();
    string_value_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.UninterpretedOption.string_value)
  }
  #endif
  void UninterpretedOption::set_string_value(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_string_value();
    string_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.UninterpretedOption.string_value)
  }
  void UninterpretedOption::set_string_value(const void* value,
      size_t size) {
    set_has_string_value();
    string_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.UninterpretedOption.string_value)
  }
  ::std::string* UninterpretedOption::mutable_string_value() {
    set_has_string_value();
    // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.string_value)
    return string_value_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::release_string_value() {
    // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.string_value)
    clear_has_string_value();
    return string_value_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::unsafe_arena_release_string_value() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.UninterpretedOption.string_value)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_string_value();
    return string_value_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void UninterpretedOption::set_allocated_string_value(::std::string* string_value) {
    if (string_value != NULL) {
      set_has_string_value();
    } else {
      clear_has_string_value();
    }
    string_value_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), string_value,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.string_value)
  }
  void UninterpretedOption::unsafe_arena_set_allocated_string_value(
      ::std::string* string_value) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (string_value != NULL) {
      set_has_string_value();
    } else {
      clear_has_string_value();
    }
    string_value_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        string_value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.UninterpretedOption.string_value)
  }
  
  // optional string aggregate_value = 8;
  bool UninterpretedOption::has_aggregate_value() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void UninterpretedOption::set_has_aggregate_value() {
    _has_bits_[0] |= 0x00000004u;
  }
  void UninterpretedOption::clear_has_aggregate_value() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void UninterpretedOption::clear_aggregate_value() {
    aggregate_value_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_aggregate_value();
  }
  const ::std::string& UninterpretedOption::aggregate_value() const {
    // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.aggregate_value)
    return aggregate_value_.Get();
  }
  void UninterpretedOption::set_aggregate_value(const ::std::string& value) {
    set_has_aggregate_value();
    aggregate_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.aggregate_value)
  }
  #if LANG_CXX11
  void UninterpretedOption::set_aggregate_value(::std::string&& value) {
    set_has_aggregate_value();
    aggregate_value_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.UninterpretedOption.aggregate_value)
  }
  #endif
  void UninterpretedOption::set_aggregate_value(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_aggregate_value();
    aggregate_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.UninterpretedOption.aggregate_value)
  }
  void UninterpretedOption::set_aggregate_value(const char* value,
      size_t size) {
    set_has_aggregate_value();
    aggregate_value_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.UninterpretedOption.aggregate_value)
  }
  ::std::string* UninterpretedOption::mutable_aggregate_value() {
    set_has_aggregate_value();
    // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.aggregate_value)
    return aggregate_value_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::release_aggregate_value() {
    // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.aggregate_value)
    clear_has_aggregate_value();
    return aggregate_value_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* UninterpretedOption::unsafe_arena_release_aggregate_value() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.UninterpretedOption.aggregate_value)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_aggregate_value();
    return aggregate_value_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void UninterpretedOption::set_allocated_aggregate_value(::std::string* aggregate_value) {
    if (aggregate_value != NULL) {
      set_has_aggregate_value();
    } else {
      clear_has_aggregate_value();
    }
    aggregate_value_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), aggregate_value,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.aggregate_value)
  }
  void UninterpretedOption::unsafe_arena_set_allocated_aggregate_value(
      ::std::string* aggregate_value) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (aggregate_value != NULL) {
      set_has_aggregate_value();
    } else {
      clear_has_aggregate_value();
    }
    aggregate_value_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        aggregate_value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.UninterpretedOption.aggregate_value)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int SourceCodeInfo_Location::kPathFieldNumber;
  const int SourceCodeInfo_Location::kSpanFieldNumber;
  const int SourceCodeInfo_Location::kLeadingCommentsFieldNumber;
  const int SourceCodeInfo_Location::kTrailingCommentsFieldNumber;
  const int SourceCodeInfo_Location::kLeadingDetachedCommentsFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  SourceCodeInfo_Location::SourceCodeInfo_Location()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.SourceCodeInfo.Location)
  }
  SourceCodeInfo_Location::SourceCodeInfo_Location(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    path_(arena),
    span_(arena),
    leading_detached_comments_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.SourceCodeInfo.Location)
  }
  SourceCodeInfo_Location::SourceCodeInfo_Location(const SourceCodeInfo_Location& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        path_(from.path_),
        span_(from.span_),
        leading_detached_comments_(from.leading_detached_comments_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    leading_comments_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_leading_comments()) {
      leading_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.leading_comments(),
        GetArenaNoVirtual());
    }
    trailing_comments_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_trailing_comments()) {
      trailing_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.trailing_comments(),
        GetArenaNoVirtual());
    }
    // @@protoc_insertion_point(copy_constructor:google.protobuf.SourceCodeInfo.Location)
  }
  
  void SourceCodeInfo_Location::SharedCtor() {
    _cached_size_ = 0;
    leading_comments_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    trailing_comments_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  
  SourceCodeInfo_Location::~SourceCodeInfo_Location() {
    // @@protoc_insertion_point(destructor:google.protobuf.SourceCodeInfo.Location)
    SharedDtor();
  }
  
  void SourceCodeInfo_Location::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    leading_comments_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
    trailing_comments_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
  }
  
  void SourceCodeInfo_Location::ArenaDtor(void* object) {
    SourceCodeInfo_Location* _this = reinterpret_cast< SourceCodeInfo_Location* >(object);
    (void)_this;
  }
  void SourceCodeInfo_Location::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void SourceCodeInfo_Location::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* SourceCodeInfo_Location::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const SourceCodeInfo_Location& SourceCodeInfo_Location::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  SourceCodeInfo_Location* SourceCodeInfo_Location::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<SourceCodeInfo_Location>(arena);
  }
  
  void SourceCodeInfo_Location::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.SourceCodeInfo.Location)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    path_.Clear();
    span_.Clear();
    leading_detached_comments_.Clear();
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        GOOGLE_DCHECK(!leading_comments_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        leading_comments_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
      if (cached_has_bits & 0x00000002u) {
        GOOGLE_DCHECK(!trailing_comments_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
        trailing_comments_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
      }
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool SourceCodeInfo_Location::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.SourceCodeInfo.Location)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated int32 path = 1 [packed = true];
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, this->mutable_path())));
          } else if (
              static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   1, 10u, input, this->mutable_path())));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated int32 span = 2 [packed = true];
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, this->mutable_span())));
          } else if (
              static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   1, 18u, input, this->mutable_span())));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string leading_comments = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_leading_comments()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->leading_comments().data(), static_cast<int>(this->leading_comments().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.SourceCodeInfo.Location.leading_comments");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string trailing_comments = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_trailing_comments()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->trailing_comments().data(), static_cast<int>(this->trailing_comments().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.SourceCodeInfo.Location.trailing_comments");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // repeated string leading_detached_comments = 6;
        case 6: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->add_leading_detached_comments()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->leading_detached_comments(this->leading_detached_comments_size() - 1).data(),
              static_cast<int>(this->leading_detached_comments(this->leading_detached_comments_size() - 1).length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.SourceCodeInfo.Location)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.SourceCodeInfo.Location)
    return false;
  #undef DO_
  }
  
  void SourceCodeInfo_Location::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.SourceCodeInfo.Location)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated int32 path = 1 [packed = true];
    if (this->path_size() > 0) {
      ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
      output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
          _path_cached_byte_size_));
    }
    for (int i = 0, n = this->path_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
        this->path(i), output);
    }
  
    // repeated int32 span = 2 [packed = true];
    if (this->span_size() > 0) {
      ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
      output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
          _span_cached_byte_size_));
    }
    for (int i = 0, n = this->span_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
        this->span(i), output);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string leading_comments = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->leading_comments().data(), static_cast<int>(this->leading_comments().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.leading_comments");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        3, this->leading_comments(), output);
    }
  
    // optional string trailing_comments = 4;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->trailing_comments().data(), static_cast<int>(this->trailing_comments().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.trailing_comments");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        4, this->trailing_comments(), output);
    }
  
    // repeated string leading_detached_comments = 6;
    for (int i = 0, n = this->leading_detached_comments_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->leading_detached_comments(i).data(), static_cast<int>(this->leading_detached_comments(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
      ::google::protobuf::internal::WireFormatLite::WriteString(
        6, this->leading_detached_comments(i), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.SourceCodeInfo.Location)
  }
  
  ::google::protobuf::uint8* SourceCodeInfo_Location::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo.Location)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated int32 path = 1 [packed = true];
    if (this->path_size() > 0) {
      target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
        1,
        ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
        target);
      target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
          static_cast< ::google::protobuf::uint32>(
              _path_cached_byte_size_), target);
      target = ::google::protobuf::internal::WireFormatLite::
        WriteInt32NoTagToArray(this->path_, target);
    }
  
    // repeated int32 span = 2 [packed = true];
    if (this->span_size() > 0) {
      target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
        2,
        ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
        target);
      target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
          static_cast< ::google::protobuf::uint32>(
              _span_cached_byte_size_), target);
      target = ::google::protobuf::internal::WireFormatLite::
        WriteInt32NoTagToArray(this->span_, target);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string leading_comments = 3;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->leading_comments().data(), static_cast<int>(this->leading_comments().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.leading_comments");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          3, this->leading_comments(), target);
    }
  
    // optional string trailing_comments = 4;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->trailing_comments().data(), static_cast<int>(this->trailing_comments().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.trailing_comments");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          4, this->trailing_comments(), target);
    }
  
    // repeated string leading_detached_comments = 6;
    for (int i = 0, n = this->leading_detached_comments_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->leading_detached_comments(i).data(), static_cast<int>(this->leading_detached_comments(i).length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
      target = ::google::protobuf::internal::WireFormatLite::
        WriteStringToArray(6, this->leading_detached_comments(i), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo.Location)
    return target;
  }
  
  size_t SourceCodeInfo_Location::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo.Location)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated int32 path = 1 [packed = true];
    {
      size_t data_size = ::google::protobuf::internal::WireFormatLite::
        Int32Size(this->path_);
      if (data_size > 0) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
              static_cast< ::google::protobuf::int32>(data_size));
      }
      int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
      GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
      _path_cached_byte_size_ = cached_size;
      GOOGLE_SAFE_CONCURRENT_WRITES_END();
      total_size += data_size;
    }
  
    // repeated int32 span = 2 [packed = true];
    {
      size_t data_size = ::google::protobuf::internal::WireFormatLite::
        Int32Size(this->span_);
      if (data_size > 0) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
              static_cast< ::google::protobuf::int32>(data_size));
      }
      int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
      GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
      _span_cached_byte_size_ = cached_size;
      GOOGLE_SAFE_CONCURRENT_WRITES_END();
      total_size += data_size;
    }
  
    // repeated string leading_detached_comments = 6;
    total_size += 1 *
        ::google::protobuf::internal::FromIntSize(this->leading_detached_comments_size());
    for (int i = 0, n = this->leading_detached_comments_size(); i < n; i++) {
      total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
        this->leading_detached_comments(i));
    }
  
    if (_has_bits_[0 / 32] & 3u) {
      // optional string leading_comments = 3;
      if (has_leading_comments()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->leading_comments());
      }
  
      // optional string trailing_comments = 4;
      if (has_trailing_comments()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->trailing_comments());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void SourceCodeInfo_Location::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.SourceCodeInfo.Location)
    GOOGLE_DCHECK_NE(&from, this);
    const SourceCodeInfo_Location* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const SourceCodeInfo_Location>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.SourceCodeInfo.Location)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.SourceCodeInfo.Location)
      MergeFrom(*source);
    }
  }
  
  void SourceCodeInfo_Location::MergeFrom(const SourceCodeInfo_Location& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo.Location)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    path_.MergeFrom(from.path_);
    span_.MergeFrom(from.span_);
    leading_detached_comments_.MergeFrom(from.leading_detached_comments_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 3u) {
      if (cached_has_bits & 0x00000001u) {
        set_leading_comments(from.leading_comments());
      }
      if (cached_has_bits & 0x00000002u) {
        set_trailing_comments(from.trailing_comments());
      }
    }
  }
  
  void SourceCodeInfo_Location::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.SourceCodeInfo.Location)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SourceCodeInfo_Location::CopyFrom(const SourceCodeInfo_Location& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.SourceCodeInfo.Location)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SourceCodeInfo_Location::IsInitialized() const {
    return true;
  }
  
  void SourceCodeInfo_Location::Swap(SourceCodeInfo_Location* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      SourceCodeInfo_Location* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void SourceCodeInfo_Location::UnsafeArenaSwap(SourceCodeInfo_Location* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void SourceCodeInfo_Location::InternalSwap(SourceCodeInfo_Location* other) {
    using std::swap;
    path_.InternalSwap(&other->path_);
    span_.InternalSwap(&other->span_);
    leading_detached_comments_.InternalSwap(&other->leading_detached_comments_);
    leading_comments_.Swap(&other->leading_comments_);
    trailing_comments_.Swap(&other->trailing_comments_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata SourceCodeInfo_Location::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // SourceCodeInfo_Location
  
  // repeated int32 path = 1 [packed = true];
  int SourceCodeInfo_Location::path_size() const {
    return path_.size();
  }
  void SourceCodeInfo_Location::clear_path() {
    path_.Clear();
  }
  ::google::protobuf::int32 SourceCodeInfo_Location::path(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.path)
    return path_.Get(index);
  }
  void SourceCodeInfo_Location::set_path(int index, ::google::protobuf::int32 value) {
    path_.Set(index, value);
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.path)
  }
  void SourceCodeInfo_Location::add_path(::google::protobuf::int32 value) {
    path_.Add(value);
    // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.path)
  }
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
  SourceCodeInfo_Location::path() const {
    // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.path)
    return path_;
  }
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
  SourceCodeInfo_Location::mutable_path() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.path)
    return &path_;
  }
  
  // repeated int32 span = 2 [packed = true];
  int SourceCodeInfo_Location::span_size() const {
    return span_.size();
  }
  void SourceCodeInfo_Location::clear_span() {
    span_.Clear();
  }
  ::google::protobuf::int32 SourceCodeInfo_Location::span(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.span)
    return span_.Get(index);
  }
  void SourceCodeInfo_Location::set_span(int index, ::google::protobuf::int32 value) {
    span_.Set(index, value);
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.span)
  }
  void SourceCodeInfo_Location::add_span(::google::protobuf::int32 value) {
    span_.Add(value);
    // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.span)
  }
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
  SourceCodeInfo_Location::span() const {
    // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.span)
    return span_;
  }
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
  SourceCodeInfo_Location::mutable_span() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.span)
    return &span_;
  }
  
  // optional string leading_comments = 3;
  bool SourceCodeInfo_Location::has_leading_comments() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void SourceCodeInfo_Location::set_has_leading_comments() {
    _has_bits_[0] |= 0x00000001u;
  }
  void SourceCodeInfo_Location::clear_has_leading_comments() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void SourceCodeInfo_Location::clear_leading_comments() {
    leading_comments_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_leading_comments();
  }
  const ::std::string& SourceCodeInfo_Location::leading_comments() const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.leading_comments)
    return leading_comments_.Get();
  }
  void SourceCodeInfo_Location::set_leading_comments(const ::std::string& value) {
    set_has_leading_comments();
    leading_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  #if LANG_CXX11
  void SourceCodeInfo_Location::set_leading_comments(::std::string&& value) {
    set_has_leading_comments();
    leading_comments_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  #endif
  void SourceCodeInfo_Location::set_leading_comments(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_leading_comments();
    leading_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  void SourceCodeInfo_Location::set_leading_comments(const char* value,
      size_t size) {
    set_has_leading_comments();
    leading_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  ::std::string* SourceCodeInfo_Location::mutable_leading_comments() {
    set_has_leading_comments();
    // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.leading_comments)
    return leading_comments_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* SourceCodeInfo_Location::release_leading_comments() {
    // @@protoc_insertion_point(field_release:google.protobuf.SourceCodeInfo.Location.leading_comments)
    clear_has_leading_comments();
    return leading_comments_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* SourceCodeInfo_Location::unsafe_arena_release_leading_comments() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.SourceCodeInfo.Location.leading_comments)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_leading_comments();
    return leading_comments_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void SourceCodeInfo_Location::set_allocated_leading_comments(::std::string* leading_comments) {
    if (leading_comments != NULL) {
      set_has_leading_comments();
    } else {
      clear_has_leading_comments();
    }
    leading_comments_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), leading_comments,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  void SourceCodeInfo_Location::unsafe_arena_set_allocated_leading_comments(
      ::std::string* leading_comments) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (leading_comments != NULL) {
      set_has_leading_comments();
    } else {
      clear_has_leading_comments();
    }
    leading_comments_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        leading_comments, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.SourceCodeInfo.Location.leading_comments)
  }
  
  // optional string trailing_comments = 4;
  bool SourceCodeInfo_Location::has_trailing_comments() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void SourceCodeInfo_Location::set_has_trailing_comments() {
    _has_bits_[0] |= 0x00000002u;
  }
  void SourceCodeInfo_Location::clear_has_trailing_comments() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void SourceCodeInfo_Location::clear_trailing_comments() {
    trailing_comments_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_trailing_comments();
  }
  const ::std::string& SourceCodeInfo_Location::trailing_comments() const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.trailing_comments)
    return trailing_comments_.Get();
  }
  void SourceCodeInfo_Location::set_trailing_comments(const ::std::string& value) {
    set_has_trailing_comments();
    trailing_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  #if LANG_CXX11
  void SourceCodeInfo_Location::set_trailing_comments(::std::string&& value) {
    set_has_trailing_comments();
    trailing_comments_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  #endif
  void SourceCodeInfo_Location::set_trailing_comments(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_trailing_comments();
    trailing_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  void SourceCodeInfo_Location::set_trailing_comments(const char* value,
      size_t size) {
    set_has_trailing_comments();
    trailing_comments_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  ::std::string* SourceCodeInfo_Location::mutable_trailing_comments() {
    set_has_trailing_comments();
    // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.trailing_comments)
    return trailing_comments_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* SourceCodeInfo_Location::release_trailing_comments() {
    // @@protoc_insertion_point(field_release:google.protobuf.SourceCodeInfo.Location.trailing_comments)
    clear_has_trailing_comments();
    return trailing_comments_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* SourceCodeInfo_Location::unsafe_arena_release_trailing_comments() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.SourceCodeInfo.Location.trailing_comments)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_trailing_comments();
    return trailing_comments_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void SourceCodeInfo_Location::set_allocated_trailing_comments(::std::string* trailing_comments) {
    if (trailing_comments != NULL) {
      set_has_trailing_comments();
    } else {
      clear_has_trailing_comments();
    }
    trailing_comments_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), trailing_comments,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  void SourceCodeInfo_Location::unsafe_arena_set_allocated_trailing_comments(
      ::std::string* trailing_comments) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (trailing_comments != NULL) {
      set_has_trailing_comments();
    } else {
      clear_has_trailing_comments();
    }
    trailing_comments_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        trailing_comments, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.SourceCodeInfo.Location.trailing_comments)
  }
  
  // repeated string leading_detached_comments = 6;
  int SourceCodeInfo_Location::leading_detached_comments_size() const {
    return leading_detached_comments_.size();
  }
  void SourceCodeInfo_Location::clear_leading_detached_comments() {
    leading_detached_comments_.Clear();
  }
  const ::std::string& SourceCodeInfo_Location::leading_detached_comments(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    return leading_detached_comments_.Get(index);
  }
  ::std::string* SourceCodeInfo_Location::mutable_leading_detached_comments(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    return leading_detached_comments_.Mutable(index);
  }
  void SourceCodeInfo_Location::set_leading_detached_comments(int index, const ::std::string& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    leading_detached_comments_.Mutable(index)->assign(value);
  }
  #if LANG_CXX11
  void SourceCodeInfo_Location::set_leading_detached_comments(int index, ::std::string&& value) {
    // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    leading_detached_comments_.Mutable(index)->assign(std::move(value));
  }
  #endif
  void SourceCodeInfo_Location::set_leading_detached_comments(int index, const char* value) {
    GOOGLE_DCHECK(value != NULL);
    leading_detached_comments_.Mutable(index)->assign(value);
    // @@protoc_insertion_point(field_set_char:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  void SourceCodeInfo_Location::set_leading_detached_comments(int index, const char* value, size_t size) {
    leading_detached_comments_.Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  ::std::string* SourceCodeInfo_Location::add_leading_detached_comments() {
    // @@protoc_insertion_point(field_add_mutable:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    return leading_detached_comments_.Add();
  }
  void SourceCodeInfo_Location::add_leading_detached_comments(const ::std::string& value) {
    leading_detached_comments_.Add()->assign(value);
    // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  #if LANG_CXX11
  void SourceCodeInfo_Location::add_leading_detached_comments(::std::string&& value) {
    leading_detached_comments_.Add(std::move(value));
    // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  #endif
  void SourceCodeInfo_Location::add_leading_detached_comments(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    leading_detached_comments_.Add()->assign(value);
    // @@protoc_insertion_point(field_add_char:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  void SourceCodeInfo_Location::add_leading_detached_comments(const char* value, size_t size) {
    leading_detached_comments_.Add()->assign(reinterpret_cast<const char*>(value), size);
    // @@protoc_insertion_point(field_add_pointer:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
  }
  const ::google::protobuf::RepeatedPtrField< ::std::string>&
  SourceCodeInfo_Location::leading_detached_comments() const {
    // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    return leading_detached_comments_;
  }
  ::google::protobuf::RepeatedPtrField< ::std::string>*
  SourceCodeInfo_Location::mutable_leading_detached_comments() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
    return &leading_detached_comments_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int SourceCodeInfo::kLocationFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  SourceCodeInfo::SourceCodeInfo()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.SourceCodeInfo)
  }
  SourceCodeInfo::SourceCodeInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    location_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.SourceCodeInfo)
  }
  SourceCodeInfo::SourceCodeInfo(const SourceCodeInfo& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        location_(from.location_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:google.protobuf.SourceCodeInfo)
  }
  
  void SourceCodeInfo::SharedCtor() {
    _cached_size_ = 0;
  }
  
  SourceCodeInfo::~SourceCodeInfo() {
    // @@protoc_insertion_point(destructor:google.protobuf.SourceCodeInfo)
    SharedDtor();
  }
  
  void SourceCodeInfo::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void SourceCodeInfo::ArenaDtor(void* object) {
    SourceCodeInfo* _this = reinterpret_cast< SourceCodeInfo* >(object);
    (void)_this;
  }
  void SourceCodeInfo::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void SourceCodeInfo::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* SourceCodeInfo::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const SourceCodeInfo& SourceCodeInfo::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  SourceCodeInfo* SourceCodeInfo::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<SourceCodeInfo>(arena);
  }
  
  void SourceCodeInfo::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.SourceCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    location_.Clear();
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool SourceCodeInfo::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.SourceCodeInfo)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_location()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.SourceCodeInfo)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.SourceCodeInfo)
    return false;
  #undef DO_
  }
  
  void SourceCodeInfo::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.SourceCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->location_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        1, this->location(static_cast<int>(i)), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.SourceCodeInfo)
  }
  
  ::google::protobuf::uint8* SourceCodeInfo::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->location_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          1, this->location(static_cast<int>(i)), deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo)
    return target;
  }
  
  size_t SourceCodeInfo::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
    {
      unsigned int count = static_cast<unsigned int>(this->location_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->location(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void SourceCodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.SourceCodeInfo)
    GOOGLE_DCHECK_NE(&from, this);
    const SourceCodeInfo* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const SourceCodeInfo>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.SourceCodeInfo)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.SourceCodeInfo)
      MergeFrom(*source);
    }
  }
  
  void SourceCodeInfo::MergeFrom(const SourceCodeInfo& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    location_.MergeFrom(from.location_);
  }
  
  void SourceCodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.SourceCodeInfo)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SourceCodeInfo::CopyFrom(const SourceCodeInfo& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.SourceCodeInfo)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SourceCodeInfo::IsInitialized() const {
    return true;
  }
  
  void SourceCodeInfo::Swap(SourceCodeInfo* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      SourceCodeInfo* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void SourceCodeInfo::UnsafeArenaSwap(SourceCodeInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void SourceCodeInfo::InternalSwap(SourceCodeInfo* other) {
    using std::swap;
    location_.InternalSwap(&other->location_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata SourceCodeInfo::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // SourceCodeInfo
  
  // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
  int SourceCodeInfo::location_size() const {
    return location_.size();
  }
  void SourceCodeInfo::clear_location() {
    location_.Clear();
  }
  const ::google::protobuf::SourceCodeInfo_Location& SourceCodeInfo::location(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.location)
    return location_.Get(index);
  }
  ::google::protobuf::SourceCodeInfo_Location* SourceCodeInfo::mutable_location(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.location)
    return location_.Mutable(index);
  }
  ::google::protobuf::SourceCodeInfo_Location* SourceCodeInfo::add_location() {
    // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.location)
    return location_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >*
  SourceCodeInfo::mutable_location() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.location)
    return &location_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::SourceCodeInfo_Location >&
  SourceCodeInfo::location() const {
    // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.location)
    return location_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int GeneratedCodeInfo_Annotation::kPathFieldNumber;
  const int GeneratedCodeInfo_Annotation::kSourceFileFieldNumber;
  const int GeneratedCodeInfo_Annotation::kBeginFieldNumber;
  const int GeneratedCodeInfo_Annotation::kEndFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.GeneratedCodeInfo.Annotation)
  }
  GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    path_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.GeneratedCodeInfo.Annotation)
  }
  GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(const GeneratedCodeInfo_Annotation& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        path_(from.path_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    source_file_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    if (from.has_source_file()) {
      source_file_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.source_file(),
        GetArenaNoVirtual());
    }
    ::memcpy(&begin_, &from.begin_,
      static_cast<size_t>(reinterpret_cast<char*>(&end_) -
      reinterpret_cast<char*>(&begin_)) + sizeof(end_));
    // @@protoc_insertion_point(copy_constructor:google.protobuf.GeneratedCodeInfo.Annotation)
  }
  
  void GeneratedCodeInfo_Annotation::SharedCtor() {
    _cached_size_ = 0;
    source_file_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    ::memset(&begin_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&begin_)) + sizeof(end_));
  }
  
  GeneratedCodeInfo_Annotation::~GeneratedCodeInfo_Annotation() {
    // @@protoc_insertion_point(destructor:google.protobuf.GeneratedCodeInfo.Annotation)
    SharedDtor();
  }
  
  void GeneratedCodeInfo_Annotation::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
    source_file_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), arena);
  }
  
  void GeneratedCodeInfo_Annotation::ArenaDtor(void* object) {
    GeneratedCodeInfo_Annotation* _this = reinterpret_cast< GeneratedCodeInfo_Annotation* >(object);
    (void)_this;
  }
  void GeneratedCodeInfo_Annotation::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void GeneratedCodeInfo_Annotation::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* GeneratedCodeInfo_Annotation::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const GeneratedCodeInfo_Annotation& GeneratedCodeInfo_Annotation::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  GeneratedCodeInfo_Annotation* GeneratedCodeInfo_Annotation::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<GeneratedCodeInfo_Annotation>(arena);
  }
  
  void GeneratedCodeInfo_Annotation::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.GeneratedCodeInfo.Annotation)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    path_.Clear();
    if (has_source_file()) {
      GOOGLE_DCHECK(!source_file_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
      source_file_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    }
    cached_has_bits = _has_bits_[0];
    if (cached_has_bits & 6u) {
      ::memset(&begin_, 0, static_cast<size_t>(
          reinterpret_cast<char*>(&end_) -
          reinterpret_cast<char*>(&begin_)) + sizeof(end_));
    }
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool GeneratedCodeInfo_Annotation::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.GeneratedCodeInfo.Annotation)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated int32 path = 1 [packed = true];
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, this->mutable_path())));
          } else if (
              static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
            DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   1, 10u, input, this->mutable_path())));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional string source_file = 2;
        case 2: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                  input, this->mutable_source_file()));
            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
              this->source_file().data(), static_cast<int>(this->source_file().length()),
              ::google::protobuf::internal::WireFormat::PARSE,
              "google.protobuf.GeneratedCodeInfo.Annotation.source_file");
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 begin = 3;
        case 3: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
            set_has_begin();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &begin_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        // optional int32 end = 4;
        case 4: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
            set_has_end();
            DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                     ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                   input, &end_)));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.GeneratedCodeInfo.Annotation)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.GeneratedCodeInfo.Annotation)
    return false;
  #undef DO_
  }
  
  void GeneratedCodeInfo_Annotation::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.GeneratedCodeInfo.Annotation)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated int32 path = 1 [packed = true];
    if (this->path_size() > 0) {
      ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
      output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
          _path_cached_byte_size_));
    }
    for (int i = 0, n = this->path_size(); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
        this->path(i), output);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string source_file = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->source_file().data(), static_cast<int>(this->source_file().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.GeneratedCodeInfo.Annotation.source_file");
      ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
        2, this->source_file(), output);
    }
  
    // optional int32 begin = 3;
    if (cached_has_bits & 0x00000002u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->begin(), output);
    }
  
    // optional int32 end = 4;
    if (cached_has_bits & 0x00000004u) {
      ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->end(), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.GeneratedCodeInfo.Annotation)
  }
  
  ::google::protobuf::uint8* GeneratedCodeInfo_Annotation::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo.Annotation)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated int32 path = 1 [packed = true];
    if (this->path_size() > 0) {
      target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
        1,
        ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
        target);
      target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
          static_cast< ::google::protobuf::uint32>(
              _path_cached_byte_size_), target);
      target = ::google::protobuf::internal::WireFormatLite::
        WriteInt32NoTagToArray(this->path_, target);
    }
  
    cached_has_bits = _has_bits_[0];
    // optional string source_file = 2;
    if (cached_has_bits & 0x00000001u) {
      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
        this->source_file().data(), static_cast<int>(this->source_file().length()),
        ::google::protobuf::internal::WireFormat::SERIALIZE,
        "google.protobuf.GeneratedCodeInfo.Annotation.source_file");
      target =
        ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
          2, this->source_file(), target);
    }
  
    // optional int32 begin = 3;
    if (cached_has_bits & 0x00000002u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->begin(), target);
    }
  
    // optional int32 end = 4;
    if (cached_has_bits & 0x00000004u) {
      target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->end(), target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.GeneratedCodeInfo.Annotation)
    return target;
  }
  
  size_t GeneratedCodeInfo_Annotation::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo.Annotation)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated int32 path = 1 [packed = true];
    {
      size_t data_size = ::google::protobuf::internal::WireFormatLite::
        Int32Size(this->path_);
      if (data_size > 0) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
              static_cast< ::google::protobuf::int32>(data_size));
      }
      int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
      GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
      _path_cached_byte_size_ = cached_size;
      GOOGLE_SAFE_CONCURRENT_WRITES_END();
      total_size += data_size;
    }
  
    if (_has_bits_[0 / 32] & 7u) {
      // optional string source_file = 2;
      if (has_source_file()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::StringSize(
            this->source_file());
      }
  
      // optional int32 begin = 3;
      if (has_begin()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->begin());
      }
  
      // optional int32 end = 4;
      if (has_end()) {
        total_size += 1 +
          ::google::protobuf::internal::WireFormatLite::Int32Size(
            this->end());
      }
  
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void GeneratedCodeInfo_Annotation::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
    GOOGLE_DCHECK_NE(&from, this);
    const GeneratedCodeInfo_Annotation* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const GeneratedCodeInfo_Annotation>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.GeneratedCodeInfo.Annotation)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.GeneratedCodeInfo.Annotation)
      MergeFrom(*source);
    }
  }
  
  void GeneratedCodeInfo_Annotation::MergeFrom(const GeneratedCodeInfo_Annotation& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    path_.MergeFrom(from.path_);
    cached_has_bits = from._has_bits_[0];
    if (cached_has_bits & 7u) {
      if (cached_has_bits & 0x00000001u) {
        set_source_file(from.source_file());
      }
      if (cached_has_bits & 0x00000002u) {
        begin_ = from.begin_;
      }
      if (cached_has_bits & 0x00000004u) {
        end_ = from.end_;
      }
      _has_bits_[0] |= cached_has_bits;
    }
  }
  
  void GeneratedCodeInfo_Annotation::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void GeneratedCodeInfo_Annotation::CopyFrom(const GeneratedCodeInfo_Annotation& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool GeneratedCodeInfo_Annotation::IsInitialized() const {
    return true;
  }
  
  void GeneratedCodeInfo_Annotation::Swap(GeneratedCodeInfo_Annotation* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      GeneratedCodeInfo_Annotation* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void GeneratedCodeInfo_Annotation::UnsafeArenaSwap(GeneratedCodeInfo_Annotation* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void GeneratedCodeInfo_Annotation::InternalSwap(GeneratedCodeInfo_Annotation* other) {
    using std::swap;
    path_.InternalSwap(&other->path_);
    source_file_.Swap(&other->source_file_);
    swap(begin_, other->begin_);
    swap(end_, other->end_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata GeneratedCodeInfo_Annotation::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // GeneratedCodeInfo_Annotation
  
  // repeated int32 path = 1 [packed = true];
  int GeneratedCodeInfo_Annotation::path_size() const {
    return path_.size();
  }
  void GeneratedCodeInfo_Annotation::clear_path() {
    path_.Clear();
  }
  ::google::protobuf::int32 GeneratedCodeInfo_Annotation::path(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.path)
    return path_.Get(index);
  }
  void GeneratedCodeInfo_Annotation::set_path(int index, ::google::protobuf::int32 value) {
    path_.Set(index, value);
    // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.path)
  }
  void GeneratedCodeInfo_Annotation::add_path(::google::protobuf::int32 value) {
    path_.Add(value);
    // @@protoc_insertion_point(field_add:google.protobuf.GeneratedCodeInfo.Annotation.path)
  }
  const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
  GeneratedCodeInfo_Annotation::path() const {
    // @@protoc_insertion_point(field_list:google.protobuf.GeneratedCodeInfo.Annotation.path)
    return path_;
  }
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
  GeneratedCodeInfo_Annotation::mutable_path() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.GeneratedCodeInfo.Annotation.path)
    return &path_;
  }
  
  // optional string source_file = 2;
  bool GeneratedCodeInfo_Annotation::has_source_file() const {
    return (_has_bits_[0] & 0x00000001u) != 0;
  }
  void GeneratedCodeInfo_Annotation::set_has_source_file() {
    _has_bits_[0] |= 0x00000001u;
  }
  void GeneratedCodeInfo_Annotation::clear_has_source_file() {
    _has_bits_[0] &= ~0x00000001u;
  }
  void GeneratedCodeInfo_Annotation::clear_source_file() {
    source_file_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
    clear_has_source_file();
  }
  const ::std::string& GeneratedCodeInfo_Annotation::source_file() const {
    // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
    return source_file_.Get();
  }
  void GeneratedCodeInfo_Annotation::set_source_file(const ::std::string& value) {
    set_has_source_file();
    source_file_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  #if LANG_CXX11
  void GeneratedCodeInfo_Annotation::set_source_file(::std::string&& value) {
    set_has_source_file();
    source_file_.Set(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_rvalue:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  #endif
  void GeneratedCodeInfo_Annotation::set_source_file(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    set_has_source_file();
    source_file_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
                GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_char:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  void GeneratedCodeInfo_Annotation::set_source_file(const char* value,
      size_t size) {
    set_has_source_file();
    source_file_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
        reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_pointer:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  ::std::string* GeneratedCodeInfo_Annotation::mutable_source_file() {
    set_has_source_file();
    // @@protoc_insertion_point(field_mutable:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
    return source_file_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* GeneratedCodeInfo_Annotation::release_source_file() {
    // @@protoc_insertion_point(field_release:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
    clear_has_source_file();
    return source_file_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  }
  ::std::string* GeneratedCodeInfo_Annotation::unsafe_arena_release_source_file() {
    // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    clear_has_source_file();
    return source_file_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  }
  void GeneratedCodeInfo_Annotation::set_allocated_source_file(::std::string* source_file) {
    if (source_file != NULL) {
      set_has_source_file();
    } else {
      clear_has_source_file();
    }
    source_file_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), source_file,
        GetArenaNoVirtual());
    // @@protoc_insertion_point(field_set_allocated:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  void GeneratedCodeInfo_Annotation::unsafe_arena_set_allocated_source_file(
      ::std::string* source_file) {
    GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
    if (source_file != NULL) {
      set_has_source_file();
    } else {
      clear_has_source_file();
    }
    source_file_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        source_file, GetArenaNoVirtual());
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
  }
  
  // optional int32 begin = 3;
  bool GeneratedCodeInfo_Annotation::has_begin() const {
    return (_has_bits_[0] & 0x00000002u) != 0;
  }
  void GeneratedCodeInfo_Annotation::set_has_begin() {
    _has_bits_[0] |= 0x00000002u;
  }
  void GeneratedCodeInfo_Annotation::clear_has_begin() {
    _has_bits_[0] &= ~0x00000002u;
  }
  void GeneratedCodeInfo_Annotation::clear_begin() {
    begin_ = 0;
    clear_has_begin();
  }
  ::google::protobuf::int32 GeneratedCodeInfo_Annotation::begin() const {
    // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.begin)
    return begin_;
  }
  void GeneratedCodeInfo_Annotation::set_begin(::google::protobuf::int32 value) {
    set_has_begin();
    begin_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.begin)
  }
  
  // optional int32 end = 4;
  bool GeneratedCodeInfo_Annotation::has_end() const {
    return (_has_bits_[0] & 0x00000004u) != 0;
  }
  void GeneratedCodeInfo_Annotation::set_has_end() {
    _has_bits_[0] |= 0x00000004u;
  }
  void GeneratedCodeInfo_Annotation::clear_has_end() {
    _has_bits_[0] &= ~0x00000004u;
  }
  void GeneratedCodeInfo_Annotation::clear_end() {
    end_ = 0;
    clear_has_end();
  }
  ::google::protobuf::int32 GeneratedCodeInfo_Annotation::end() const {
    // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.end)
    return end_;
  }
  void GeneratedCodeInfo_Annotation::set_end(::google::protobuf::int32 value) {
    set_has_end();
    end_ = value;
    // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.end)
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // ===================================================================
  
  #if !defined(_MSC_VER) || _MSC_VER >= 1900
  const int GeneratedCodeInfo::kAnnotationFieldNumber;
  #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
  
  GeneratedCodeInfo::GeneratedCodeInfo()
    : ::google::protobuf::Message(), _internal_metadata_(NULL) {
    if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
      protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    }
    SharedCtor();
    // @@protoc_insertion_point(constructor:google.protobuf.GeneratedCodeInfo)
  }
  GeneratedCodeInfo::GeneratedCodeInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(),
    _internal_metadata_(arena),
    annotation_(arena) {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    SharedCtor();
    RegisterArenaDtor(arena);
    // @@protoc_insertion_point(arena_constructor:google.protobuf.GeneratedCodeInfo)
  }
  GeneratedCodeInfo::GeneratedCodeInfo(const GeneratedCodeInfo& from)
    : ::google::protobuf::Message(),
        _internal_metadata_(NULL),
        _has_bits_(from._has_bits_),
        _cached_size_(0),
        annotation_(from.annotation_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:google.protobuf.GeneratedCodeInfo)
  }
  
  void GeneratedCodeInfo::SharedCtor() {
    _cached_size_ = 0;
  }
  
  GeneratedCodeInfo::~GeneratedCodeInfo() {
    // @@protoc_insertion_point(destructor:google.protobuf.GeneratedCodeInfo)
    SharedDtor();
  }
  
  void GeneratedCodeInfo::SharedDtor() {
    ::google::protobuf::Arena* arena = GetArenaNoVirtual();
    GOOGLE_DCHECK(arena == NULL);
    if (arena != NULL) {
      return;
    }
  
  }
  
  void GeneratedCodeInfo::ArenaDtor(void* object) {
    GeneratedCodeInfo* _this = reinterpret_cast< GeneratedCodeInfo* >(object);
    (void)_this;
  }
  void GeneratedCodeInfo::RegisterArenaDtor(::google::protobuf::Arena* arena) {
  }
  void GeneratedCodeInfo::SetCachedSize(int size) const {
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
  }
  const ::google::protobuf::Descriptor* GeneratedCodeInfo::descriptor() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
  }
  
  const GeneratedCodeInfo& GeneratedCodeInfo::default_instance() {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::InitDefaults();
    return *internal_default_instance();
  }
  
  GeneratedCodeInfo* GeneratedCodeInfo::New(::google::protobuf::Arena* arena) const {
    return ::google::protobuf::Arena::CreateMessage<GeneratedCodeInfo>(arena);
  }
  
  void GeneratedCodeInfo::Clear() {
  // @@protoc_insertion_point(message_clear_start:google.protobuf.GeneratedCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    annotation_.Clear();
    _has_bits_.Clear();
    _internal_metadata_.Clear();
  }
  
  bool GeneratedCodeInfo::MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) {
  #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
    ::google::protobuf::uint32 tag;
    // @@protoc_insertion_point(parse_start:google.protobuf.GeneratedCodeInfo)
    for (;;) {
      ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
      tag = p.first;
      if (!p.second) goto handle_unusual;
      switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
        // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
        case 1: {
          if (static_cast< ::google::protobuf::uint8>(tag) ==
              static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
            DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                  input, add_annotation()));
          } else {
            goto handle_unusual;
          }
          break;
        }
  
        default: {
        handle_unusual:
          if (tag == 0) {
            goto success;
          }
          DO_(::google::protobuf::internal::WireFormat::SkipField(
                input, tag, _internal_metadata_.mutable_unknown_fields()));
          break;
        }
      }
    }
  success:
    // @@protoc_insertion_point(parse_success:google.protobuf.GeneratedCodeInfo)
    return true;
  failure:
    // @@protoc_insertion_point(parse_failure:google.protobuf.GeneratedCodeInfo)
    return false;
  #undef DO_
  }
  
  void GeneratedCodeInfo::SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const {
    // @@protoc_insertion_point(serialize_start:google.protobuf.GeneratedCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->annotation_size()); i < n; i++) {
      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
        1, this->annotation(static_cast<int>(i)), output);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
          _internal_metadata_.unknown_fields(), output);
    }
    // @@protoc_insertion_point(serialize_end:google.protobuf.GeneratedCodeInfo)
  }
  
  ::google::protobuf::uint8* GeneratedCodeInfo::InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* target) const {
    (void)deterministic; // Unused
    // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo)
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->annotation_size()); i < n; i++) {
      target = ::google::protobuf::internal::WireFormatLite::
        InternalWriteMessageNoVirtualToArray(
          1, this->annotation(static_cast<int>(i)), deterministic, target);
    }
  
    if (_internal_metadata_.have_unknown_fields()) {
      target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target);
    }
    // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.GeneratedCodeInfo)
    return target;
  }
  
  size_t GeneratedCodeInfo::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo)
    size_t total_size = 0;
  
    if (_internal_metadata_.have_unknown_fields()) {
      total_size +=
        ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
          _internal_metadata_.unknown_fields());
    }
    // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
    {
      unsigned int count = static_cast<unsigned int>(this->annotation_size());
      total_size += 1UL * count;
      for (unsigned int i = 0; i < count; i++) {
        total_size +=
          ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
            this->annotation(static_cast<int>(i)));
      }
    }
  
    int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _cached_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    return total_size;
  }
  
  void GeneratedCodeInfo::MergeFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.GeneratedCodeInfo)
    GOOGLE_DCHECK_NE(&from, this);
    const GeneratedCodeInfo* source =
        ::google::protobuf::internal::DynamicCastToGenerated<const GeneratedCodeInfo>(
            &from);
    if (source == NULL) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.GeneratedCodeInfo)
      ::google::protobuf::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.GeneratedCodeInfo)
      MergeFrom(*source);
    }
  }
  
  void GeneratedCodeInfo::MergeFrom(const GeneratedCodeInfo& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::google::protobuf::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    annotation_.MergeFrom(from.annotation_);
  }
  
  void GeneratedCodeInfo::CopyFrom(const ::google::protobuf::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.GeneratedCodeInfo)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void GeneratedCodeInfo::CopyFrom(const GeneratedCodeInfo& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.GeneratedCodeInfo)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool GeneratedCodeInfo::IsInitialized() const {
    return true;
  }
  
  void GeneratedCodeInfo::Swap(GeneratedCodeInfo* other) {
    if (other == this) return;
    if (GetArenaNoVirtual() == other->GetArenaNoVirtual()) {
      InternalSwap(other);
    } else {
      GeneratedCodeInfo* temp = New(GetArenaNoVirtual());
      temp->MergeFrom(*other);
      other->CopyFrom(*this);
      InternalSwap(temp);
      if (GetArenaNoVirtual() == NULL) {
        delete temp;
      }
    }
  }
  void GeneratedCodeInfo::UnsafeArenaSwap(GeneratedCodeInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArenaNoVirtual() == other->GetArenaNoVirtual());
    InternalSwap(other);
  }
  void GeneratedCodeInfo::InternalSwap(GeneratedCodeInfo* other) {
    using std::swap;
    annotation_.InternalSwap(&other->annotation_);
    swap(_has_bits_[0], other->_has_bits_[0]);
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(_cached_size_, other->_cached_size_);
  }
  
  ::google::protobuf::Metadata GeneratedCodeInfo::GetMetadata() const {
    protobuf_google_2fprotobuf_2fdescriptor_2eproto::protobuf_AssignDescriptorsOnce();
    return protobuf_google_2fprotobuf_2fdescriptor_2eproto::file_level_metadata[kIndexInFileMessages];
  }
  
  #if PROTOBUF_INLINE_NOT_IN_HEADERS
  // GeneratedCodeInfo
  
  // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
  int GeneratedCodeInfo::annotation_size() const {
    return annotation_.size();
  }
  void GeneratedCodeInfo::clear_annotation() {
    annotation_.Clear();
  }
  const ::google::protobuf::GeneratedCodeInfo_Annotation& GeneratedCodeInfo::annotation(int index) const {
    // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.annotation)
    return annotation_.Get(index);
  }
  ::google::protobuf::GeneratedCodeInfo_Annotation* GeneratedCodeInfo::mutable_annotation(int index) {
    // @@protoc_insertion_point(field_mutable:google.protobuf.GeneratedCodeInfo.annotation)
    return annotation_.Mutable(index);
  }
  ::google::protobuf::GeneratedCodeInfo_Annotation* GeneratedCodeInfo::add_annotation() {
    // @@protoc_insertion_point(field_add:google.protobuf.GeneratedCodeInfo.annotation)
    return annotation_.Add();
  }
  ::google::protobuf::RepeatedPtrField< ::google::protobuf::GeneratedCodeInfo_Annotation >*
  GeneratedCodeInfo::mutable_annotation() {
    // @@protoc_insertion_point(field_mutable_list:google.protobuf.GeneratedCodeInfo.annotation)
    return &annotation_;
  }
  const ::google::protobuf::RepeatedPtrField< ::google::protobuf::GeneratedCodeInfo_Annotation >&
  GeneratedCodeInfo::annotation() const {
    // @@protoc_insertion_point(field_list:google.protobuf.GeneratedCodeInfo.annotation)
    return annotation_;
  }
  
  #endif  // PROTOBUF_INLINE_NOT_IN_HEADERS
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace protobuf
  }  // namespace google
  
  // @@protoc_insertion_point(global_scope)
  