%% -*- coding: utf-8 -*-
%% @private
%% Automatically generated, do not edit
%% Generated by gpb_compile version 4.11.0
-module(gogo_pb).

-export([encode_msg/2, encode_msg/3]).
-export([decode_msg/2, decode_msg/3]).
-export([merge_msgs/3, merge_msgs/4]).
-export([verify_msg/2, verify_msg/3]).
-export([get_msg_defs/0]).
-export([get_msg_names/0]).
-export([get_group_names/0]).
-export([get_msg_or_group_names/0]).
-export([get_enum_names/0]).
-export([find_msg_def/1, fetch_msg_def/1]).
-export([find_enum_def/1, fetch_enum_def/1]).
-export([enum_symbol_by_value/2, enum_value_by_symbol/2]).
-export(['enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'/1, 'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'/1, 'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'/1]).
-export(['enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'/1, 'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldOptions.CType'/1, 'enum_value_by_symbol_google.protobuf.FieldOptions.CType'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldOptions.JSType'/1, 'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'/1]).
-export([get_service_names/0]).
-export([get_service_def/1]).
-export([get_rpc_names/1]).
-export([find_rpc_def/2, fetch_rpc_def/2]).
-export([fqbin_to_service_name/1]).
-export([service_name_to_fqbin/1]).
-export([fqbins_to_service_and_rpc_name/2]).
-export([service_and_rpc_name_to_fqbins/2]).
-export([fqbin_to_msg_name/1]).
-export([msg_name_to_fqbin/1]).
-export([fqbin_to_enum_name/1]).
-export([enum_name_to_fqbin/1]).
-export([get_package_name/0]).
-export([uses_packages/0]).
-export([source_basename/0]).
-export([get_all_source_basenames/0]).
-export([get_all_proto_names/0]).
-export([get_msg_containment/1]).
-export([get_pkg_containment/1]).
-export([get_service_containment/1]).
-export([get_rpc_containment/1]).
-export([get_enum_containment/1]).
-export([get_proto_by_msg_name_as_fqbin/1]).
-export([get_proto_by_service_name_as_fqbin/1]).
-export([get_proto_by_enum_name_as_fqbin/1]).
-export([get_protos_by_pkg_name_as_fqbin/1]).
-export([gpb_version_as_string/0, gpb_version_as_list/0]).


%% enumerated types
-type 'google.protobuf.FieldDescriptorProto.Type'() :: 'TYPE_DOUBLE' | 'TYPE_FLOAT' | 'TYPE_INT64' | 'TYPE_UINT64' | 'TYPE_INT32' | 'TYPE_FIXED64' | 'TYPE_FIXED32' | 'TYPE_BOOL' | 'TYPE_STRING' | 'TYPE_GROUP' | 'TYPE_MESSAGE' | 'TYPE_BYTES' | 'TYPE_UINT32' | 'TYPE_ENUM' | 'TYPE_SFIXED32' | 'TYPE_SFIXED64' | 'TYPE_SINT32' | 'TYPE_SINT64'.
-type 'google.protobuf.FieldDescriptorProto.Label'() :: 'LABEL_OPTIONAL' | 'LABEL_REQUIRED' | 'LABEL_REPEATED'.
-type 'google.protobuf.FileOptions.OptimizeMode'() :: 'SPEED' | 'CODE_SIZE' | 'LITE_RUNTIME'.
-type 'google.protobuf.FieldOptions.CType'() :: 'STRING' | 'CORD' | 'STRING_PIECE'.
-type 'google.protobuf.FieldOptions.JSType'() :: 'JS_NORMAL' | 'JS_STRING' | 'JS_NUMBER'.
-export_type(['google.protobuf.FieldDescriptorProto.Type'/0, 'google.protobuf.FieldDescriptorProto.Label'/0, 'google.protobuf.FileOptions.OptimizeMode'/0, 'google.protobuf.FieldOptions.CType'/0, 'google.protobuf.FieldOptions.JSType'/0]).

%% message types
-type 'google.protobuf.FileDescriptorSet'() ::
      #{file                    => ['google.protobuf.FileDescriptorProto'()] % = 1
       }.

-type 'google.protobuf.FileDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        package                 => iodata(),        % = 2
        dependency              => [iodata()],      % = 3
        public_dependency       => [integer()],     % = 10, 32 bits
        weak_dependency         => [integer()],     % = 11, 32 bits
        message_type            => ['google.protobuf.DescriptorProto'()], % = 4
        enum_type               => ['google.protobuf.EnumDescriptorProto'()], % = 5
        service                 => ['google.protobuf.ServiceDescriptorProto'()], % = 6
        extension               => ['google.protobuf.FieldDescriptorProto'()], % = 7
        options                 => 'google.protobuf.FileOptions'(), % = 8
        source_code_info        => 'google.protobuf.SourceCodeInfo'(), % = 9
        syntax                  => iodata()         % = 12
       }.

-type 'google.protobuf.DescriptorProto.ExtensionRange'() ::
      #{start                   => integer(),       % = 1, 32 bits
        'end'                   => integer()        % = 2, 32 bits
       }.

-type 'google.protobuf.DescriptorProto.ReservedRange'() ::
      #{start                   => integer(),       % = 1, 32 bits
        'end'                   => integer()        % = 2, 32 bits
       }.

-type 'google.protobuf.DescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        field                   => ['google.protobuf.FieldDescriptorProto'()], % = 2
        extension               => ['google.protobuf.FieldDescriptorProto'()], % = 6
        nested_type             => ['google.protobuf.DescriptorProto'()], % = 3
        enum_type               => ['google.protobuf.EnumDescriptorProto'()], % = 4
        extension_range         => ['google.protobuf.DescriptorProto.ExtensionRange'()], % = 5
        oneof_decl              => ['google.protobuf.OneofDescriptorProto'()], % = 8
        options                 => 'google.protobuf.MessageOptions'(), % = 7
        reserved_range          => ['google.protobuf.DescriptorProto.ReservedRange'()], % = 9
        reserved_name           => [iodata()]       % = 10
       }.

-type 'google.protobuf.FieldDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        number                  => integer(),       % = 3, 32 bits
        label                   => 'LABEL_OPTIONAL' | 'LABEL_REQUIRED' | 'LABEL_REPEATED' | integer(), % = 4, enum google.protobuf.FieldDescriptorProto.Label
        type                    => 'TYPE_DOUBLE' | 'TYPE_FLOAT' | 'TYPE_INT64' | 'TYPE_UINT64' | 'TYPE_INT32' | 'TYPE_FIXED64' | 'TYPE_FIXED32' | 'TYPE_BOOL' | 'TYPE_STRING' | 'TYPE_GROUP' | 'TYPE_MESSAGE' | 'TYPE_BYTES' | 'TYPE_UINT32' | 'TYPE_ENUM' | 'TYPE_SFIXED32' | 'TYPE_SFIXED64' | 'TYPE_SINT32' | 'TYPE_SINT64' | integer(), % = 5, enum google.protobuf.FieldDescriptorProto.Type
        type_name               => iodata(),        % = 6
        extendee                => iodata(),        % = 2
        default_value           => iodata(),        % = 7
        oneof_index             => integer(),       % = 9, 32 bits
        json_name               => iodata(),        % = 10
        options                 => 'google.protobuf.FieldOptions'() % = 8
       }.

-type 'google.protobuf.OneofDescriptorProto'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'google.protobuf.EnumDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        value                   => ['google.protobuf.EnumValueDescriptorProto'()], % = 2
        options                 => 'google.protobuf.EnumOptions'() % = 3
       }.

-type 'google.protobuf.EnumValueDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        number                  => integer(),       % = 2, 32 bits
        options                 => 'google.protobuf.EnumValueOptions'() % = 3
       }.

-type 'google.protobuf.ServiceDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        method                  => ['google.protobuf.MethodDescriptorProto'()], % = 2
        options                 => 'google.protobuf.ServiceOptions'() % = 3
       }.

-type 'google.protobuf.MethodDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        input_type              => iodata(),        % = 2
        output_type             => iodata(),        % = 3
        options                 => 'google.protobuf.MethodOptions'(), % = 4
        client_streaming        => boolean() | 0 | 1, % = 5
        server_streaming        => boolean() | 0 | 1 % = 6
       }.

-type 'google.protobuf.FileOptions'() ::
      #{java_package            => iodata(),        % = 1
        java_outer_classname    => iodata(),        % = 8
        java_multiple_files     => boolean() | 0 | 1, % = 10
        java_generate_equals_and_hash => boolean() | 0 | 1, % = 20
        java_string_check_utf8  => boolean() | 0 | 1, % = 27
        optimize_for            => 'SPEED' | 'CODE_SIZE' | 'LITE_RUNTIME' | integer(), % = 9, enum google.protobuf.FileOptions.OptimizeMode
        go_package              => iodata(),        % = 11
        cc_generic_services     => boolean() | 0 | 1, % = 16
        java_generic_services   => boolean() | 0 | 1, % = 17
        py_generic_services     => boolean() | 0 | 1, % = 18
        deprecated              => boolean() | 0 | 1, % = 23
        cc_enable_arenas        => boolean() | 0 | 1, % = 31
        objc_class_prefix       => iodata(),        % = 36
        csharp_namespace        => iodata(),        % = 37
        javanano_use_deprecated_package => boolean() | 0 | 1, % = 38
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_getters_all     => boolean() | 0 | 1, % = 63001
        goproto_enum_prefix_all => boolean() | 0 | 1, % = 63002
        goproto_stringer_all    => boolean() | 0 | 1, % = 63003
        verbose_equal_all       => boolean() | 0 | 1, % = 63004
        face_all                => boolean() | 0 | 1, % = 63005
        gostring_all            => boolean() | 0 | 1, % = 63006
        populate_all            => boolean() | 0 | 1, % = 63007
        stringer_all            => boolean() | 0 | 1, % = 63008
        onlyone_all             => boolean() | 0 | 1, % = 63009
        equal_all               => boolean() | 0 | 1, % = 63013
        description_all         => boolean() | 0 | 1, % = 63014
        testgen_all             => boolean() | 0 | 1, % = 63015
        benchgen_all            => boolean() | 0 | 1, % = 63016
        marshaler_all           => boolean() | 0 | 1, % = 63017
        unmarshaler_all         => boolean() | 0 | 1, % = 63018
        stable_marshaler_all    => boolean() | 0 | 1, % = 63019
        sizer_all               => boolean() | 0 | 1, % = 63020
        goproto_enum_stringer_all => boolean() | 0 | 1, % = 63021
        enum_stringer_all       => boolean() | 0 | 1, % = 63022
        unsafe_marshaler_all    => boolean() | 0 | 1, % = 63023
        unsafe_unmarshaler_all  => boolean() | 0 | 1, % = 63024
        goproto_extensions_map_all => boolean() | 0 | 1, % = 63025
        goproto_unrecognized_all => boolean() | 0 | 1, % = 63026
        gogoproto_import        => boolean() | 0 | 1, % = 63027
        protosizer_all          => boolean() | 0 | 1, % = 63028
        compare_all             => boolean() | 0 | 1 % = 63029
       }.

-type 'google.protobuf.MessageOptions'() ::
      #{message_set_wire_format => boolean() | 0 | 1, % = 1
        no_standard_descriptor_accessor => boolean() | 0 | 1, % = 2
        deprecated              => boolean() | 0 | 1, % = 3
        map_entry               => boolean() | 0 | 1, % = 7
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_getters         => boolean() | 0 | 1, % = 64001
        goproto_stringer        => boolean() | 0 | 1, % = 64003
        verbose_equal           => boolean() | 0 | 1, % = 64004
        face                    => boolean() | 0 | 1, % = 64005
        gostring                => boolean() | 0 | 1, % = 64006
        populate                => boolean() | 0 | 1, % = 64007
        stringer                => boolean() | 0 | 1, % = 67008
        onlyone                 => boolean() | 0 | 1, % = 64009
        equal                   => boolean() | 0 | 1, % = 64013
        description             => boolean() | 0 | 1, % = 64014
        testgen                 => boolean() | 0 | 1, % = 64015
        benchgen                => boolean() | 0 | 1, % = 64016
        marshaler               => boolean() | 0 | 1, % = 64017
        unmarshaler             => boolean() | 0 | 1, % = 64018
        stable_marshaler        => boolean() | 0 | 1, % = 64019
        sizer                   => boolean() | 0 | 1, % = 64020
        unsafe_marshaler        => boolean() | 0 | 1, % = 64023
        unsafe_unmarshaler      => boolean() | 0 | 1, % = 64024
        goproto_extensions_map  => boolean() | 0 | 1, % = 64025
        goproto_unrecognized    => boolean() | 0 | 1, % = 64026
        protosizer              => boolean() | 0 | 1, % = 64028
        compare                 => boolean() | 0 | 1 % = 64029
       }.

-type 'google.protobuf.FieldOptions'() ::
      #{ctype                   => 'STRING' | 'CORD' | 'STRING_PIECE' | integer(), % = 1, enum google.protobuf.FieldOptions.CType
        packed                  => boolean() | 0 | 1, % = 2
        jstype                  => 'JS_NORMAL' | 'JS_STRING' | 'JS_NUMBER' | integer(), % = 6, enum google.protobuf.FieldOptions.JSType
        lazy                    => boolean() | 0 | 1, % = 5
        deprecated              => boolean() | 0 | 1, % = 3
        weak                    => boolean() | 0 | 1, % = 10
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        nullable                => boolean() | 0 | 1, % = 65001
        embed                   => boolean() | 0 | 1, % = 65002
        customtype              => iodata(),        % = 65003
        customname              => iodata(),        % = 65004
        jsontag                 => iodata(),        % = 65005
        moretags                => iodata(),        % = 65006
        casttype                => iodata(),        % = 65007
        castkey                 => iodata(),        % = 65008
        castvalue               => iodata(),        % = 65009
        stdtime                 => boolean() | 0 | 1, % = 65010
        stdduration             => boolean() | 0 | 1 % = 65011
       }.

-type 'google.protobuf.EnumOptions'() ::
      #{allow_alias             => boolean() | 0 | 1, % = 2
        deprecated              => boolean() | 0 | 1, % = 3
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_enum_prefix     => boolean() | 0 | 1, % = 62001
        goproto_enum_stringer   => boolean() | 0 | 1, % = 62021
        enum_stringer           => boolean() | 0 | 1, % = 62022
        enum_customname         => iodata()         % = 62023
       }.

-type 'google.protobuf.EnumValueOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 1
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        enumvalue_customname    => iodata()         % = 66001
       }.

-type 'google.protobuf.ServiceOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 33
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()] % = 999
       }.

-type 'google.protobuf.MethodOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 33
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()] % = 999
       }.

-type 'google.protobuf.UninterpretedOption.NamePart'() ::
      #{name_part               := iodata(),        % = 1
        is_extension            := boolean() | 0 | 1 % = 2
       }.

-type 'google.protobuf.UninterpretedOption'() ::
      #{name                    => ['google.protobuf.UninterpretedOption.NamePart'()], % = 2
        identifier_value        => iodata(),        % = 3
        positive_int_value      => non_neg_integer(), % = 4, 32 bits
        negative_int_value      => integer(),       % = 5, 32 bits
        double_value            => float() | integer() | infinity | '-infinity' | nan, % = 6
        string_value            => iodata(),        % = 7
        aggregate_value         => iodata()         % = 8
       }.

-type 'google.protobuf.SourceCodeInfo.Location'() ::
      #{path                    => [integer()],     % = 1, 32 bits
        span                    => [integer()],     % = 2, 32 bits
        leading_comments        => iodata(),        % = 3
        trailing_comments       => iodata(),        % = 4
        leading_detached_comments => [iodata()]     % = 6
       }.

-type 'google.protobuf.SourceCodeInfo'() ::
      #{location                => ['google.protobuf.SourceCodeInfo.Location'()] % = 1
       }.

-type 'google.protobuf.GeneratedCodeInfo.Annotation'() ::
      #{path                    => [integer()],     % = 1, 32 bits
        source_file             => iodata(),        % = 2
        'begin'                 => integer(),       % = 3, 32 bits
        'end'                   => integer()        % = 4, 32 bits
       }.

-type 'google.protobuf.GeneratedCodeInfo'() ::
      #{annotation              => ['google.protobuf.GeneratedCodeInfo.Annotation'()] % = 1
       }.

-export_type(['google.protobuf.FileDescriptorSet'/0, 'google.protobuf.FileDescriptorProto'/0, 'google.protobuf.DescriptorProto.ExtensionRange'/0, 'google.protobuf.DescriptorProto.ReservedRange'/0, 'google.protobuf.DescriptorProto'/0, 'google.protobuf.FieldDescriptorProto'/0, 'google.protobuf.OneofDescriptorProto'/0, 'google.protobuf.EnumDescriptorProto'/0, 'google.protobuf.EnumValueDescriptorProto'/0, 'google.protobuf.ServiceDescriptorProto'/0, 'google.protobuf.MethodDescriptorProto'/0, 'google.protobuf.FileOptions'/0, 'google.protobuf.MessageOptions'/0, 'google.protobuf.FieldOptions'/0, 'google.protobuf.EnumOptions'/0, 'google.protobuf.EnumValueOptions'/0, 'google.protobuf.ServiceOptions'/0, 'google.protobuf.MethodOptions'/0, 'google.protobuf.UninterpretedOption.NamePart'/0, 'google.protobuf.UninterpretedOption'/0, 'google.protobuf.SourceCodeInfo.Location'/0, 'google.protobuf.SourceCodeInfo'/0, 'google.protobuf.GeneratedCodeInfo.Annotation'/0, 'google.protobuf.GeneratedCodeInfo'/0]).

-spec encode_msg('google.protobuf.FileDescriptorSet'() | 'google.protobuf.FileDescriptorProto'() | 'google.protobuf.DescriptorProto.ExtensionRange'() | 'google.protobuf.DescriptorProto.ReservedRange'() | 'google.protobuf.DescriptorProto'() | 'google.protobuf.FieldDescriptorProto'() | 'google.protobuf.OneofDescriptorProto'() | 'google.protobuf.EnumDescriptorProto'() | 'google.protobuf.EnumValueDescriptorProto'() | 'google.protobuf.ServiceDescriptorProto'() | 'google.protobuf.MethodDescriptorProto'() | 'google.protobuf.FileOptions'() | 'google.protobuf.MessageOptions'() | 'google.protobuf.FieldOptions'() | 'google.protobuf.EnumOptions'() | 'google.protobuf.EnumValueOptions'() | 'google.protobuf.ServiceOptions'() | 'google.protobuf.MethodOptions'() | 'google.protobuf.UninterpretedOption.NamePart'() | 'google.protobuf.UninterpretedOption'() | 'google.protobuf.SourceCodeInfo.Location'() | 'google.protobuf.SourceCodeInfo'() | 'google.protobuf.GeneratedCodeInfo.Annotation'() | 'google.protobuf.GeneratedCodeInfo'(), atom()) -> binary().
encode_msg(Msg, MsgName) when is_atom(MsgName) ->
    encode_msg(Msg, MsgName, []).

-spec encode_msg('google.protobuf.FileDescriptorSet'() | 'google.protobuf.FileDescriptorProto'() | 'google.protobuf.DescriptorProto.ExtensionRange'() | 'google.protobuf.DescriptorProto.ReservedRange'() | 'google.protobuf.DescriptorProto'() | 'google.protobuf.FieldDescriptorProto'() | 'google.protobuf.OneofDescriptorProto'() | 'google.protobuf.EnumDescriptorProto'() | 'google.protobuf.EnumValueDescriptorProto'() | 'google.protobuf.ServiceDescriptorProto'() | 'google.protobuf.MethodDescriptorProto'() | 'google.protobuf.FileOptions'() | 'google.protobuf.MessageOptions'() | 'google.protobuf.FieldOptions'() | 'google.protobuf.EnumOptions'() | 'google.protobuf.EnumValueOptions'() | 'google.protobuf.ServiceOptions'() | 'google.protobuf.MethodOptions'() | 'google.protobuf.UninterpretedOption.NamePart'() | 'google.protobuf.UninterpretedOption'() | 'google.protobuf.SourceCodeInfo.Location'() | 'google.protobuf.SourceCodeInfo'() | 'google.protobuf.GeneratedCodeInfo.Annotation'() | 'google.protobuf.GeneratedCodeInfo'(), atom(), list()) -> binary().
encode_msg(Msg, MsgName, Opts) ->
    case proplists:get_bool(verify, Opts) of
      true -> verify_msg(Msg, MsgName, Opts);
      false -> ok
    end,
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'google.protobuf.FileDescriptorSet' ->
	  'encode_msg_google.protobuf.FileDescriptorSet'(id(Msg,
							    TrUserData),
							 TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'encode_msg_google.protobuf.FileDescriptorProto'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(id(Msg,
									 TrUserData),
								      TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(id(Msg,
									TrUserData),
								     TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'encode_msg_google.protobuf.DescriptorProto'(id(Msg,
							  TrUserData),
						       TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'encode_msg_google.protobuf.FieldDescriptorProto'(id(Msg,
							       TrUserData),
							    TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'encode_msg_google.protobuf.OneofDescriptorProto'(id(Msg,
							       TrUserData),
							    TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'encode_msg_google.protobuf.EnumDescriptorProto'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'encode_msg_google.protobuf.EnumValueDescriptorProto'(id(Msg,
								   TrUserData),
								TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'encode_msg_google.protobuf.ServiceDescriptorProto'(id(Msg,
								 TrUserData),
							      TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'encode_msg_google.protobuf.MethodDescriptorProto'(id(Msg,
								TrUserData),
							     TrUserData);
      'google.protobuf.FileOptions' ->
	  'encode_msg_google.protobuf.FileOptions'(id(Msg,
						      TrUserData),
						   TrUserData);
      'google.protobuf.MessageOptions' ->
	  'encode_msg_google.protobuf.MessageOptions'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.FieldOptions' ->
	  'encode_msg_google.protobuf.FieldOptions'(id(Msg,
						       TrUserData),
						    TrUserData);
      'google.protobuf.EnumOptions' ->
	  'encode_msg_google.protobuf.EnumOptions'(id(Msg,
						      TrUserData),
						   TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'encode_msg_google.protobuf.EnumValueOptions'(id(Msg,
							   TrUserData),
							TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'encode_msg_google.protobuf.ServiceOptions'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.MethodOptions' ->
	  'encode_msg_google.protobuf.MethodOptions'(id(Msg,
							TrUserData),
						     TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'encode_msg_google.protobuf.UninterpretedOption.NamePart'(id(Msg,
								       TrUserData),
								    TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'encode_msg_google.protobuf.UninterpretedOption'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'encode_msg_google.protobuf.SourceCodeInfo.Location'(id(Msg,
								  TrUserData),
							       TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'encode_msg_google.protobuf.SourceCodeInfo'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(id(Msg,
								       TrUserData),
								    TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'encode_msg_google.protobuf.GeneratedCodeInfo'(id(Msg,
							    TrUserData),
							 TrUserData)
    end.


'encode_msg_google.protobuf.FileDescriptorSet'(Msg,
					       TrUserData) ->
    'encode_msg_google.protobuf.FileDescriptorSet'(Msg,
						   <<>>, TrUserData).


'encode_msg_google.protobuf.FileDescriptorSet'(#{} = M,
					       Bin, TrUserData) ->
    case M of
      #{file := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.FileDescriptorSet_file'(TrF1,
								  Bin,
								  TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.FileDescriptorProto'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{package := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{dependency := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_dependency'(TrF3,
									       B2,
									       TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{public_dependency := F4} ->
	       TrF4 = id(F4, TrUserData),
	       if TrF4 == [] -> B3;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_public_dependency'(TrF4,
										      B3,
										      TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{weak_dependency := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_weak_dependency'(TrF5,
										    B4,
										    TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{message_type := F6} ->
	       TrF6 = id(F6, TrUserData),
	       if TrF6 == [] -> B5;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_message_type'(TrF6,
										 B5,
										 TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{enum_type := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_enum_type'(TrF7,
									      B6,
									      TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{service := F8} ->
	       TrF8 = id(F8, TrUserData),
	       if TrF8 == [] -> B7;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_service'(TrF8,
									    B7,
									    TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{extension := F9} ->
	       TrF9 = id(F9, TrUserData),
	       if TrF9 == [] -> B8;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_extension'(TrF9,
									      B8,
									      TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{options := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  'e_mfield_google.protobuf.FileDescriptorProto_options'(TrF10,
									 <<B9/binary,
									   66>>,
									 TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{source_code_info := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  'e_mfield_google.protobuf.FileDescriptorProto_source_code_info'(TrF11,
										  <<B10/binary,
										    74>>,
										  TrUserData)
		end;
	    _ -> B10
	  end,
    case M of
      #{syntax := F12} ->
	  begin
	    TrF12 = id(F12, TrUserData),
	    e_type_string(TrF12, <<B11/binary, 98>>, TrUserData)
	  end;
      _ -> B11
    end.

'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
							    TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								<<>>,
								TrUserData).


'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(#{} =
								M,
							    Bin, TrUserData) ->
    B1 = case M of
	   #{start := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_int32(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{'end' := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
							   TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
							       <<>>,
							       TrUserData).


'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(#{} =
							       M,
							   Bin, TrUserData) ->
    B1 = case M of
	   #{start := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_int32(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{'end' := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.DescriptorProto'(Msg,
					     TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						 TrUserData).


'encode_msg_google.protobuf.DescriptorProto'(#{} = M,
					     Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{field := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_field'(TrF2,
								      B1,
								      TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{extension := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_extension'(TrF3,
									  B2,
									  TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{nested_type := F4} ->
	       TrF4 = id(F4, TrUserData),
	       if TrF4 == [] -> B3;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_nested_type'(TrF4,
									    B3,
									    TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{enum_type := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_enum_type'(TrF5,
									  B4,
									  TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{extension_range := F6} ->
	       TrF6 = id(F6, TrUserData),
	       if TrF6 == [] -> B5;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_extension_range'(TrF6,
										B5,
										TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{oneof_decl := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_oneof_decl'(TrF7,
									   B6,
									   TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{options := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 'e_mfield_google.protobuf.DescriptorProto_options'(TrF8,
								    <<B7/binary,
								      58>>,
								    TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{reserved_range := F9} ->
	       TrF9 = id(F9, TrUserData),
	       if TrF9 == [] -> B8;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_reserved_range'(TrF9,
									       B8,
									       TrUserData)
	       end;
	   _ -> B8
	 end,
    case M of
      #{reserved_name := F10} ->
	  TrF10 = id(F10, TrUserData),
	  if TrF10 == [] -> B9;
	     true ->
		 'e_field_google.protobuf.DescriptorProto_reserved_name'(TrF10,
									 B9,
									 TrUserData)
	  end;
      _ -> B9
    end.

'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
						  TrUserData) ->
    'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
						      <<>>, TrUserData).


'encode_msg_google.protobuf.FieldDescriptorProto'(#{} =
						      M,
						  Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{number := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_int32(TrF2, <<B1/binary, 24>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{label := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 'e_enum_google.protobuf.FieldDescriptorProto.Label'(TrF3,
								     <<B2/binary,
								       32>>,
								     TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{type := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 'e_enum_google.protobuf.FieldDescriptorProto.Type'(TrF4,
								    <<B3/binary,
								      40>>,
								    TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{type_name := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_string(TrF5, <<B4/binary, 50>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{extendee := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_string(TrF6, <<B5/binary, 18>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{default_value := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_string(TrF7, <<B6/binary, 58>>, TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{oneof_index := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_int32(TrF8, <<B7/binary, 72>>, TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{json_name := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_string(TrF9, <<B8/binary, 82>>, TrUserData)
	       end;
	   _ -> B8
	 end,
    case M of
      #{options := F10} ->
	  begin
	    TrF10 = id(F10, TrUserData),
	    'e_mfield_google.protobuf.FieldDescriptorProto_options'(TrF10,
								    <<B9/binary,
								      66>>,
								    TrUserData)
	  end;
      _ -> B9
    end.

'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
						  TrUserData) ->
    'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
						      <<>>, TrUserData).


'encode_msg_google.protobuf.OneofDescriptorProto'(#{} =
						      M,
						  Bin, TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.EnumDescriptorProto'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{value := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.EnumDescriptorProto_value'(TrF2,
									  B1,
									  TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.EnumDescriptorProto_options'(TrF3,
								   <<B2/binary,
								     26>>,
								   TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
						      TrUserData) ->
    'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							  <<>>, TrUserData).


'encode_msg_google.protobuf.EnumValueDescriptorProto'(#{} =
							  M,
						      Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{number := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.EnumValueDescriptorProto_options'(TrF3,
									<<B2/binary,
									  26>>,
									TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
						    TrUserData) ->
    'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							<<>>, TrUserData).


'encode_msg_google.protobuf.ServiceDescriptorProto'(#{} =
							M,
						    Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{method := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.ServiceDescriptorProto_method'(TrF2,
									      B1,
									      TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.ServiceDescriptorProto_options'(TrF3,
								      <<B2/binary,
									26>>,
								      TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
						   TrUserData) ->
    'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
						       <<>>, TrUserData).


'encode_msg_google.protobuf.MethodDescriptorProto'(#{} =
						       M,
						   Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{input_type := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{output_type := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_string(TrF3, <<B2/binary, 26>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{options := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 'e_mfield_google.protobuf.MethodDescriptorProto_options'(TrF4,
									  <<B3/binary,
									    34>>,
									  TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{client_streaming := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 40>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    case M of
      #{server_streaming := F6} ->
	  begin
	    TrF6 = id(F6, TrUserData),
	    e_type_bool(TrF6, <<B5/binary, 48>>, TrUserData)
	  end;
      _ -> B5
    end.

'encode_msg_google.protobuf.FileOptions'(Msg,
					 TrUserData) ->
    'encode_msg_google.protobuf.FileOptions'(Msg, <<>>,
					     TrUserData).


'encode_msg_google.protobuf.FileOptions'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{java_package := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{java_outer_classname := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 66>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{java_multiple_files := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_bool(TrF3, <<B2/binary, 80>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{java_generate_equals_and_hash := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 160, 1>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{java_string_check_utf8 := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 216, 1>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{optimize_for := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 'e_enum_google.protobuf.FileOptions.OptimizeMode'(TrF6,
								   <<B5/binary,
								     72>>,
								   TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{go_package := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_string(TrF7, <<B6/binary, 90>>, TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{cc_generic_services := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 128, 1>>, TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{java_generic_services := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 136, 1>>, TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{py_generic_services := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_bool(TrF10, <<B9/binary, 144, 1>>, TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{deprecated := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_bool(TrF11, <<B10/binary, 184, 1>>, TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{cc_enable_arenas := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_bool(TrF12, <<B11/binary, 248, 1>>, TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{objc_class_prefix := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_string(TrF13, <<B12/binary, 162, 2>>, TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{csharp_namespace := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_string(TrF14, <<B13/binary, 170, 2>>, TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{javanano_use_deprecated_package := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_bool(TrF15, <<B14/binary, 176, 2>>, TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{uninterpreted_option := F16} ->
		TrF16 = id(F16, TrUserData),
		if TrF16 == [] -> B15;
		   true ->
		       'e_field_google.protobuf.FileOptions_uninterpreted_option'(TrF16,
										  B15,
										  TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{goproto_getters_all := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 200, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    B18 = case M of
	    #{goproto_enum_prefix_all := F18} ->
		begin
		  TrF18 = id(F18, TrUserData),
		  e_type_bool(TrF18, <<B17/binary, 208, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B17
	  end,
    B19 = case M of
	    #{goproto_stringer_all := F19} ->
		begin
		  TrF19 = id(F19, TrUserData),
		  e_type_bool(TrF19, <<B18/binary, 216, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B18
	  end,
    B20 = case M of
	    #{verbose_equal_all := F20} ->
		begin
		  TrF20 = id(F20, TrUserData),
		  e_type_bool(TrF20, <<B19/binary, 224, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B19
	  end,
    B21 = case M of
	    #{face_all := F21} ->
		begin
		  TrF21 = id(F21, TrUserData),
		  e_type_bool(TrF21, <<B20/binary, 232, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B20
	  end,
    B22 = case M of
	    #{gostring_all := F22} ->
		begin
		  TrF22 = id(F22, TrUserData),
		  e_type_bool(TrF22, <<B21/binary, 240, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B21
	  end,
    B23 = case M of
	    #{populate_all := F23} ->
		begin
		  TrF23 = id(F23, TrUserData),
		  e_type_bool(TrF23, <<B22/binary, 248, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B22
	  end,
    B24 = case M of
	    #{stringer_all := F24} ->
		begin
		  TrF24 = id(F24, TrUserData),
		  e_type_bool(TrF24, <<B23/binary, 128, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B23
	  end,
    B25 = case M of
	    #{onlyone_all := F25} ->
		begin
		  TrF25 = id(F25, TrUserData),
		  e_type_bool(TrF25, <<B24/binary, 136, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B24
	  end,
    B26 = case M of
	    #{equal_all := F26} ->
		begin
		  TrF26 = id(F26, TrUserData),
		  e_type_bool(TrF26, <<B25/binary, 168, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B25
	  end,
    B27 = case M of
	    #{description_all := F27} ->
		begin
		  TrF27 = id(F27, TrUserData),
		  e_type_bool(TrF27, <<B26/binary, 176, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B26
	  end,
    B28 = case M of
	    #{testgen_all := F28} ->
		begin
		  TrF28 = id(F28, TrUserData),
		  e_type_bool(TrF28, <<B27/binary, 184, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B27
	  end,
    B29 = case M of
	    #{benchgen_all := F29} ->
		begin
		  TrF29 = id(F29, TrUserData),
		  e_type_bool(TrF29, <<B28/binary, 192, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B28
	  end,
    B30 = case M of
	    #{marshaler_all := F30} ->
		begin
		  TrF30 = id(F30, TrUserData),
		  e_type_bool(TrF30, <<B29/binary, 200, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B29
	  end,
    B31 = case M of
	    #{unmarshaler_all := F31} ->
		begin
		  TrF31 = id(F31, TrUserData),
		  e_type_bool(TrF31, <<B30/binary, 208, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B30
	  end,
    B32 = case M of
	    #{stable_marshaler_all := F32} ->
		begin
		  TrF32 = id(F32, TrUserData),
		  e_type_bool(TrF32, <<B31/binary, 216, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B31
	  end,
    B33 = case M of
	    #{sizer_all := F33} ->
		begin
		  TrF33 = id(F33, TrUserData),
		  e_type_bool(TrF33, <<B32/binary, 224, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B32
	  end,
    B34 = case M of
	    #{goproto_enum_stringer_all := F34} ->
		begin
		  TrF34 = id(F34, TrUserData),
		  e_type_bool(TrF34, <<B33/binary, 232, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B33
	  end,
    B35 = case M of
	    #{enum_stringer_all := F35} ->
		begin
		  TrF35 = id(F35, TrUserData),
		  e_type_bool(TrF35, <<B34/binary, 240, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B34
	  end,
    B36 = case M of
	    #{unsafe_marshaler_all := F36} ->
		begin
		  TrF36 = id(F36, TrUserData),
		  e_type_bool(TrF36, <<B35/binary, 248, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B35
	  end,
    B37 = case M of
	    #{unsafe_unmarshaler_all := F37} ->
		begin
		  TrF37 = id(F37, TrUserData),
		  e_type_bool(TrF37, <<B36/binary, 128, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B36
	  end,
    B38 = case M of
	    #{goproto_extensions_map_all := F38} ->
		begin
		  TrF38 = id(F38, TrUserData),
		  e_type_bool(TrF38, <<B37/binary, 136, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B37
	  end,
    B39 = case M of
	    #{goproto_unrecognized_all := F39} ->
		begin
		  TrF39 = id(F39, TrUserData),
		  e_type_bool(TrF39, <<B38/binary, 144, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B38
	  end,
    B40 = case M of
	    #{gogoproto_import := F40} ->
		begin
		  TrF40 = id(F40, TrUserData),
		  e_type_bool(TrF40, <<B39/binary, 152, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B39
	  end,
    B41 = case M of
	    #{protosizer_all := F41} ->
		begin
		  TrF41 = id(F41, TrUserData),
		  e_type_bool(TrF41, <<B40/binary, 160, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B40
	  end,
    case M of
      #{compare_all := F42} ->
	  begin
	    TrF42 = id(F42, TrUserData),
	    e_type_bool(TrF42, <<B41/binary, 168, 227, 30>>,
			TrUserData)
	  end;
      _ -> B41
    end.

'encode_msg_google.protobuf.MessageOptions'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.MessageOptions'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.MessageOptions'(#{} = M,
					    Bin, TrUserData) ->
    B1 = case M of
	   #{message_set_wire_format := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{no_standard_descriptor_accessor := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{deprecated := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_bool(TrF3, <<B2/binary, 24>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{map_entry := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 56>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{uninterpreted_option := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.MessageOptions_uninterpreted_option'(TrF5,
										    B4,
										    TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{goproto_getters := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 136, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{goproto_stringer := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_bool(TrF7, <<B6/binary, 152, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{verbose_equal := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 160, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{face := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 168, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{gostring := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_bool(TrF10, <<B9/binary, 176, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{populate := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_bool(TrF11, <<B10/binary, 184, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{stringer := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_bool(TrF12, <<B11/binary, 128, 220, 32>>,
			      TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{onlyone := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_bool(TrF13, <<B12/binary, 200, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{equal := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_bool(TrF14, <<B13/binary, 232, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{description := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_bool(TrF15, <<B14/binary, 240, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{testgen := F16} ->
		begin
		  TrF16 = id(F16, TrUserData),
		  e_type_bool(TrF16, <<B15/binary, 248, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{benchgen := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 128, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    B18 = case M of
	    #{marshaler := F18} ->
		begin
		  TrF18 = id(F18, TrUserData),
		  e_type_bool(TrF18, <<B17/binary, 136, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B17
	  end,
    B19 = case M of
	    #{unmarshaler := F19} ->
		begin
		  TrF19 = id(F19, TrUserData),
		  e_type_bool(TrF19, <<B18/binary, 144, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B18
	  end,
    B20 = case M of
	    #{stable_marshaler := F20} ->
		begin
		  TrF20 = id(F20, TrUserData),
		  e_type_bool(TrF20, <<B19/binary, 152, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B19
	  end,
    B21 = case M of
	    #{sizer := F21} ->
		begin
		  TrF21 = id(F21, TrUserData),
		  e_type_bool(TrF21, <<B20/binary, 160, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B20
	  end,
    B22 = case M of
	    #{unsafe_marshaler := F22} ->
		begin
		  TrF22 = id(F22, TrUserData),
		  e_type_bool(TrF22, <<B21/binary, 184, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B21
	  end,
    B23 = case M of
	    #{unsafe_unmarshaler := F23} ->
		begin
		  TrF23 = id(F23, TrUserData),
		  e_type_bool(TrF23, <<B22/binary, 192, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B22
	  end,
    B24 = case M of
	    #{goproto_extensions_map := F24} ->
		begin
		  TrF24 = id(F24, TrUserData),
		  e_type_bool(TrF24, <<B23/binary, 200, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B23
	  end,
    B25 = case M of
	    #{goproto_unrecognized := F25} ->
		begin
		  TrF25 = id(F25, TrUserData),
		  e_type_bool(TrF25, <<B24/binary, 208, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B24
	  end,
    B26 = case M of
	    #{protosizer := F26} ->
		begin
		  TrF26 = id(F26, TrUserData),
		  e_type_bool(TrF26, <<B25/binary, 224, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B25
	  end,
    case M of
      #{compare := F27} ->
	  begin
	    TrF27 = id(F27, TrUserData),
	    e_type_bool(TrF27, <<B26/binary, 232, 161, 31>>,
			TrUserData)
	  end;
      _ -> B26
    end.

'encode_msg_google.protobuf.FieldOptions'(Msg,
					  TrUserData) ->
    'encode_msg_google.protobuf.FieldOptions'(Msg, <<>>,
					      TrUserData).


'encode_msg_google.protobuf.FieldOptions'(#{} = M, Bin,
					  TrUserData) ->
    B1 = case M of
	   #{ctype := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 'e_enum_google.protobuf.FieldOptions.CType'(TrF1,
							     <<Bin/binary, 8>>,
							     TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{packed := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{jstype := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 'e_enum_google.protobuf.FieldOptions.JSType'(TrF3,
							      <<B2/binary, 48>>,
							      TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{lazy := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 40>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{deprecated := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 24>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{weak := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 80>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{uninterpreted_option := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.FieldOptions_uninterpreted_option'(TrF7,
										  B6,
										  TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{nullable := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 200, 222, 31>>,
			     TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{embed := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 208, 222, 31>>,
			     TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{customtype := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_string(TrF10, <<B9/binary, 218, 222, 31>>,
				TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{customname := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_string(TrF11, <<B10/binary, 226, 222, 31>>,
				TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{jsontag := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_string(TrF12, <<B11/binary, 234, 222, 31>>,
				TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{moretags := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_string(TrF13, <<B12/binary, 242, 222, 31>>,
				TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{casttype := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_string(TrF14, <<B13/binary, 250, 222, 31>>,
				TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{castkey := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_string(TrF15, <<B14/binary, 130, 223, 31>>,
				TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{castvalue := F16} ->
		begin
		  TrF16 = id(F16, TrUserData),
		  e_type_string(TrF16, <<B15/binary, 138, 223, 31>>,
				TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{stdtime := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 144, 223, 31>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    case M of
      #{stdduration := F18} ->
	  begin
	    TrF18 = id(F18, TrUserData),
	    e_type_bool(TrF18, <<B17/binary, 152, 223, 31>>,
			TrUserData)
	  end;
      _ -> B17
    end.

'encode_msg_google.protobuf.EnumOptions'(Msg,
					 TrUserData) ->
    'encode_msg_google.protobuf.EnumOptions'(Msg, <<>>,
					     TrUserData).


'encode_msg_google.protobuf.EnumOptions'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{allow_alias := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 16>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{deprecated := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 24>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{uninterpreted_option := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.EnumOptions_uninterpreted_option'(TrF3,
										 B2,
										 TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{goproto_enum_prefix := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 136, 163, 30>>,
			     TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{goproto_enum_stringer := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 168, 164, 30>>,
			     TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{enum_stringer := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 176, 164, 30>>,
			     TrUserData)
	       end;
	   _ -> B5
	 end,
    case M of
      #{enum_customname := F7} ->
	  begin
	    TrF7 = id(F7, TrUserData),
	    e_type_string(TrF7, <<B6/binary, 186, 164, 30>>,
			  TrUserData)
	  end;
      _ -> B6
    end.

'encode_msg_google.protobuf.EnumValueOptions'(Msg,
					      TrUserData) ->
    'encode_msg_google.protobuf.EnumValueOptions'(Msg, <<>>,
						  TrUserData).


'encode_msg_google.protobuf.EnumValueOptions'(#{} = M,
					      Bin, TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{uninterpreted_option := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'(TrF2,
										      B1,
										      TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{enumvalue_customname := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    e_type_string(TrF3, <<B2/binary, 138, 157, 32>>,
			  TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.ServiceOptions'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.ServiceOptions'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.ServiceOptions'(#{} = M,
					    Bin, TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 136, 2>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{uninterpreted_option := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_google.protobuf.ServiceOptions_uninterpreted_option'(TrF2,
									       B1,
									       TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.MethodOptions'(Msg,
					   TrUserData) ->
    'encode_msg_google.protobuf.MethodOptions'(Msg, <<>>,
					       TrUserData).


'encode_msg_google.protobuf.MethodOptions'(#{} = M, Bin,
					   TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 136, 2>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{uninterpreted_option := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_google.protobuf.MethodOptions_uninterpreted_option'(TrF2,
									      B1,
									      TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							  TrUserData) ->
    'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							      <<>>, TrUserData).


'encode_msg_google.protobuf.UninterpretedOption.NamePart'(#{name_part
								:= F1,
							    is_extension := F2},
							  Bin, TrUserData) ->
    B1 = begin
	   TrF1 = id(F1, TrUserData),
	   e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	 end,
    begin
      TrF2 = id(F2, TrUserData),
      e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
    end.

'encode_msg_google.protobuf.UninterpretedOption'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.UninterpretedOption'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.UninterpretedOption'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.UninterpretedOption_name'(TrF1,
									 Bin,
									 TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{identifier_value := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 26>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{positive_int_value := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_varint(TrF3, <<B2/binary, 32>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{negative_int_value := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_int64(TrF4, <<B3/binary, 40>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{double_value := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_double(TrF5, <<B4/binary, 49>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{string_value := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bytes(TrF6, <<B5/binary, 58>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    case M of
      #{aggregate_value := F7} ->
	  begin
	    TrF7 = id(F7, TrUserData),
	    e_type_string(TrF7, <<B6/binary, 66>>, TrUserData)
	  end;
      _ -> B6
    end.

'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
						     TrUserData) ->
    'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							 <<>>, TrUserData).


'encode_msg_google.protobuf.SourceCodeInfo.Location'(#{} =
							 M,
						     Bin, TrUserData) ->
    B1 = case M of
	   #{path := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.SourceCodeInfo.Location_path'(TrF1,
									     Bin,
									     TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{span := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.SourceCodeInfo.Location_span'(TrF2,
									     B1,
									     TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{leading_comments := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_string(TrF3, <<B2/binary, 26>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{trailing_comments := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_string(TrF4, <<B3/binary, 34>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    case M of
      #{leading_detached_comments := F5} ->
	  TrF5 = id(F5, TrUserData),
	  if TrF5 == [] -> B4;
	     true ->
		 'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(TrF5,
											     B4,
											     TrUserData)
	  end;
      _ -> B4
    end.

'encode_msg_google.protobuf.SourceCodeInfo'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.SourceCodeInfo'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.SourceCodeInfo'(#{} = M,
					    Bin, TrUserData) ->
    case M of
      #{location := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.SourceCodeInfo_location'(TrF1,
								   Bin,
								   TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							  TrUserData) ->
    'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							      <<>>, TrUserData).


'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(#{} =
							      M,
							  Bin, TrUserData) ->
    B1 = case M of
	   #{path := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(TrF1,
										  Bin,
										  TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{source_file := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{'begin' := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_int32(TrF3, <<B2/binary, 24>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    case M of
      #{'end' := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    e_type_int32(TrF4, <<B3/binary, 32>>, TrUserData)
	  end;
      _ -> B3
    end.

'encode_msg_google.protobuf.GeneratedCodeInfo'(Msg,
					       TrUserData) ->
    'encode_msg_google.protobuf.GeneratedCodeInfo'(Msg,
						   <<>>, TrUserData).


'encode_msg_google.protobuf.GeneratedCodeInfo'(#{} = M,
					       Bin, TrUserData) ->
    case M of
      #{annotation := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.GeneratedCodeInfo_annotation'(TrF1,
									Bin,
									TrUserData)
	  end;
      _ -> Bin
    end.

'e_mfield_google.protobuf.FileDescriptorSet_file'(Msg,
						  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorSet_file'([Elem
						  | Rest],
						 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorSet_file'(id(Elem,
							     TrUserData),
							  Bin2, TrUserData),
    'e_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorSet_file'([],
						 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_dependency'([Elem
							  | Rest],
							 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_dependency'([],
							 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_public_dependency'([Elem
								 | Rest],
								Bin,
								TrUserData) ->
    Bin2 = <<Bin/binary, 80>>,
    Bin3 = e_type_int32(id(Elem, TrUserData), Bin2,
			TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    Bin3,
								    TrUserData);
'e_field_google.protobuf.FileDescriptorProto_public_dependency'([],
								Bin,
								_TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_weak_dependency'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 88>>,
    Bin3 = e_type_int32(id(Elem, TrUserData), Bin2,
			TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.FileDescriptorProto_weak_dependency'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_message_type'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						     TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_message_type'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 34>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_message_type'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.FileDescriptorProto_message_type'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_enum_type'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_enum_type'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 42>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_enum_type'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_enum_type'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_service'(Msg,
						       Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							    <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_service'([Elem
						       | Rest],
						      Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_service'(id(Elem,
								  TrUserData),
							       Bin2,
							       TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_service'([],
						      Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_extension'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_extension'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 58>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_extension'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_extension'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_options'(Msg,
						       Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.FileOptions'(Msg,
						      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.FileDescriptorProto_source_code_info'(Msg,
								Bin,
								TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.SourceCodeInfo'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.DescriptorProto_field'(Msg,
						 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_field'([Elem
						 | Rest],
						Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_field'(id(Elem,
							    TrUserData),
							 Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_field'(Rest,
						    Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_field'([], Bin,
						_TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_extension'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_extension'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_extension'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_extension'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_extension'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_nested_type'(Msg,
						       Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						     TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_nested_type'([Elem
						       | Rest],
						      Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_nested_type'(id(Elem,
								  TrUserData),
							       Bin2,
							       TrUserData),
    'e_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_nested_type'([],
						      Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_enum_type'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_enum_type'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 34>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_enum_type'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_enum_type'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_extension_range'(Msg,
							   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								    <<>>,
								    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_extension_range'([Elem
							   | Rest],
							  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 42>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_extension_range'(id(Elem,
								      TrUserData),
								   Bin2,
								   TrUserData),
    'e_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_extension_range'([],
							  Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_oneof_decl'(Msg,
						      Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_oneof_decl'([Elem
						      | Rest],
						     Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 66>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_oneof_decl'(id(Elem,
								 TrUserData),
							      Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_oneof_decl'([],
						     Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_options'(Msg,
						   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.MessageOptions'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.DescriptorProto_reserved_range'(Msg,
							  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
								   <<>>,
								   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_reserved_range'([Elem
							  | Rest],
							 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 74>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_reserved_range'(id(Elem,
								     TrUserData),
								  Bin2,
								  TrUserData),
    'e_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_reserved_range'([],
							 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.DescriptorProto_reserved_name'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 82>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_reserved_name'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FieldDescriptorProto_options'(Msg,
							Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.FieldOptions'(Msg,
						       <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.EnumDescriptorProto_value'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumDescriptorProto_value'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumDescriptorProto_value'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.EnumDescriptorProto_value'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumDescriptorProto_options'(Msg,
						       Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.EnumOptions'(Msg,
						      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.EnumValueDescriptorProto_options'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumValueOptions'(Msg, <<>>,
						      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.ServiceDescriptorProto_method'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
							   <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.ServiceDescriptorProto_method'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.ServiceDescriptorProto_method'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.ServiceDescriptorProto_method'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.ServiceDescriptorProto_options'(Msg,
							  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.ServiceOptions'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.MethodDescriptorProto_options'(Msg,
							 Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.MethodOptions'(Msg,
							<<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.FileOptions_uninterpreted_option'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileOptions_uninterpreted_option'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.FileOptions_uninterpreted_option'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.FileOptions_uninterpreted_option'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.MessageOptions_uninterpreted_option'(Msg,
							       Bin,
							       TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.MessageOptions_uninterpreted_option'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.MessageOptions_uninterpreted_option'(id(Elem,
									  TrUserData),
								       Bin2,
								       TrUserData),
    'e_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.MessageOptions_uninterpreted_option'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FieldOptions_uninterpreted_option'(Msg,
							     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FieldOptions_uninterpreted_option'([Elem
							     | Rest],
							    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.FieldOptions_uninterpreted_option'(id(Elem,
									TrUserData),
								     Bin2,
								     TrUserData),
    'e_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								Bin3,
								TrUserData);
'e_field_google.protobuf.FieldOptions_uninterpreted_option'([],
							    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumOptions_uninterpreted_option'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumOptions_uninterpreted_option'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumOptions_uninterpreted_option'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.EnumOptions_uninterpreted_option'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumValueOptions_uninterpreted_option'(Msg,
								 Bin,
								 TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'([Elem
								 | Rest],
								Bin,
								TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumValueOptions_uninterpreted_option'(id(Elem,
									    TrUserData),
									 Bin2,
									 TrUserData),
    'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    Bin3,
								    TrUserData);
'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'([],
								Bin,
								_TrUserData) ->
    Bin.

'e_mfield_google.protobuf.ServiceOptions_uninterpreted_option'(Msg,
							       Bin,
							       TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.ServiceOptions_uninterpreted_option'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.ServiceOptions_uninterpreted_option'(id(Elem,
									  TrUserData),
								       Bin2,
								       TrUserData),
    'e_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.ServiceOptions_uninterpreted_option'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.MethodOptions_uninterpreted_option'(Msg,
							      Bin,
							      TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.MethodOptions_uninterpreted_option'([Elem
							      | Rest],
							     Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.MethodOptions_uninterpreted_option'(id(Elem,
									 TrUserData),
								      Bin2,
								      TrUserData),
    'e_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 Bin3,
								 TrUserData);
'e_field_google.protobuf.MethodOptions_uninterpreted_option'([],
							     Bin,
							     _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.UninterpretedOption_name'(Msg,
						    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
								  <<>>,
								  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.UninterpretedOption_name'([Elem
						    | Rest],
						   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.UninterpretedOption_name'(id(Elem,
							       TrUserData),
							    Bin2, TrUserData),
    'e_field_google.protobuf.UninterpretedOption_name'(Rest,
						       Bin3, TrUserData);
'e_field_google.protobuf.UninterpretedOption_name'([],
						   Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_path'(Elems,
						       Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.SourceCodeInfo.Location_path'(Elems,
								<<>>,
								TrUserData),
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.SourceCodeInfo.Location_path'([],
						       Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.SourceCodeInfo.Location_path'([Value
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    Bin2, TrUserData);
'e_pfield_google.protobuf.SourceCodeInfo.Location_path'([],
							Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_span'(Elems,
						       Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.SourceCodeInfo.Location_span'(Elems,
								<<>>,
								TrUserData),
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.SourceCodeInfo.Location_span'([],
						       Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.SourceCodeInfo.Location_span'([Value
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    Bin2, TrUserData);
'e_pfield_google.protobuf.SourceCodeInfo.Location_span'([],
							Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'([Elem
									     | Rest],
									    Bin,
									    TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										Bin3,
										TrUserData);
'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'([],
									    Bin,
									    _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.SourceCodeInfo_location'(Msg,
						   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							     <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.SourceCodeInfo_location'([Elem
						   | Rest],
						  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.SourceCodeInfo_location'(id(Elem,
							      TrUserData),
							   Bin2, TrUserData),
    'e_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      Bin3, TrUserData);
'e_field_google.protobuf.SourceCodeInfo_location'([],
						  Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Elems,
							    Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Elems,
								     <<>>,
								     TrUserData),
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'([],
							    Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'([Value
							      | Rest],
							     Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 Bin2,
								 TrUserData);
'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'([],
							     Bin,
							     _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.GeneratedCodeInfo_annotation'(Msg,
							Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
								  <<>>,
								  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.GeneratedCodeInfo_annotation'([Elem
							| Rest],
						       Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.GeneratedCodeInfo_annotation'(id(Elem,
								   TrUserData),
								Bin2,
								TrUserData),
    'e_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   Bin3, TrUserData);
'e_field_google.protobuf.GeneratedCodeInfo_annotation'([],
						       Bin, _TrUserData) ->
    Bin.

'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE',
						   Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT',
						   Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 4>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 5>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 6>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 7>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL',
						   Bin, _TrUserData) ->
    <<Bin/binary, 8>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING',
						   Bin, _TrUserData) ->
    <<Bin/binary, 9>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP',
						   Bin, _TrUserData) ->
    <<Bin/binary, 10>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE',
						   Bin, _TrUserData) ->
    <<Bin/binary, 11>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES',
						   Bin, _TrUserData) ->
    <<Bin/binary, 12>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 13>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM',
						   Bin, _TrUserData) ->
    <<Bin/binary, 14>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 15>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 16>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 17>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 18>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'(V,
						   Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL',
						    Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED',
						    Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED',
						    Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'(V,
						    Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FileOptions.OptimizeMode'('SPEED',
						  Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE',
						  Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME',
						  Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'(V,
						  Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldOptions.CType'('STRING',
					    Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_google.protobuf.FieldOptions.CType'('CORD', Bin,
					    _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldOptions.CType'('STRING_PIECE',
					    Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldOptions.CType'(V, Bin,
					    _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldOptions.JSType'('JS_NORMAL',
					     Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_google.protobuf.FieldOptions.JSType'('JS_STRING',
					     Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldOptions.JSType'('JS_NUMBER',
					     Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldOptions.JSType'(V, Bin,
					     _TrUserData) ->
    e_varint(V, Bin).

-compile({nowarn_unused_function,e_type_sint/3}).
e_type_sint(Value, Bin, _TrUserData) when Value >= 0 ->
    e_varint(Value * 2, Bin);
e_type_sint(Value, Bin, _TrUserData) ->
    e_varint(Value * -2 - 1, Bin).

-compile({nowarn_unused_function,e_type_int32/3}).
e_type_int32(Value, Bin, _TrUserData)
    when 0 =< Value, Value =< 127 ->
    <<Bin/binary, Value>>;
e_type_int32(Value, Bin, _TrUserData) ->
    <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
    e_varint(N, Bin).

-compile({nowarn_unused_function,e_type_int64/3}).
e_type_int64(Value, Bin, _TrUserData)
    when 0 =< Value, Value =< 127 ->
    <<Bin/binary, Value>>;
e_type_int64(Value, Bin, _TrUserData) ->
    <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
    e_varint(N, Bin).

-compile({nowarn_unused_function,e_type_bool/3}).
e_type_bool(true, Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
e_type_bool(false, Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
e_type_bool(1, Bin, _TrUserData) -> <<Bin/binary, 1>>;
e_type_bool(0, Bin, _TrUserData) -> <<Bin/binary, 0>>.

-compile({nowarn_unused_function,e_type_string/3}).
e_type_string(S, Bin, _TrUserData) ->
    Utf8 = unicode:characters_to_binary(S),
    Bin2 = e_varint(byte_size(Utf8), Bin),
    <<Bin2/binary, Utf8/binary>>.

-compile({nowarn_unused_function,e_type_bytes/3}).
e_type_bytes(Bytes, Bin, _TrUserData)
    when is_binary(Bytes) ->
    Bin2 = e_varint(byte_size(Bytes), Bin),
    <<Bin2/binary, Bytes/binary>>;
e_type_bytes(Bytes, Bin, _TrUserData)
    when is_list(Bytes) ->
    BytesBin = iolist_to_binary(Bytes),
    Bin2 = e_varint(byte_size(BytesBin), Bin),
    <<Bin2/binary, BytesBin/binary>>.

-compile({nowarn_unused_function,e_type_fixed32/3}).
e_type_fixed32(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:32/little>>.

-compile({nowarn_unused_function,e_type_sfixed32/3}).
e_type_sfixed32(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:32/little-signed>>.

-compile({nowarn_unused_function,e_type_fixed64/3}).
e_type_fixed64(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:64/little>>.

-compile({nowarn_unused_function,e_type_sfixed64/3}).
e_type_sfixed64(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:64/little-signed>>.

-compile({nowarn_unused_function,e_type_float/3}).
e_type_float(V, Bin, _) when is_number(V) ->
    <<Bin/binary, V:32/little-float>>;
e_type_float(infinity, Bin, _) ->
    <<Bin/binary, 0:16, 128, 127>>;
e_type_float('-infinity', Bin, _) ->
    <<Bin/binary, 0:16, 128, 255>>;
e_type_float(nan, Bin, _) ->
    <<Bin/binary, 0:16, 192, 127>>.

-compile({nowarn_unused_function,e_type_double/3}).
e_type_double(V, Bin, _) when is_number(V) ->
    <<Bin/binary, V:64/little-float>>;
e_type_double(infinity, Bin, _) ->
    <<Bin/binary, 0:48, 240, 127>>;
e_type_double('-infinity', Bin, _) ->
    <<Bin/binary, 0:48, 240, 255>>;
e_type_double(nan, Bin, _) ->
    <<Bin/binary, 0:48, 248, 127>>.

-compile({nowarn_unused_function,e_varint/3}).
e_varint(N, Bin, _TrUserData) -> e_varint(N, Bin).

-compile({nowarn_unused_function,e_varint/2}).
e_varint(N, Bin) when N =< 127 -> <<Bin/binary, N>>;
e_varint(N, Bin) ->
    Bin2 = <<Bin/binary, (N band 127 bor 128)>>,
    e_varint(N bsr 7, Bin2).


decode_msg(Bin, MsgName) when is_binary(Bin) ->
    decode_msg(Bin, MsgName, []).

decode_msg(Bin, MsgName, Opts) when is_binary(Bin) ->
    TrUserData = proplists:get_value(user_data, Opts),
    decode_msg_1_catch(Bin, MsgName, TrUserData).

-ifdef('OTP_RELEASE').
decode_msg_1_catch(Bin, MsgName, TrUserData) ->
    try decode_msg_2_doit(MsgName, Bin, TrUserData)
    catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
    end.
-else.
decode_msg_1_catch(Bin, MsgName, TrUserData) ->
    try decode_msg_2_doit(MsgName, Bin, TrUserData)
    catch Class:Reason ->
        StackTrace = erlang:get_stacktrace(),
        error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
    end.
-endif.

decode_msg_2_doit('google.protobuf.FileDescriptorSet',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FileDescriptorSet'(Bin,
						      TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FileDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FileDescriptorProto'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto.ExtensionRange',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
								   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto.ReservedRange',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bin,
								  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto'(Bin,
						    TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FieldDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FieldDescriptorProto'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.OneofDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.OneofDescriptorProto'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumDescriptorProto'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumValueDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumValueDescriptorProto'(Bin,
							     TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.ServiceDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.ServiceDescriptorProto'(Bin,
							   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MethodDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.MethodDescriptorProto'(Bin,
							  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FileOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.FileOptions'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MessageOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.MessageOptions'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FieldOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.FieldOptions'(Bin,
						 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.EnumOptions'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumValueOptions',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumValueOptions'(Bin,
						     TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.ServiceOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.ServiceOptions'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MethodOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.MethodOptions'(Bin,
						  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.UninterpretedOption.NamePart',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bin,
								 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.UninterpretedOption',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.UninterpretedOption'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.SourceCodeInfo.Location',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.SourceCodeInfo.Location'(Bin,
							    TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.SourceCodeInfo', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.SourceCodeInfo'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.GeneratedCodeInfo.Annotation',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
								 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.GeneratedCodeInfo',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.GeneratedCodeInfo'(Bin,
						      TrUserData),
       TrUserData).



'decode_msg_google.protobuf.FileDescriptorSet'(Bin,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Bin,
							   0, 0,
							   id([], TrUserData),
							   TrUserData).

'dfp_read_field_def_google.protobuf.FileDescriptorSet'(<<10,
							 Rest/binary>>,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorSet'(<<>>,
						       0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{file => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Other,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'dg_read_field_def_google.protobuf.FileDescriptorSet'(Other,
							  Z1, Z2, F@_1,
							  TrUserData).

'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, TrUserData);
'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1,
						      TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
							   0, 0, F@_1,
							   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileDescriptorSet'(Rest, 0,
								0, F@_1,
								TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileDescriptorSet'(Rest, 0, 0,
							    F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileDescriptorSet'(Rest,
									  0, 0,
									  F@_1,
									  TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileDescriptorSet'(Rest,
							       Key bsr 3, 0,
							       F@_1,
							       TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileDescriptorSet'(Rest, 0, 0,
							    F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<>>,
						      0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{file => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.FileDescriptorSet_file'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'd_field_google.protobuf.FileDescriptorSet_file'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FileDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(RestF,
							   0, 0,
							   cons(NewFValue, Prev,
								TrUserData),
							   TrUserData).

'skip_varint_google.protobuf.FileDescriptorSet'(<<1:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.FileDescriptorSet'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.FileDescriptorSet'(<<0:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_length_delimited_google.protobuf.FileDescriptorSet'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileDescriptorSet'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, TrUserData);
'skip_length_delimited_google.protobuf.FileDescriptorSet'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest2,
							   0, 0, F@_1,
							   TrUserData).

'skip_group_google.protobuf.FileDescriptorSet'(Bin,
					       FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   0, Z2, F@_1,
							   TrUserData).

'skip_32_google.protobuf.FileDescriptorSet'(<<_:32,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_64_google.protobuf.FileDescriptorSet'(<<_:64,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'decode_msg_google.protobuf.FileDescriptorProto'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Bin,
							     0, 0,
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<82,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<80,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<90,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<88,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<34,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<42,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<50,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<58,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<66,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<74,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<98,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<>>,
							 0, 0, F@_1, F@_2, R1,
							 R2, R3, R4, R5, R6, R7,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    S1 = #{dependency => lists_reverse(R1, TrUserData),
	   public_dependency => lists_reverse(R2, TrUserData),
	   weak_dependency => lists_reverse(R3, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{package => F@_2}
	 end,
    S4 = if R4 == '$undef' -> S3;
	    true ->
		S3#{message_type => lists_reverse(R4, TrUserData)}
	 end,
    S5 = if R5 == '$undef' -> S4;
	    true -> S4#{enum_type => lists_reverse(R5, TrUserData)}
	 end,
    S6 = if R6 == '$undef' -> S5;
	    true -> S5#{service => lists_reverse(R6, TrUserData)}
	 end,
    S7 = if R7 == '$undef' -> S6;
	    true -> S6#{extension => lists_reverse(R7, TrUserData)}
	 end,
    S8 = if F@_10 == '$undef' -> S7;
	    true -> S7#{options => F@_10}
	 end,
    S9 = if F@_11 == '$undef' -> S8;
	    true -> S8#{source_code_info => F@_11}
	 end,
    if F@_12 == '$undef' -> S9;
       true -> S9#{syntax => F@_12}
    end;
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'dg_read_field_def_google.protobuf.FileDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData).

'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData);
      18 ->
	  'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      26 ->
	  'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
      82 ->
	  'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   TrUserData);
      80 ->
	  'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  TrUserData);
      90 ->
	  'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 TrUserData);
      88 ->
	  'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									TrUserData);
      34 ->
	  'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
      42 ->
	  'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
      50 ->
	  'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      58 ->
	  'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
      66 ->
	  'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      74 ->
	  'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 TrUserData);
      98 ->
	  'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileDescriptorProto'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileDescriptorProto'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    F@_6,
									    F@_7,
									    F@_8,
									    F@_9,
									    F@_10,
									    F@_11,
									    F@_12,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileDescriptorProto'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<>>,
							0, 0, F@_1, F@_2, R1,
							R2, R3, R4, R5, R6, R7,
							F@_10, F@_11, F@_12,
							TrUserData) ->
    S1 = #{dependency => lists_reverse(R1, TrUserData),
	   public_dependency => lists_reverse(R2, TrUserData),
	   weak_dependency => lists_reverse(R3, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{package => F@_2}
	 end,
    S4 = if R4 == '$undef' -> S3;
	    true ->
		S3#{message_type => lists_reverse(R4, TrUserData)}
	 end,
    S5 = if R5 == '$undef' -> S4;
	    true -> S4#{enum_type => lists_reverse(R5, TrUserData)}
	 end,
    S6 = if R6 == '$undef' -> S5;
	    true -> S5#{service => lists_reverse(R6, TrUserData)}
	 end,
    S7 = if R7 == '$undef' -> S6;
	    true -> S6#{extension => lists_reverse(R7, TrUserData)}
	 end,
    S8 = if F@_10 == '$undef' -> S7;
	    true -> S7#{options => F@_10}
	 end,
    S9 = if F@_11 == '$undef' -> S8;
	    true -> S8#{source_code_info => F@_11}
	 end,
    if F@_12 == '$undef' -> S9;
       true -> S9#{syntax => F@_12}
    end.

'd_field_google.protobuf.FileDescriptorProto_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, NewFValue,
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_package'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_package'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, _, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1,
							     NewFValue, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_dependency'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_dependency'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 Prev, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								Prev, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12,
								 TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3, E,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(PackedBytes,
									       0,
									       0,
									       E,
									       TrUserData),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, NewSeq, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       AccSeq,
								       TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									   N +
									     7,
									   X bsl
									     N
									     +
									     Acc,
									   AccSeq,
									   TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       AccSeq,
								       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(RestF,
									   0, 0,
									   [NewFValue
									    | AccSeq],
									   TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<>>,
								       0, 0,
								       AccSeq,
								       _) ->
    AccSeq.

'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      Prev, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   TrUserData);
'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       E, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(PackedBytes,
									     0,
									     0,
									     E,
									     TrUserData),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, NewSeq,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     AccSeq,
								     TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 AccSeq,
									 TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     AccSeq,
								     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(RestF,
									 0, 0,
									 [NewFValue
									  | AccSeq],
									 TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<>>,
								     0, 0,
								     AccSeq,
								     _) ->
    AccSeq.

'd_field_google.protobuf.FileDescriptorProto_message_type'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData);
'd_field_google.protobuf.FileDescriptorProto_message_type'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   Prev, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto'(Bs,
									    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_enum_type'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_enum_type'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							Prev, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_service'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_service'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      Prev, F@_9, F@_10, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.ServiceDescriptorProto'(Bs,
										   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_extension'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_extension'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, Prev, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_options'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_options'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, Prev, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FileOptions'(Bs,
									TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.FileOptions'(Prev,
													    NewFValue,
													    TrUserData)
							     end,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_source_code_info'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   TrUserData);
'd_field_google.protobuf.FileDescriptorProto_source_code_info'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, Prev,
							       F@_12,
							       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.SourceCodeInfo'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.SourceCodeInfo'(Prev,
													       NewFValue,
													       TrUserData)
							     end,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_syntax'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_syntax'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     NewFValue,
							     TrUserData).

'skip_varint_google.protobuf.FileDescriptorProto'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  TrUserData) ->
    'skip_varint_google.protobuf.FileDescriptorProto'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData);
'skip_varint_google.protobuf.FileDescriptorProto'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_length_delimited_google.protobuf.FileDescriptorProto'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileDescriptorProto'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								TrUserData);
'skip_length_delimited_google.protobuf.FileDescriptorProto'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_group_google.protobuf.FileDescriptorProto'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 F@_4, F@_5, F@_6, F@_7, F@_8,
						 F@_9, F@_10, F@_11, F@_12,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_32_google.protobuf.FileDescriptorProto'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_64_google.protobuf.FileDescriptorProto'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
							    TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
									0, 0,
									id('$undef',
									   TrUserData),
									id('$undef',
									   TrUserData),
									TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<8,
								      Rest/binary>>,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<16,
								      Rest/binary>>,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<>>,
								    0, 0, F@_1,
								    F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Other,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Other,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2,
								   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2,
								   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData);
      16 ->
	  'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
										       0,
										       0,
										       F@_1,
										       F@_2,
										       TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									    Key
									      bsr
									      3,
									    0,
									    F@_1,
									    F@_2,
									    TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<>>,
								   0, 0, F@_1,
								   F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end.

'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   TrUserData);
'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, _, F@_2,
							       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(RestF,
									0, 0,
									NewFValue,
									F@_2,
									TrUserData).

'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 TrUserData);
'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, _,
							     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(RestF,
									0, 0,
									F@_1,
									NewFValue,
									TrUserData).

'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
							       _:7,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
							       _:7,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       F@_1,
								       F@_2,
								       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									   N +
									     7,
									   X bsl
									     N
									     +
									     Acc,
									   F@_1,
									   F@_2,
									   TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       F@_1,
								       F@_2,
								       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest2,
									0, 0,
									F@_1,
									F@_2,
									TrUserData).

'skip_group_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
							    FNum, Z2, F@_1,
							    F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									0, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_32_google.protobuf.DescriptorProto.ExtensionRange'(<<_:32,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_64_google.protobuf.DescriptorProto.ExtensionRange'(<<_:64,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bin,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Bin,
								       0, 0,
								       id('$undef',
									  TrUserData),
								       id('$undef',
									  TrUserData),
								       TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<8,
								     Rest/binary>>,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<16,
								     Rest/binary>>,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								Z1, Z2, F@_1,
								F@_2,
								TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<>>,
								   0, 0, F@_1,
								   F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Other,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Other,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
								    X:7,
								    Rest/binary>>,
								  N, Acc, F@_1,
								  F@_2,
								  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								      N + 7,
								      X bsl N +
									Acc,
								      F@_1,
								      F@_2,
								      TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
								    X:7,
								    Rest/binary>>,
								  N, Acc, F@_1,
								  F@_2,
								  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
      16 ->
	  'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(Rest,
										      0,
										      0,
										      F@_1,
										      F@_2,
										      TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									   Key
									     bsr
									     3,
									   0,
									   F@_1,
									   F@_2,
									   TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<>>,
								  0, 0, F@_1,
								  F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end.

'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  TrUserData);
'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, _, F@_2,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(RestF,
								       0, 0,
								       NewFValue,
								       F@_2,
								       TrUserData).

'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								TrUserData);
'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, _,
							    TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(RestF,
								       0, 0,
								       F@_1,
								       NewFValue,
								       TrUserData).

'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
							      _:7,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								Z1, Z2, F@_1,
								F@_2,
								TrUserData);
'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
							      _:7,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									  N + 7,
									  X bsl
									    N
									    +
									    Acc,
									  F@_1,
									  F@_2,
									  TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest2,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_group_google.protobuf.DescriptorProto.ReservedRange'(Bin,
							   FNum, Z2, F@_1, F@_2,
							   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       0, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_32_google.protobuf.DescriptorProto.ReservedRange'(<<_:32,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_64_google.protobuf.DescriptorProto.ReservedRange'(<<_:64,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'decode_msg_google.protobuf.DescriptorProto'(Bin,
					     TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Bin,
							 0, 0,
							 id('$undef',
							    TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id('$undef',
							    TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto'(<<10,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_name'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<18,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_field'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<50,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<26,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<34,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<42,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<66,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<58,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_options'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<74,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<82,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<>>,
						     0, 0, F@_1, R1, R2, R3, R4,
						     R5, R6, F@_8, R7, R8,
						     TrUserData) ->
    S1 = #{reserved_name => lists_reverse(R8, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{field => lists_reverse(R1, TrUserData)}
	 end,
    S4 = if R2 == '$undef' -> S3;
	    true -> S3#{extension => lists_reverse(R2, TrUserData)}
	 end,
    S5 = if R3 == '$undef' -> S4;
	    true ->
		S4#{nested_type => lists_reverse(R3, TrUserData)}
	 end,
    S6 = if R4 == '$undef' -> S5;
	    true -> S5#{enum_type => lists_reverse(R4, TrUserData)}
	 end,
    S7 = if R5 == '$undef' -> S6;
	    true ->
		S6#{extension_range => lists_reverse(R5, TrUserData)}
	 end,
    S8 = if R6 == '$undef' -> S7;
	    true -> S7#{oneof_decl => lists_reverse(R6, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{options => F@_8}
	 end,
    if R7 == '$undef' -> S9;
       true ->
	   S9#{reserved_range => lists_reverse(R7, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto'(Other,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto'(Other,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.DescriptorProto_name'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData);
      18 ->
	  'd_field_google.protobuf.DescriptorProto_field'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
      50 ->
	  'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      26 ->
	  'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10,
								TrUserData);
      34 ->
	  'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      42 ->
	  'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    TrUserData);
      66 ->
	  'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
      58 ->
	  'd_field_google.protobuf.DescriptorProto_options'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
      74 ->
	  'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      82 ->
	  'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10,
								  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto'(Rest,
							     Key bsr 3, 0, F@_1,
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto'(<<>>,
						    0, 0, F@_1, R1, R2, R3, R4,
						    R5, R6, F@_8, R7, R8,
						    TrUserData) ->
    S1 = #{reserved_name => lists_reverse(R8, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{field => lists_reverse(R1, TrUserData)}
	 end,
    S4 = if R2 == '$undef' -> S3;
	    true -> S3#{extension => lists_reverse(R2, TrUserData)}
	 end,
    S5 = if R3 == '$undef' -> S4;
	    true ->
		S4#{nested_type => lists_reverse(R3, TrUserData)}
	 end,
    S6 = if R4 == '$undef' -> S5;
	    true -> S5#{enum_type => lists_reverse(R4, TrUserData)}
	 end,
    S7 = if R5 == '$undef' -> S6;
	    true ->
		S6#{extension_range => lists_reverse(R5, TrUserData)}
	 end,
    S8 = if R6 == '$undef' -> S7;
	    true -> S7#{oneof_decl => lists_reverse(R6, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{options => F@_8}
	 end,
    if R7 == '$undef' -> S9;
       true ->
	   S9#{reserved_range => lists_reverse(R7, TrUserData)}
    end.

'd_field_google.protobuf.DescriptorProto_name'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_name'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   TrUserData);
'd_field_google.protobuf.DescriptorProto_name'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, _, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, NewFValue, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_field'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_field'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_field'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, Prev, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_extension'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.DescriptorProto_extension'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, Prev,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_nested_type'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_nested_type'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      Prev, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto'(Bs,
									    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_enum_type'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.DescriptorProto_enum_type'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, Prev, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_6, F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_extension_range'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData);
'd_field_google.protobuf.DescriptorProto_extension_range'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  Prev, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bs,
											   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_oneof_decl'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData);
'd_field_google.protobuf.DescriptorProto_oneof_decl'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, Prev,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.OneofDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_8, F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_options'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_options'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_options'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, Prev,
						  F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MessageOptions'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 if Prev == '$undef' ->
								NewFValue;
							    true ->
								'merge_msg_google.protobuf.MessageOptions'(Prev,
													   NewFValue,
													   TrUserData)
							 end,
							 F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_reserved_range'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_reserved_range'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, Prev,
							 F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bs,
											  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_reserved_name'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'd_field_google.protobuf.DescriptorProto_reserved_name'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, Prev,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9,
							 cons(NewFValue, Prev,
							      TrUserData),
							 TrUserData).

'skip_varint_google.protobuf.DescriptorProto'(<<1:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, TrUserData);
'skip_varint_google.protobuf.DescriptorProto'(<<0:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest2,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData).

'skip_group_google.protobuf.DescriptorProto'(Bin, FNum,
					     Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 0, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_32_google.protobuf.DescriptorProto'(<<_:32,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_64_google.protobuf.DescriptorProto'(<<_:64,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'decode_msg_google.protobuf.FieldDescriptorProto'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Bin,
							      0, 0,
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<24,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<32,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<40,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<50,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<18,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<58,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<72,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<82,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<66,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10,
							   TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<>>,
							  0, 0, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{label => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{type => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{type_name => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{extendee => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{default_value => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{oneof_index => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{json_name => F@_9}
	  end,
    if F@_10 == '$undef' -> S10;
       true -> S10#{options => F@_10}
    end;
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Other,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'dg_read_field_def_google.protobuf.FieldDescriptorProto'(Other,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData).

'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      24 ->
	  'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10,
								TrUserData);
      32 ->
	  'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
      40 ->
	  'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      50 ->
	  'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      18 ->
	  'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10,
								  TrUserData);
      58 ->
	  'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       TrUserData);
      72 ->
	  'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     TrUserData);
      82 ->
	  'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      66 ->
	  'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10,
								 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FieldDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
	    1 ->
		'skip_64_google.protobuf.FieldDescriptorProto'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FieldDescriptorProto'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     TrUserData);
	    3 ->
		'skip_group_google.protobuf.FieldDescriptorProto'(Rest,
								  Key bsr 3, 0,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  TrUserData);
	    5 ->
		'skip_32_google.protobuf.FieldDescriptorProto'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<>>,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{label => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{type => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{type_name => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{extendee => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{default_value => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{oneof_index => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{json_name => F@_9}
	  end,
    if F@_10 == '$undef' -> S10;
       true -> S10#{options => F@_10}
    end.

'd_field_google.protobuf.FieldDescriptorProto_name'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_name'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, F@_2, F@_3, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, NewFValue,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_number'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_number'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, _, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1,
							      NewFValue, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_label'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_label'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, _,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldDescriptorProto.Label'(begin
								  <<Res:32/signed-native>> =
								      <<(X bsl N
									   +
									   Acc):32/unsigned-native>>,
								  id(Res,
								     TrUserData)
								end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      NewFValue, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_type'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_type'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3, _,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldDescriptorProto.Type'(begin
								 <<Res:32/signed-native>> =
								     <<(X bsl N
									  +
									  Acc):32/unsigned-native>>,
								 id(Res,
								    TrUserData)
							       end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, NewFValue,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_type_name'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_type_name'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, _, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4,
							      NewFValue, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_extendee'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_extendee'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, _,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      NewFValue, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_default_value'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_default_value'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, _, F@_8,
							     F@_9, F@_10,
							     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, NewFValue,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10,
							       TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, _, F@_9,
							   F@_10, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      NewFValue, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_json_name'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_json_name'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, _, F@_10,
							 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      NewFValue, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_options'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10,
						       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_options'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, Prev,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldOptions'(Bs,
									 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9,
							      if Prev ==
								   '$undef' ->
								     NewFValue;
								 true ->
								     'merge_msg_google.protobuf.FieldOptions'(Prev,
													      NewFValue,
													      TrUserData)
							      end,
							      TrUserData).

'skip_varint_google.protobuf.FieldDescriptorProto'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, TrUserData) ->
    'skip_varint_google.protobuf.FieldDescriptorProto'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10,
						       TrUserData);
'skip_varint_google.protobuf.FieldDescriptorProto'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'skip_length_delimited_google.protobuf.FieldDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FieldDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 TrUserData);
'skip_length_delimited_google.protobuf.FieldDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest2,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData).

'skip_group_google.protobuf.FieldDescriptorProto'(Bin,
						  FNum, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      0, Z2, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData).

'skip_32_google.protobuf.FieldDescriptorProto'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'skip_64_google.protobuf.FieldDescriptorProto'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'decode_msg_google.protobuf.OneofDescriptorProto'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Bin,
							      0, 0,
							      id('$undef',
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							Z1, Z2, F@_1,
							TrUserData);
'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(<<>>,
							  0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{name => F@_1}
    end;
'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Other,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'dg_read_field_def_google.protobuf.OneofDescriptorProto'(Other,
							     Z1, Z2, F@_1,
							     TrUserData).

'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, TrUserData);
'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							      0, 0, F@_1,
							      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.OneofDescriptorProto'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    1 ->
		'skip_64_google.protobuf.OneofDescriptorProto'(Rest, 0,
							       0, F@_1,
							       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.OneofDescriptorProto'(Rest,
									     0,
									     0,
									     F@_1,
									     TrUserData);
	    3 ->
		'skip_group_google.protobuf.OneofDescriptorProto'(Rest,
								  Key bsr 3, 0,
								  F@_1,
								  TrUserData);
	    5 ->
		'skip_32_google.protobuf.OneofDescriptorProto'(Rest, 0,
							       0, F@_1,
							       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<>>,
							 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{name => F@_1}
    end.

'd_field_google.protobuf.OneofDescriptorProto_name'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'd_field_google.protobuf.OneofDescriptorProto_name'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(RestF,
							      0, 0, NewFValue,
							      TrUserData).

'skip_varint_google.protobuf.OneofDescriptorProto'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.OneofDescriptorProto'(Rest,
						       Z1, Z2, F@_1,
						       TrUserData);
'skip_varint_google.protobuf.OneofDescriptorProto'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_length_delimited_google.protobuf.OneofDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.OneofDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1,
								 TrUserData);
'skip_length_delimited_google.protobuf.OneofDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest2,
							      0, 0, F@_1,
							      TrUserData).

'skip_group_google.protobuf.OneofDescriptorProto'(Bin,
						  FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      0, Z2, F@_1,
							      TrUserData).

'skip_32_google.protobuf.OneofDescriptorProto'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_64_google.protobuf.OneofDescriptorProto'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'decode_msg_google.protobuf.EnumDescriptorProto'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Bin,
							     0, 0,
							     id('$undef',
								TrUserData),
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<>>,
							 0, 0, F@_1, R1, F@_3,
							 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{value => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData).

'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, TrUserData);
      18 ->
	  'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, TrUserData);
      26 ->
	  'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumDescriptorProto'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumDescriptorProto'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumDescriptorProto'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<>>,
							0, 0, F@_1, R1, F@_3,
							TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{value => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.EnumDescriptorProto_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3,
						       TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, NewFValue,
							     F@_2, F@_3,
							     TrUserData).

'd_field_google.protobuf.EnumDescriptorProto_value'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3,
							TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_value'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, Prev, F@_3,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumValueDescriptorProto'(Bs,
										     TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, F@_1,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_3, TrUserData).

'd_field_google.protobuf.EnumDescriptorProto_options'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_options'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, Prev,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumOptions'(Bs,
									TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.EnumOptions'(Prev,
													    NewFValue,
													    TrUserData)
							     end,
							     TrUserData).

'skip_varint_google.protobuf.EnumDescriptorProto'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  TrUserData) ->
    'skip_varint_google.protobuf.EnumDescriptorProto'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData);
'skip_varint_google.protobuf.EnumDescriptorProto'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_length_delimited_google.protobuf.EnumDescriptorProto'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumDescriptorProto'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3,
								TrUserData);
'skip_length_delimited_google.protobuf.EnumDescriptorProto'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_group_google.protobuf.EnumDescriptorProto'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_32_google.protobuf.EnumDescriptorProto'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_64_google.protobuf.EnumDescriptorProto'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'decode_msg_google.protobuf.EnumValueDescriptorProto'(Bin,
						      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Bin,
								  0, 0,
								  id('$undef',
								     TrUserData),
								  id('$undef',
								     TrUserData),
								  id('$undef',
								     TrUserData),
								  TrUserData).

'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<10,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<16,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<26,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3,
							       TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<>>,
							      0, 0, F@_1, F@_2,
							      F@_3, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Other,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(Other,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 TrUserData).

'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3,
								 TrUserData);
'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3,
							     TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
      16 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    TrUserData);
      26 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumValueDescriptorProto'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumValueDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(Rest,
										 0,
										 0,
										 F@_1,
										 F@_2,
										 F@_3,
										 TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumValueDescriptorProto'(Rest,
								      Key bsr 3,
								      0, F@_1,
								      F@_2,
								      F@_3,
								      TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumValueDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<>>,
							     0, 0, F@_1, F@_2,
							     F@_3, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.EnumValueDescriptorProto_name'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_name'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, _, F@_2, F@_3,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0,
								  NewFValue,
								  F@_2, F@_3,
								  TrUserData).

'd_field_google.protobuf.EnumValueDescriptorProto_number'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_number'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, _, F@_3,
							  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0, F@_1,
								  NewFValue,
								  F@_3,
								  TrUserData).

'd_field_google.protobuf.EnumValueDescriptorProto_options'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_options'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumValueOptions'(Bs,
									     TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0, F@_1,
								  F@_2,
								  if Prev ==
								       '$undef' ->
									 NewFValue;
								     true ->
									 'merge_msg_google.protobuf.EnumValueOptions'(Prev,
														      NewFValue,
														      TrUserData)
								  end,
								  TrUserData).

'skip_varint_google.protobuf.EnumValueDescriptorProto'(<<1:1,
							 _:7, Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData) ->
    'skip_varint_google.protobuf.EnumValueDescriptorProto'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, TrUserData);
'skip_varint_google.protobuf.EnumValueDescriptorProto'(<<0:1,
							 _:7, Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3,
								     TrUserData);
'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest2,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_group_google.protobuf.EnumValueDescriptorProto'(Bin,
						      FNum, Z2, F@_1, F@_2,
						      F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  0, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_32_google.protobuf.EnumValueDescriptorProto'(<<_:32,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_64_google.protobuf.EnumValueDescriptorProto'(<<_:64,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'decode_msg_google.protobuf.ServiceDescriptorProto'(Bin,
						    TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Bin,
								0, 0,
								id('$undef',
								   TrUserData),
								id([],
								   TrUserData),
								id('$undef',
								   TrUserData),
								TrUserData).

'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<10,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<18,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<26,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<>>,
							    0, 0, F@_1, R1,
							    F@_3, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{method => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(Other,
							       Z1, Z2, F@_1,
							       F@_2, F@_3,
							       TrUserData).

'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       TrUserData);
'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      18 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
      26 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.ServiceDescriptorProto'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     TrUserData);
	    1 ->
		'skip_64_google.protobuf.ServiceDescriptorProto'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(Rest,
									       0,
									       0,
									       F@_1,
									       F@_2,
									       F@_3,
									       TrUserData);
	    3 ->
		'skip_group_google.protobuf.ServiceDescriptorProto'(Rest,
								    Key bsr 3,
								    0, F@_1,
								    F@_2, F@_3,
								    TrUserData);
	    5 ->
		'skip_32_google.protobuf.ServiceDescriptorProto'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<>>,
							   0, 0, F@_1, R1, F@_3,
							   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{method => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.ServiceDescriptorProto_name'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_name'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, _, F@_2, F@_3,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, NewFValue,
								F@_2, F@_3,
								TrUserData).

'd_field_google.protobuf.ServiceDescriptorProto_method'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_method'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, Prev,
							F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MethodDescriptorProto'(Bs,
										  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, F@_1,
								cons(NewFValue,
								     Prev,
								     TrUserData),
								F@_3,
								TrUserData).

'd_field_google.protobuf.ServiceDescriptorProto_options'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_options'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.ServiceOptions'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, F@_1,
								F@_2,
								if Prev ==
								     '$undef' ->
								       NewFValue;
								   true ->
								       'merge_msg_google.protobuf.ServiceOptions'(Prev,
														  NewFValue,
														  TrUserData)
								end,
								TrUserData).

'skip_varint_google.protobuf.ServiceDescriptorProto'(<<1:1,
						       _:7, Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData) ->
    'skip_varint_google.protobuf.ServiceDescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData);
'skip_varint_google.protobuf.ServiceDescriptorProto'(<<0:1,
						       _:7, Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3,
							       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3,
								   TrUserData);
'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3,
							       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest2,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_group_google.protobuf.ServiceDescriptorProto'(Bin,
						    FNum, Z2, F@_1, F@_2, F@_3,
						    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								0, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_32_google.protobuf.ServiceDescriptorProto'(<<_:32,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_64_google.protobuf.ServiceDescriptorProto'(<<_:64,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'decode_msg_google.protobuf.MethodDescriptorProto'(Bin,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Bin,
							       0, 0,
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       TrUserData).

'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<10,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<18,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<26,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6,
								TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<34,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<40,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<48,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<>>,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{input_type => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{output_type => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{options => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{client_streaming => F@_5}
	 end,
    if F@_6 == '$undef' -> S6;
       true -> S6#{server_streaming => F@_6}
    end;
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Other,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'dg_read_field_def_google.protobuf.MethodDescriptorProto'(Other,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData).

'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      TrUserData);
'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6,
							       TrUserData);
      18 ->
	  'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6,
								     TrUserData);
      26 ->
	  'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      TrUserData);
      34 ->
	  'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6,
								  TrUserData);
      40 ->
	  'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   TrUserData);
      48 ->
	  'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MethodDescriptorProto'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6,
								    TrUserData);
	    1 ->
		'skip_64_google.protobuf.MethodDescriptorProto'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MethodDescriptorProto'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      F@_6,
									      TrUserData);
	    3 ->
		'skip_group_google.protobuf.MethodDescriptorProto'(Rest,
								   Key bsr 3, 0,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   TrUserData);
	    5 ->
		'skip_32_google.protobuf.MethodDescriptorProto'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<>>,
							  0, 0, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{input_type => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{output_type => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{options => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{client_streaming => F@_5}
	 end,
    if F@_6 == '$undef' -> S6;
       true -> S6#{server_streaming => F@_6}
    end.

'd_field_google.protobuf.MethodDescriptorProto_name'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6,
							 TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_name'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, _, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, NewFValue,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_input_type'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_input_type'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, _,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1,
							       NewFValue, F@_3,
							       F@_4, F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_output_type'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_output_type'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    _, F@_4, F@_5, F@_6,
							    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       NewFValue, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_options'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6,
							    TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_options'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, Prev, F@_5, F@_6,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MethodOptions'(Bs,
									  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3,
							       if Prev ==
								    '$undef' ->
								      NewFValue;
								  true ->
								      'merge_msg_google.protobuf.MethodOptions'(Prev,
														NewFValue,
														TrUserData)
							       end,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, _, F@_6,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4,
							       NewFValue, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5, _,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       NewFValue,
							       TrUserData).

'skip_varint_google.protobuf.MethodDescriptorProto'(<<1:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6,
						    TrUserData) ->
    'skip_varint_google.protobuf.MethodDescriptorProto'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							TrUserData);
'skip_varint_google.protobuf.MethodDescriptorProto'(<<0:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6,
						    TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_length_delimited_google.protobuf.MethodDescriptorProto'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MethodDescriptorProto'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  TrUserData);
'skip_length_delimited_google.protobuf.MethodDescriptorProto'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest2,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6,
							       TrUserData).

'skip_group_google.protobuf.MethodDescriptorProto'(Bin,
						   FNum, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6,
						   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       0, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_32_google.protobuf.MethodDescriptorProto'(<<_:32,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_64_google.protobuf.MethodDescriptorProto'(<<_:64,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'decode_msg_google.protobuf.FileOptions'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id([], TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_google.protobuf.FileOptions'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_package'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<66,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<80,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<160,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<72,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<90,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_go_package'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<144,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<184,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_deprecated'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<162,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<170,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<176,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
									  Z1,
									  Z2,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<186,
						   62, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<200,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<208,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<224,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<232,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_face_all'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, F@_28, F@_29,
						   F@_30, F@_31, F@_32, F@_33,
						   F@_34, F@_35, F@_36, F@_37,
						   F@_38, F@_39, F@_40, F@_41,
						   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<240,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_populate_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<168,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_equal_all'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<176,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_description_all'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<184,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<192,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<200,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<208,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<224,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_sizer_all'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<232,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<240,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<144,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12, F@_13,
								   F@_14, F@_15,
								   F@_16, F@_17,
								   F@_18, F@_19,
								   F@_20, F@_21,
								   F@_22, F@_23,
								   F@_24, F@_25,
								   F@_26, F@_27,
								   F@_28, F@_29,
								   F@_30, F@_31,
								   F@_32, F@_33,
								   F@_34, F@_35,
								   F@_36, F@_37,
								   F@_38, F@_39,
								   F@_40, F@_41,
								   F@_42,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<152,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<160,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 F@_28, F@_29, F@_30,
							 F@_31, F@_32, F@_33,
							 F@_34, F@_35, F@_36,
							 F@_37, F@_38, F@_39,
							 F@_40, F@_41, F@_42,
							 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<168,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_compare_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, R1, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, F@_28, F@_29, F@_30,
						 F@_31, F@_32, F@_33, F@_34,
						 F@_35, F@_36, F@_37, F@_38,
						 F@_39, F@_40, F@_41, F@_42,
						 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{java_package => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{java_outer_classname => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{java_multiple_files => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{java_generate_equals_and_hash => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{java_string_check_utf8 => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{optimize_for => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{go_package => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{cc_generic_services => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{java_generic_services => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{py_generic_services => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{deprecated => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{cc_enable_arenas => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{objc_class_prefix => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{csharp_namespace => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{javanano_use_deprecated_package => F@_15}
	  end,
    S17 = if R1 == '$undef' -> S16;
	     true ->
		 S16#{uninterpreted_option =>
			  lists_reverse(R1, TrUserData)}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{goproto_getters_all => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{goproto_enum_prefix_all => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{goproto_stringer_all => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{verbose_equal_all => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{face_all => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{gostring_all => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{populate_all => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{stringer_all => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{onlyone_all => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{equal_all => F@_26}
	  end,
    S28 = if F@_27 == '$undef' -> S27;
	     true -> S27#{description_all => F@_27}
	  end,
    S29 = if F@_28 == '$undef' -> S28;
	     true -> S28#{testgen_all => F@_28}
	  end,
    S30 = if F@_29 == '$undef' -> S29;
	     true -> S29#{benchgen_all => F@_29}
	  end,
    S31 = if F@_30 == '$undef' -> S30;
	     true -> S30#{marshaler_all => F@_30}
	  end,
    S32 = if F@_31 == '$undef' -> S31;
	     true -> S31#{unmarshaler_all => F@_31}
	  end,
    S33 = if F@_32 == '$undef' -> S32;
	     true -> S32#{stable_marshaler_all => F@_32}
	  end,
    S34 = if F@_33 == '$undef' -> S33;
	     true -> S33#{sizer_all => F@_33}
	  end,
    S35 = if F@_34 == '$undef' -> S34;
	     true -> S34#{goproto_enum_stringer_all => F@_34}
	  end,
    S36 = if F@_35 == '$undef' -> S35;
	     true -> S35#{enum_stringer_all => F@_35}
	  end,
    S37 = if F@_36 == '$undef' -> S36;
	     true -> S36#{unsafe_marshaler_all => F@_36}
	  end,
    S38 = if F@_37 == '$undef' -> S37;
	     true -> S37#{unsafe_unmarshaler_all => F@_37}
	  end,
    S39 = if F@_38 == '$undef' -> S38;
	     true -> S38#{goproto_extensions_map_all => F@_38}
	  end,
    S40 = if F@_39 == '$undef' -> S39;
	     true -> S39#{goproto_unrecognized_all => F@_39}
	  end,
    S41 = if F@_40 == '$undef' -> S40;
	     true -> S40#{gogoproto_import => F@_40}
	  end,
    S42 = if F@_41 == '$undef' -> S41;
	     true -> S41#{protosizer_all => F@_41}
	  end,
    if F@_42 == '$undef' -> S42;
       true -> S42#{compare_all => F@_42}
    end;
'dfp_read_field_def_google.protobuf.FileOptions'(Other,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'dg_read_field_def_google.protobuf.FileOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData).

'dg_read_field_def_google.protobuf.FileOptions'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileOptions'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'dg_read_field_def_google.protobuf.FileOptions'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileOptions_java_package'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      66 ->
	  'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      80 ->
	  'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      160 ->
	  'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      F@_6,
									      F@_7,
									      F@_8,
									      F@_9,
									      F@_10,
									      F@_11,
									      F@_12,
									      F@_13,
									      F@_14,
									      F@_15,
									      F@_16,
									      F@_17,
									      F@_18,
									      F@_19,
									      F@_20,
									      F@_21,
									      F@_22,
									      F@_23,
									      F@_24,
									      F@_25,
									      F@_26,
									      F@_27,
									      F@_28,
									      F@_29,
									      F@_30,
									      F@_31,
									      F@_32,
									      F@_33,
									      F@_34,
									      F@_35,
									      F@_36,
									      F@_37,
									      F@_38,
									      F@_39,
									      F@_40,
									      F@_41,
									      F@_42,
									      TrUserData);
      216 ->
	  'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       F@_28,
								       F@_29,
								       F@_30,
								       F@_31,
								       F@_32,
								       F@_33,
								       F@_34,
								       F@_35,
								       F@_36,
								       F@_37,
								       F@_38,
								       F@_39,
								       F@_40,
								       F@_41,
								       F@_42,
								       TrUserData);
      72 ->
	  'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      90 ->
	  'd_field_google.protobuf.FileOptions_go_package'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
      128 ->
	  'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      136 ->
	  'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData);
      144 ->
	  'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      184 ->
	  'd_field_google.protobuf.FileOptions_deprecated'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
      248 ->
	  'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      290 ->
	  'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      298 ->
	  'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      304 ->
	  'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
										0,
										0,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										F@_6,
										F@_7,
										F@_8,
										F@_9,
										F@_10,
										F@_11,
										F@_12,
										F@_13,
										F@_14,
										F@_15,
										F@_16,
										F@_17,
										F@_18,
										F@_19,
										F@_20,
										F@_21,
										F@_22,
										F@_23,
										F@_24,
										F@_25,
										F@_26,
										F@_27,
										F@_28,
										F@_29,
										F@_30,
										F@_31,
										F@_32,
										F@_33,
										F@_34,
										F@_35,
										F@_36,
										F@_37,
										F@_38,
										F@_39,
										F@_40,
										F@_41,
										F@_42,
										TrUserData);
      7994 ->
	  'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504008 ->
	  'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      504016 ->
	  'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
      504024 ->
	  'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504032 ->
	  'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      504040 ->
	  'd_field_google.protobuf.FileOptions_face_all'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27, F@_28,
							 F@_29, F@_30, F@_31,
							 F@_32, F@_33, F@_34,
							 F@_35, F@_36, F@_37,
							 F@_38, F@_39, F@_40,
							 F@_41, F@_42,
							 TrUserData);
      504048 ->
	  'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504056 ->
	  'd_field_google.protobuf.FileOptions_populate_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504064 ->
	  'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504072 ->
	  'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      504104 ->
	  'd_field_google.protobuf.FileOptions_equal_all'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
      504112 ->
	  'd_field_google.protobuf.FileOptions_description_all'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
      504120 ->
	  'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      504128 ->
	  'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504136 ->
	  'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
      504144 ->
	  'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
      504152 ->
	  'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504160 ->
	  'd_field_google.protobuf.FileOptions_sizer_all'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
      504168 ->
	  'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
      504176 ->
	  'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      504184 ->
	  'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504192 ->
	  'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       F@_28,
								       F@_29,
								       F@_30,
								       F@_31,
								       F@_32,
								       F@_33,
								       F@_34,
								       F@_35,
								       F@_36,
								       F@_37,
								       F@_38,
								       F@_39,
								       F@_40,
								       F@_41,
								       F@_42,
								       TrUserData);
      504200 ->
	  'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   F@_13,
									   F@_14,
									   F@_15,
									   F@_16,
									   F@_17,
									   F@_18,
									   F@_19,
									   F@_20,
									   F@_21,
									   F@_22,
									   F@_23,
									   F@_24,
									   F@_25,
									   F@_26,
									   F@_27,
									   F@_28,
									   F@_29,
									   F@_30,
									   F@_31,
									   F@_32,
									   F@_33,
									   F@_34,
									   F@_35,
									   F@_36,
									   F@_37,
									   F@_38,
									   F@_39,
									   F@_40,
									   F@_41,
									   F@_42,
									   TrUserData);
      504208 ->
	  'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 F@_28,
									 F@_29,
									 F@_30,
									 F@_31,
									 F@_32,
									 F@_33,
									 F@_34,
									 F@_35,
									 F@_36,
									 F@_37,
									 F@_38,
									 F@_39,
									 F@_40,
									 F@_41,
									 F@_42,
									 TrUserData);
      504216 ->
	  'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      504224 ->
	  'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27, F@_28,
							       F@_29, F@_30,
							       F@_31, F@_32,
							       F@_33, F@_34,
							       F@_35, F@_36,
							       F@_37, F@_38,
							       F@_39, F@_40,
							       F@_41, F@_42,
							       TrUserData);
      504232 ->
	  'd_field_google.protobuf.FileOptions_compare_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileOptions'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileOptions'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileOptions'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, F@_3, F@_4, F@_5,
							 F@_6, F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 F@_28, F@_29, F@_30,
							 F@_31, F@_32, F@_33,
							 F@_34, F@_35, F@_36,
							 F@_37, F@_38, F@_39,
							 F@_40, F@_41, F@_42,
							 TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileOptions'(<<>>, 0,
						0, F@_1, F@_2, F@_3, F@_4, F@_5,
						F@_6, F@_7, F@_8, F@_9, F@_10,
						F@_11, F@_12, F@_13, F@_14,
						F@_15, R1, F@_17, F@_18, F@_19,
						F@_20, F@_21, F@_22, F@_23,
						F@_24, F@_25, F@_26, F@_27,
						F@_28, F@_29, F@_30, F@_31,
						F@_32, F@_33, F@_34, F@_35,
						F@_36, F@_37, F@_38, F@_39,
						F@_40, F@_41, F@_42,
						TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{java_package => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{java_outer_classname => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{java_multiple_files => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{java_generate_equals_and_hash => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{java_string_check_utf8 => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{optimize_for => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{go_package => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{cc_generic_services => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{java_generic_services => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{py_generic_services => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{deprecated => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{cc_enable_arenas => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{objc_class_prefix => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{csharp_namespace => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{javanano_use_deprecated_package => F@_15}
	  end,
    S17 = if R1 == '$undef' -> S16;
	     true ->
		 S16#{uninterpreted_option =>
			  lists_reverse(R1, TrUserData)}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{goproto_getters_all => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{goproto_enum_prefix_all => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{goproto_stringer_all => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{verbose_equal_all => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{face_all => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{gostring_all => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{populate_all => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{stringer_all => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{onlyone_all => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{equal_all => F@_26}
	  end,
    S28 = if F@_27 == '$undef' -> S27;
	     true -> S27#{description_all => F@_27}
	  end,
    S29 = if F@_28 == '$undef' -> S28;
	     true -> S28#{testgen_all => F@_28}
	  end,
    S30 = if F@_29 == '$undef' -> S29;
	     true -> S29#{benchgen_all => F@_29}
	  end,
    S31 = if F@_30 == '$undef' -> S30;
	     true -> S30#{marshaler_all => F@_30}
	  end,
    S32 = if F@_31 == '$undef' -> S31;
	     true -> S31#{unmarshaler_all => F@_31}
	  end,
    S33 = if F@_32 == '$undef' -> S32;
	     true -> S32#{stable_marshaler_all => F@_32}
	  end,
    S34 = if F@_33 == '$undef' -> S33;
	     true -> S33#{sizer_all => F@_33}
	  end,
    S35 = if F@_34 == '$undef' -> S34;
	     true -> S34#{goproto_enum_stringer_all => F@_34}
	  end,
    S36 = if F@_35 == '$undef' -> S35;
	     true -> S35#{enum_stringer_all => F@_35}
	  end,
    S37 = if F@_36 == '$undef' -> S36;
	     true -> S36#{unsafe_marshaler_all => F@_36}
	  end,
    S38 = if F@_37 == '$undef' -> S37;
	     true -> S37#{unsafe_unmarshaler_all => F@_37}
	  end,
    S39 = if F@_38 == '$undef' -> S38;
	     true -> S38#{goproto_extensions_map_all => F@_38}
	  end,
    S40 = if F@_39 == '$undef' -> S39;
	     true -> S39#{goproto_unrecognized_all => F@_39}
	  end,
    S41 = if F@_40 == '$undef' -> S40;
	     true -> S40#{gogoproto_import => F@_40}
	  end,
    S42 = if F@_41 == '$undef' -> S41;
	     true -> S41#{protosizer_all => F@_41}
	  end,
    if F@_42 == '$undef' -> S42;
       true -> S42#{compare_all => F@_42}
    end.

'd_field_google.protobuf.FileOptions_java_package'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_package'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_java_package'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, F@_28, F@_29,
						   F@_30, F@_31, F@_32, F@_33,
						   F@_34, F@_35, F@_36, F@_37,
						   F@_38, F@_39, F@_40, F@_41,
						   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, NewFValue, F@_2,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_outer_classname'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_java_outer_classname'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, _,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, NewFValue,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_multiple_files'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_java_multiple_files'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2, _,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2,
						     NewFValue, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, _,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     NewFValue, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_string_check_utf8'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 F@_13, F@_14,
								 F@_15, F@_16,
								 F@_17, F@_18,
								 F@_19, F@_20,
								 F@_21, F@_22,
								 F@_23, F@_24,
								 F@_25, F@_26,
								 F@_27, F@_28,
								 F@_29, F@_30,
								 F@_31, F@_32,
								 F@_33, F@_34,
								 F@_35, F@_36,
								 F@_37, F@_38,
								 F@_39, F@_40,
								 F@_41, F@_42,
								 TrUserData);
'd_field_google.protobuf.FileOptions_java_string_check_utf8'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, _,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42,
							     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, NewFValue, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_optimize_for'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_optimize_for'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, _, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FileOptions.OptimizeMode'(begin
								<<Res:32/signed-native>> =
								    <<(X bsl N +
									 Acc):32/unsigned-native>>,
								id(Res,
								   TrUserData)
							      end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, NewFValue,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_go_package'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_go_package'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_go_package'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, _, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     NewFValue, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_cc_generic_services'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_cc_generic_services'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, _, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     NewFValue, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_generic_services'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								F@_19, F@_20,
								F@_21, F@_22,
								F@_23, F@_24,
								F@_25, F@_26,
								F@_27, F@_28,
								F@_29, F@_30,
								F@_31, F@_32,
								F@_33, F@_34,
								F@_35, F@_36,
								F@_37, F@_38,
								F@_39, F@_40,
								F@_41, F@_42,
								TrUserData);
'd_field_google.protobuf.FileOptions_java_generic_services'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8, _,
							    F@_10, F@_11, F@_12,
							    F@_13, F@_14, F@_15,
							    F@_16, F@_17, F@_18,
							    F@_19, F@_20, F@_21,
							    F@_22, F@_23, F@_24,
							    F@_25, F@_26, F@_27,
							    F@_28, F@_29, F@_30,
							    F@_31, F@_32, F@_33,
							    F@_34, F@_35, F@_36,
							    F@_37, F@_38, F@_39,
							    F@_40, F@_41, F@_42,
							    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, NewFValue, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_py_generic_services'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_py_generic_services'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, _, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, NewFValue,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_deprecated'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_deprecated'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_deprecated'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, _, F@_12, F@_13, F@_14,
						 F@_15, F@_16, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, F@_28, F@_29, F@_30,
						 F@_31, F@_32, F@_33, F@_34,
						 F@_35, F@_36, F@_37, F@_38,
						 F@_39, F@_40, F@_41, F@_42,
						 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     NewFValue, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_cc_enable_arenas'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_cc_enable_arenas'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       _, F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       F@_19, F@_20, F@_21,
						       F@_22, F@_23, F@_24,
						       F@_25, F@_26, F@_27,
						       F@_28, F@_29, F@_30,
						       F@_31, F@_32, F@_33,
						       F@_34, F@_35, F@_36,
						       F@_37, F@_38, F@_39,
						       F@_40, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     NewFValue, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_objc_class_prefix'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_objc_class_prefix'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, _, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, NewFValue, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_csharp_namespace'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_csharp_namespace'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, _, F@_15,
						       F@_16, F@_17, F@_18,
						       F@_19, F@_20, F@_21,
						       F@_22, F@_23, F@_24,
						       F@_25, F@_26, F@_27,
						       F@_28, F@_29, F@_30,
						       F@_31, F@_32, F@_33,
						       F@_34, F@_35, F@_36,
						       F@_37, F@_38, F@_39,
						       F@_40, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, NewFValue,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(<<1:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
									  N + 7,
									  X bsl
									    N
									    +
									    Acc,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(<<0:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14, _,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14,
						     NewFValue, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_uninterpreted_option'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_uninterpreted_option'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, Prev, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     cons(NewFValue, Prev,
							  TrUserData),
						     F@_17, F@_18, F@_19, F@_20,
						     F@_21, F@_22, F@_23, F@_24,
						     F@_25, F@_26, F@_27, F@_28,
						     F@_29, F@_30, F@_31, F@_32,
						     F@_33, F@_34, F@_35, F@_36,
						     F@_37, F@_38, F@_39, F@_40,
						     F@_41, F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_goproto_getters_all'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_goproto_getters_all'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, _,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, NewFValue, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27, F@_28,
								  F@_29, F@_30,
								  F@_31, F@_32,
								  F@_33, F@_34,
								  F@_35, F@_36,
								  F@_37, F@_38,
								  F@_39, F@_40,
								  F@_41, F@_42,
								  TrUserData);
'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, _, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, NewFValue,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_stringer_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_goproto_stringer_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, _, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     NewFValue, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_verbose_equal_all'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_verbose_equal_all'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19, _,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     NewFValue, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_face_all'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, F@_28, F@_29,
					       F@_30, F@_31, F@_32, F@_33,
					       F@_34, F@_35, F@_36, F@_37,
					       F@_38, F@_39, F@_40, F@_41,
					       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_face_all'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, F@_28, F@_29, F@_30,
						   F@_31, F@_32, F@_33, F@_34,
						   F@_35, F@_36, F@_37, F@_38,
						   F@_39, F@_40, F@_41, F@_42,
						   TrUserData);
'd_field_google.protobuf.FileOptions_face_all'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, _, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, F@_28, F@_29, F@_30,
					       F@_31, F@_32, F@_33, F@_34,
					       F@_35, F@_36, F@_37, F@_38,
					       F@_39, F@_40, F@_41, F@_42,
					       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, NewFValue, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_gostring_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_gostring_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, _, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, NewFValue,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_populate_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_populate_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_populate_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, _, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22,
						     NewFValue, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_stringer_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_stringer_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, _,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     NewFValue, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_onlyone_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_onlyone_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24, _,
						  F@_26, F@_27, F@_28, F@_29,
						  F@_30, F@_31, F@_32, F@_33,
						  F@_34, F@_35, F@_36, F@_37,
						  F@_38, F@_39, F@_40, F@_41,
						  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, NewFValue, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_equal_all'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_equal_all'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_equal_all'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25, _,
						F@_27, F@_28, F@_29, F@_30,
						F@_31, F@_32, F@_33, F@_34,
						F@_35, F@_36, F@_37, F@_38,
						F@_39, F@_40, F@_41, F@_42,
						TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, NewFValue,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_description_all'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_description_all'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
'd_field_google.protobuf.FileOptions_description_all'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26, _,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26,
						     NewFValue, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_testgen_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_testgen_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, _, F@_29,
						  F@_30, F@_31, F@_32, F@_33,
						  F@_34, F@_35, F@_36, F@_37,
						  F@_38, F@_39, F@_40, F@_41,
						  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     NewFValue, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_benchgen_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_benchgen_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   _, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, NewFValue, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_marshaler_all'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_marshaler_all'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, _, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, NewFValue,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_unmarshaler_all'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
'd_field_google.protobuf.FileOptions_unmarshaler_all'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, _, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30,
						     NewFValue, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_stable_marshaler_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_stable_marshaler_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, _,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     NewFValue, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_sizer_all'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_sizer_all'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_sizer_all'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, _, F@_34,
						F@_35, F@_36, F@_37, F@_38,
						F@_39, F@_40, F@_41, F@_42,
						TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, NewFValue, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33, _,
								F@_35, F@_36,
								F@_37, F@_38,
								F@_39, F@_40,
								F@_41, F@_42,
								TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, NewFValue,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_enum_stringer_all'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_enum_stringer_all'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34, _,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34,
						     NewFValue, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   _, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     NewFValue, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 F@_13, F@_14,
								 F@_15, F@_16,
								 F@_17, F@_18,
								 F@_19, F@_20,
								 F@_21, F@_22,
								 F@_23, F@_24,
								 F@_25, F@_26,
								 F@_27, F@_28,
								 F@_29, F@_30,
								 F@_31, F@_32,
								 F@_33, F@_34,
								 F@_35, F@_36,
								 F@_37, F@_38,
								 F@_39, F@_40,
								 F@_41, F@_42,
								 TrUserData);
'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, _, F@_38,
							     F@_39, F@_40,
							     F@_41, F@_42,
							     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, NewFValue, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 _, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, NewFValue,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   F@_13, F@_14,
								   F@_15, F@_16,
								   F@_17, F@_18,
								   F@_19, F@_20,
								   F@_21, F@_22,
								   F@_23, F@_24,
								   F@_25, F@_26,
								   F@_27, F@_28,
								   F@_29, F@_30,
								   F@_31, F@_32,
								   F@_33, F@_34,
								   F@_35, F@_36,
								   F@_37, F@_38,
								   F@_39, F@_40,
								   F@_41, F@_42,
								   TrUserData);
'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, _, F@_40,
							       F@_41, F@_42,
							       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38,
						     NewFValue, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_gogoproto_import'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_gogoproto_import'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, _, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     NewFValue, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_protosizer_all'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, F@_28, F@_29,
							 F@_30, F@_31, F@_32,
							 F@_33, F@_34, F@_35,
							 F@_36, F@_37, F@_38,
							 F@_39, F@_40, F@_41,
							 F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_protosizer_all'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, _, F@_42,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, NewFValue, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_compare_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_compare_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_compare_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, NewFValue,
						     TrUserData).

'skip_varint_google.protobuf.FileOptions'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, F@_14, F@_15, F@_16,
					  F@_17, F@_18, F@_19, F@_20, F@_21,
					  F@_22, F@_23, F@_24, F@_25, F@_26,
					  F@_27, F@_28, F@_29, F@_30, F@_31,
					  F@_32, F@_33, F@_34, F@_35, F@_36,
					  F@_37, F@_38, F@_39, F@_40, F@_41,
					  F@_42, TrUserData) ->
    'skip_varint_google.protobuf.FileOptions'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18, F@_19, F@_20,
					      F@_21, F@_22, F@_23, F@_24, F@_25,
					      F@_26, F@_27, F@_28, F@_29, F@_30,
					      F@_31, F@_32, F@_33, F@_34, F@_35,
					      F@_36, F@_37, F@_38, F@_39, F@_40,
					      F@_41, F@_42, TrUserData);
'skip_varint_google.protobuf.FileOptions'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, F@_14, F@_15, F@_16,
					  F@_17, F@_18, F@_19, F@_20, F@_21,
					  F@_22, F@_23, F@_24, F@_25, F@_26,
					  F@_27, F@_28, F@_29, F@_30, F@_31,
					  F@_32, F@_33, F@_34, F@_35, F@_36,
					  F@_37, F@_38, F@_39, F@_40, F@_41,
					  F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_length_delimited_google.protobuf.FileOptions'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileOptions'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData);
'skip_length_delimited_google.protobuf.FileOptions'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest2,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_group_google.protobuf.FileOptions'(Bin, FNum, Z2,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					 F@_13, F@_14, F@_15, F@_16, F@_17,
					 F@_18, F@_19, F@_20, F@_21, F@_22,
					 F@_23, F@_24, F@_25, F@_26, F@_27,
					 F@_28, F@_29, F@_30, F@_31, F@_32,
					 F@_33, F@_34, F@_35, F@_36, F@_37,
					 F@_38, F@_39, F@_40, F@_41, F@_42,
					 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     0, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_32_google.protobuf.FileOptions'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				      F@_18, F@_19, F@_20, F@_21, F@_22, F@_23,
				      F@_24, F@_25, F@_26, F@_27, F@_28, F@_29,
				      F@_30, F@_31, F@_32, F@_33, F@_34, F@_35,
				      F@_36, F@_37, F@_38, F@_39, F@_40, F@_41,
				      F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_64_google.protobuf.FileOptions'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				      F@_18, F@_19, F@_20, F@_21, F@_22, F@_23,
				      F@_24, F@_25, F@_26, F@_27, F@_28, F@_29,
				      F@_30, F@_31, F@_32, F@_33, F@_34, F@_35,
				      F@_36, F@_37, F@_38, F@_39, F@_40, F@_41,
				      F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'decode_msg_google.protobuf.MessageOptions'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Bin,
							0, 0,
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id([], TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.MessageOptions'(<<8,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<16,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
									     Z1,
									     Z2,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     F@_11,
									     F@_12,
									     F@_13,
									     F@_14,
									     F@_15,
									     F@_16,
									     F@_17,
									     F@_18,
									     F@_19,
									     F@_20,
									     F@_21,
									     F@_22,
									     F@_23,
									     F@_24,
									     F@_25,
									     F@_26,
									     F@_27,
									     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<24,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<56,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<186,
						      62, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<136,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<152,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<160,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<168,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_face'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<176,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_gostring'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<184,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_populate'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<128,
						      220, 32, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_stringer'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<200,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<232,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_equal'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<240,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_description'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<248,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_testgen'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<128,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<136,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<144,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<152,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<160,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_sizer'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<184,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<192,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<200,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<208,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<224,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<232,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_compare'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<>>,
						    0, 0, F@_1, F@_2, F@_3,
						    F@_4, R1, F@_6, F@_7, F@_8,
						    F@_9, F@_10, F@_11, F@_12,
						    F@_13, F@_14, F@_15, F@_16,
						    F@_17, F@_18, F@_19, F@_20,
						    F@_21, F@_22, F@_23, F@_24,
						    F@_25, F@_26, F@_27,
						    TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{message_set_wire_format => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{no_standard_descriptor_accessor => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{deprecated => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{map_entry => F@_4}
	 end,
    S6 = if R1 == '$undef' -> S5;
	    true ->
		S5#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{goproto_getters => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{goproto_stringer => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{verbose_equal => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{face => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{gostring => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{populate => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{stringer => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{onlyone => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{equal => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{description => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{testgen => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{benchgen => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{marshaler => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{unmarshaler => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{stable_marshaler => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{sizer => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{unsafe_marshaler => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{unsafe_unmarshaler => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{goproto_extensions_map => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{goproto_unrecognized => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{protosizer => F@_26}
	  end,
    if F@_27 == '$undef' -> S27;
       true -> S27#{compare => F@_27}
    end;
'dfp_read_field_def_google.protobuf.MessageOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'dg_read_field_def_google.protobuf.MessageOptions'(Other,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData).

'dg_read_field_def_google.protobuf.MessageOptions'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MessageOptions'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dg_read_field_def_google.protobuf.MessageOptions'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   F@_13,
									   F@_14,
									   F@_15,
									   F@_16,
									   F@_17,
									   F@_18,
									   F@_19,
									   F@_20,
									   F@_21,
									   F@_22,
									   F@_23,
									   F@_24,
									   F@_25,
									   F@_26,
									   F@_27,
									   TrUserData);
      16 ->
	  'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
										   0,
										   0,
										   F@_1,
										   F@_2,
										   F@_3,
										   F@_4,
										   F@_5,
										   F@_6,
										   F@_7,
										   F@_8,
										   F@_9,
										   F@_10,
										   F@_11,
										   F@_12,
										   F@_13,
										   F@_14,
										   F@_15,
										   F@_16,
										   F@_17,
										   F@_18,
										   F@_19,
										   F@_20,
										   F@_21,
										   F@_22,
										   F@_23,
										   F@_24,
										   F@_25,
										   F@_26,
										   F@_27,
										   TrUserData);
      24 ->
	  'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
      56 ->
	  'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
      7994 ->
	  'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									TrUserData);
      512008 ->
	  'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12, F@_13,
								   F@_14, F@_15,
								   F@_16, F@_17,
								   F@_18, F@_19,
								   F@_20, F@_21,
								   F@_22, F@_23,
								   F@_24, F@_25,
								   F@_26, F@_27,
								   TrUserData);
      512024 ->
	  'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512032 ->
	  'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData);
      512040 ->
	  'd_field_google.protobuf.MessageOptions_face'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
      512048 ->
	  'd_field_google.protobuf.MessageOptions_gostring'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512056 ->
	  'd_field_google.protobuf.MessageOptions_populate'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      536064 ->
	  'd_field_google.protobuf.MessageOptions_stringer'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512072 ->
	  'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      512104 ->
	  'd_field_google.protobuf.MessageOptions_equal'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27,
							 TrUserData);
      512112 ->
	  'd_field_google.protobuf.MessageOptions_description'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27,
							       TrUserData);
      512120 ->
	  'd_field_google.protobuf.MessageOptions_testgen'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      512128 ->
	  'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512136 ->
	  'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
      512144 ->
	  'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27,
							       TrUserData);
      512152 ->
	  'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512160 ->
	  'd_field_google.protobuf.MessageOptions_sizer'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27,
							 TrUserData);
      512184 ->
	  'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512192 ->
	  'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      TrUserData);
      512200 ->
	  'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  TrUserData);
      512208 ->
	  'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									TrUserData);
      512224 ->
	  'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
      512232 ->
	  'd_field_google.protobuf.MessageOptions_compare'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MessageOptions'(Rest, 0, 0,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
	    1 ->
		'skip_64_google.protobuf.MessageOptions'(Rest, 0, 0,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MessageOptions'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.MessageOptions'(Rest,
							    Key bsr 3, 0, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27,
							    TrUserData);
	    5 ->
		'skip_32_google.protobuf.MessageOptions'(Rest, 0, 0,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MessageOptions'(<<>>,
						   0, 0, F@_1, F@_2, F@_3, F@_4,
						   R1, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{message_set_wire_format => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{no_standard_descriptor_accessor => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{deprecated => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{map_entry => F@_4}
	 end,
    S6 = if R1 == '$undef' -> S5;
	    true ->
		S5#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{goproto_getters => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{goproto_stringer => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{verbose_equal => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{face => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{gostring => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{populate => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{stringer => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{onlyone => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{equal => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{description => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{testgen => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{benchgen => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{marshaler => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{unmarshaler => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{stable_marshaler => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{sizer => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{unsafe_marshaler => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{unsafe_unmarshaler => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{goproto_extensions_map => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{goproto_unrecognized => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{protosizer => F@_26}
	  end,
    if F@_27 == '$undef' -> S27;
       true -> S27#{compare => F@_27}
    end.

'd_field_google.protobuf.MessageOptions_message_set_wire_format'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     TrUserData);
'd_field_google.protobuf.MessageOptions_message_set_wire_format'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, _,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, NewFValue, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(<<1:1,
									   X:7,
									   Rest/binary>>,
									 N, Acc,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
									     N +
									       7,
									     X
									       bsl
									       N
									       +
									       Acc,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     F@_11,
									     F@_12,
									     F@_13,
									     F@_14,
									     F@_15,
									     F@_16,
									     F@_17,
									     F@_18,
									     F@_19,
									     F@_20,
									     F@_21,
									     F@_22,
									     F@_23,
									     F@_24,
									     F@_25,
									     F@_26,
									     F@_27,
									     TrUserData);
'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(<<0:1,
									   X:7,
									   Rest/binary>>,
									 N, Acc,
									 F@_1,
									 _,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, NewFValue,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_deprecated'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_deprecated'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, _, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, F@_11, F@_12,
						    F@_13, F@_14, F@_15, F@_16,
						    F@_17, F@_18, F@_19, F@_20,
						    F@_21, F@_22, F@_23, F@_24,
						    F@_25, F@_26, F@_27,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2,
							NewFValue, F@_4, F@_5,
							F@_6, F@_7, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_map_entry'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_map_entry'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3, _,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							NewFValue, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_uninterpreted_option'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27,
								  TrUserData);
'd_field_google.protobuf.MessageOptions_uninterpreted_option'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      Prev, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4,
							cons(NewFValue, Prev,
							     TrUserData),
							F@_6, F@_7, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_getters'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_getters'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, _,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, NewFValue,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_stringer'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_stringer'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, _, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6,
							NewFValue, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_verbose_equal'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   TrUserData);
'd_field_google.protobuf.MessageOptions_verbose_equal'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       _, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							NewFValue, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_face'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18, F@_19,
					      F@_20, F@_21, F@_22, F@_23, F@_24,
					      F@_25, F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_face'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  F@_19, F@_20, F@_21, F@_22,
						  F@_23, F@_24, F@_25, F@_26,
						  F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_face'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, _, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18, F@_19, F@_20,
					      F@_21, F@_22, F@_23, F@_24, F@_25,
					      F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, NewFValue, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_gostring'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_gostring'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_gostring'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, _, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, NewFValue,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_populate'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_populate'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_populate'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, _, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							NewFValue, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_stringer'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_stringer'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_stringer'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, _, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, NewFValue, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_onlyone'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_onlyone'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, _, F@_14,
						 F@_15, F@_16, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, NewFValue,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_equal'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_equal'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_equal'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13, _,
					       F@_15, F@_16, F@_17, F@_18,
					       F@_19, F@_20, F@_21, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							NewFValue, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_description'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_description'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_description'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, _,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, NewFValue, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_testgen'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_testgen'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_testgen'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, _, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, NewFValue,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_benchgen'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_benchgen'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16, _,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							NewFValue, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_marshaler'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_marshaler'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, _, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, NewFValue, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unmarshaler'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_unmarshaler'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, _,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, NewFValue,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_stable_marshaler'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_stable_marshaler'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, _,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							NewFValue, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_sizer'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_sizer'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_sizer'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, _, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, NewFValue, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, _, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, NewFValue,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								F@_19, F@_20,
								F@_21, F@_22,
								F@_23, F@_24,
								F@_25, F@_26,
								F@_27,
								TrUserData);
'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, _,
							    F@_24, F@_25, F@_26,
							    F@_27,
							    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							NewFValue, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23, _,
								F@_25, F@_26,
								F@_27,
								TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, NewFValue, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27,
								  TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24, _,
							      F@_26, F@_27,
							      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, NewFValue,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_protosizer'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_protosizer'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, _, F@_27,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							NewFValue, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_compare'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_compare'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_compare'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, NewFValue,
							TrUserData).

'skip_varint_google.protobuf.MessageOptions'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18, F@_19,
					     F@_20, F@_21, F@_22, F@_23, F@_24,
					     F@_25, F@_26, F@_27, TrUserData) ->
    'skip_varint_google.protobuf.MessageOptions'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData);
'skip_varint_google.protobuf.MessageOptions'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18, F@_19,
					     F@_20, F@_21, F@_22, F@_23, F@_24,
					     F@_25, F@_26, F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_length_delimited_google.protobuf.MessageOptions'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MessageOptions'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   TrUserData);
'skip_length_delimited_google.protobuf.MessageOptions'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest2,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_group_google.protobuf.MessageOptions'(Bin, FNum,
					    Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					    F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, F@_19, F@_20,
					    F@_21, F@_22, F@_23, F@_24, F@_25,
					    F@_26, F@_27, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							0, Z2, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_32_google.protobuf.MessageOptions'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, F@_14, F@_15, F@_16,
					 F@_17, F@_18, F@_19, F@_20, F@_21,
					 F@_22, F@_23, F@_24, F@_25, F@_26,
					 F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_64_google.protobuf.MessageOptions'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, F@_14, F@_15, F@_16,
					 F@_17, F@_18, F@_19, F@_20, F@_21,
					 F@_22, F@_23, F@_24, F@_25, F@_26,
					 F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'decode_msg_google.protobuf.FieldOptions'(Bin,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Bin,
						      0, 0,
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id([], TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      TrUserData).

'dfp_read_field_def_google.protobuf.FieldOptions'(<<8,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_ctype'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<16,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_packed'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<48,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_jstype'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<40,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_lazy'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<24,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<80,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_weak'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<186,
						    62, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18,
								TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<200,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_nullable'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<208,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_embed'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<218,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_customtype'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<226,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_customname'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<234,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_jsontag'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<242,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_moretags'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<250,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_casttype'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<130,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_castkey'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<138,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<144,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_stdtime'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<152,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<>>,
						  0, 0, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, R1, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{ctype => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{packed => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{jstype => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{lazy => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{deprecated => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{weak => F@_6}
	 end,
    S8 = if R1 == '$undef' -> S7;
	    true ->
		S7#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{nullable => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{embed => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{customtype => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{customname => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{jsontag => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{moretags => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{casttype => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{castkey => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{castvalue => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{stdtime => F@_17}
	  end,
    if F@_18 == '$undef' -> S18;
       true -> S18#{stdduration => F@_18}
    end;
'dfp_read_field_def_google.protobuf.FieldOptions'(Other,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'dg_read_field_def_google.protobuf.FieldOptions'(Other,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData).

'dg_read_field_def_google.protobuf.FieldOptions'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FieldOptions'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, TrUserData);
'dg_read_field_def_google.protobuf.FieldOptions'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.FieldOptions_ctype'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
      16 ->
	  'd_field_google.protobuf.FieldOptions_packed'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18,
							TrUserData);
      48 ->
	  'd_field_google.protobuf.FieldOptions_jstype'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18,
							TrUserData);
      40 ->
	  'd_field_google.protobuf.FieldOptions_lazy'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
      24 ->
	  'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      80 ->
	  'd_field_google.protobuf.FieldOptions_weak'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
      7994 ->
	  'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      TrUserData);
      520008 ->
	  'd_field_google.protobuf.FieldOptions_nullable'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520016 ->
	  'd_field_google.protobuf.FieldOptions_embed'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
      520026 ->
	  'd_field_google.protobuf.FieldOptions_customtype'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      520034 ->
	  'd_field_google.protobuf.FieldOptions_customname'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      520042 ->
	  'd_field_google.protobuf.FieldOptions_jsontag'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520050 ->
	  'd_field_google.protobuf.FieldOptions_moretags'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520058 ->
	  'd_field_google.protobuf.FieldOptions_casttype'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520066 ->
	  'd_field_google.protobuf.FieldOptions_castkey'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520074 ->
	  'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, TrUserData);
      520080 ->
	  'd_field_google.protobuf.FieldOptions_stdtime'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520088 ->
	  'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FieldOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   TrUserData);
	    1 ->
		'skip_64_google.protobuf.FieldOptions'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       F@_6, F@_7, F@_8, F@_9,
						       F@_10, F@_11, F@_12,
						       F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FieldOptions'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     TrUserData);
	    3 ->
		'skip_group_google.protobuf.FieldOptions'(Rest,
							  Key bsr 3, 0, F@_1,
							  F@_2, F@_3, F@_4,
							  F@_5, F@_6, F@_7,
							  F@_8, F@_9, F@_10,
							  F@_11, F@_12, F@_13,
							  F@_14, F@_15, F@_16,
							  F@_17, F@_18,
							  TrUserData);
	    5 ->
		'skip_32_google.protobuf.FieldOptions'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       F@_6, F@_7, F@_8, F@_9,
						       F@_10, F@_11, F@_12,
						       F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FieldOptions'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, R1, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{ctype => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{packed => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{jstype => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{lazy => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{deprecated => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{weak => F@_6}
	 end,
    S8 = if R1 == '$undef' -> S7;
	    true ->
		S7#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{nullable => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{embed => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{customtype => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{customname => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{jsontag => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{moretags => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{casttype => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{castkey => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{castvalue => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{stdtime => F@_17}
	  end,
    if F@_18 == '$undef' -> S18;
       true -> S18#{stdduration => F@_18}
    end.

'd_field_google.protobuf.FieldOptions_ctype'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18,
					     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_ctype'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, F@_14, F@_15,
						 F@_16, F@_17, F@_18,
						 TrUserData);
'd_field_google.protobuf.FieldOptions_ctype'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, _, F@_2, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     F@_11, F@_12, F@_13, F@_14, F@_15,
					     F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldOptions.CType'(begin
							  <<Res:32/signed-native>> =
							      <<(X bsl N +
								   Acc):32/unsigned-native>>,
							  id(Res, TrUserData)
							end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, NewFValue, F@_2,
						      F@_3, F@_4, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_packed'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18,
					      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_packed'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  TrUserData);
'd_field_google.protobuf.FieldOptions_packed'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, _, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18,
					      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, NewFValue,
						      F@_3, F@_4, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_jstype'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18,
					      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_jstype'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  TrUserData);
'd_field_google.protobuf.FieldOptions_jstype'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, _, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18,
					      TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldOptions.JSType'(begin
							   <<Res:32/signed-native>> =
							       <<(X bsl N +
								    Acc):32/unsigned-native>>,
							   id(Res, TrUserData)
							 end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2,
						      NewFValue, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData).

'd_field_google.protobuf.FieldOptions_lazy'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_lazy'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						F@_9, F@_10, F@_11, F@_12,
						F@_13, F@_14, F@_15, F@_16,
						F@_17, F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_lazy'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, _, F@_5,
					    F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      NewFValue, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_deprecated'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_deprecated'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, _, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, NewFValue, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_weak'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_weak'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						F@_9, F@_10, F@_11, F@_12,
						F@_13, F@_14, F@_15, F@_16,
						F@_17, F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_weak'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, _, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, NewFValue,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_uninterpreted_option'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								TrUserData);
'd_field_google.protobuf.FieldOptions_uninterpreted_option'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, Prev, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18,
							    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6,
						      cons(NewFValue, Prev,
							   TrUserData),
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_nullable'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_nullable'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_nullable'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, _, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      NewFValue, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_embed'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18,
					     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_embed'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, F@_14, F@_15,
						 F@_16, F@_17, F@_18,
						 TrUserData);
'd_field_google.protobuf.FieldOptions_embed'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, _, F@_10,
					     F@_11, F@_12, F@_13, F@_14, F@_15,
					     F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, NewFValue, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_customtype'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_customtype'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_customtype'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, _, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, NewFValue,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_customname'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_customname'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_customname'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, _, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      NewFValue, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_jsontag'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_jsontag'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_jsontag'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, _, F@_13, F@_14,
					       F@_15, F@_16, F@_17, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      NewFValue, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_moretags'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_moretags'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_moretags'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, _, F@_14,
						F@_15, F@_16, F@_17, F@_18,
						TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, NewFValue, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_casttype'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_casttype'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_casttype'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13, _,
						F@_15, F@_16, F@_17, F@_18,
						TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, NewFValue,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_castkey'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_castkey'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_castkey'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, _, F@_16, F@_17, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      NewFValue, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_castvalue'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_castvalue'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, _, F@_17, F@_18,
						 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, NewFValue, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_stdtime'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_stdtime'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_stdtime'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, _, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, NewFValue,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_stdduration'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_stdduration'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      NewFValue, TrUserData).

'skip_varint_google.protobuf.FieldOptions'(<<1:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, F@_14, F@_15, F@_16,
					   F@_17, F@_18, TrUserData) ->
    'skip_varint_google.protobuf.FieldOptions'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, F@_9, F@_10,
					       F@_11, F@_12, F@_13, F@_14,
					       F@_15, F@_16, F@_17, F@_18,
					       TrUserData);
'skip_varint_google.protobuf.FieldOptions'(<<0:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, F@_14, F@_15, F@_16,
					   F@_17, F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_length_delimited_google.protobuf.FieldOptions'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FieldOptions'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, TrUserData);
'skip_length_delimited_google.protobuf.FieldOptions'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest2,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_group_google.protobuf.FieldOptions'(Bin, FNum, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					  F@_13, F@_14, F@_15, F@_16, F@_17,
					  F@_18, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      0, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_32_google.protobuf.FieldOptions'(<<_:32,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				       F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_64_google.protobuf.FieldOptions'(<<_:64,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				       F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'decode_msg_google.protobuf.EnumOptions'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id([], TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_google.protobuf.EnumOptions'(<<16,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<24,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<186,
						   62, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<136,
						   163, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<168,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<176,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<186,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7,
							  TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<>>,
						 0, 0, F@_1, F@_2, R1, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{allow_alias => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{deprecated => F@_2}
	 end,
    S4 = if R1 == '$undef' -> S3;
	    true ->
		S3#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{goproto_enum_prefix => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{goproto_enum_stringer => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{enum_stringer => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{enum_customname => F@_7}
    end;
'dfp_read_field_def_google.protobuf.EnumOptions'(Other,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData).

'dg_read_field_def_google.protobuf.EnumOptions'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumOptions'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, TrUserData);
'dg_read_field_def_google.protobuf.EnumOptions'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      16 ->
	  'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData);
      24 ->
	  'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData);
      7994 ->
	  'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      496008 ->
	  'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    TrUserData);
      496168 ->
	  'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      TrUserData);
      496176 ->
	  'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData);
      496186 ->
	  'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumOptions'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumOptions'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumOptions'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, F@_3, F@_4, F@_5,
							 F@_6, F@_7,
							 TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumOptions'(<<>>, 0,
						0, F@_1, F@_2, R1, F@_4, F@_5,
						F@_6, F@_7, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{allow_alias => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{deprecated => F@_2}
	 end,
    S4 = if R1 == '$undef' -> S3;
	    true ->
		S3#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{goproto_enum_prefix => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{goproto_enum_stringer => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{enum_stringer => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{enum_customname => F@_7}
    end.

'd_field_google.protobuf.EnumOptions_allow_alias'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7,
						      TrUserData);
'd_field_google.protobuf.EnumOptions_allow_alias'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, _, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7,
						  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, NewFValue, F@_2,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_deprecated'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_deprecated'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, _, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, NewFValue,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_uninterpreted_option'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7,
							       TrUserData);
'd_field_google.protobuf.EnumOptions_uninterpreted_option'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   Prev, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2,
						     cons(NewFValue, Prev,
							  TrUserData),
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7,
							  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, _, F@_5, F@_6,
							  F@_7, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     NewFValue, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7,
								TrUserData);
'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, _, F@_6,
							    F@_7, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, NewFValue, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_enum_stringer'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7,
							TrUserData);
'd_field_google.protobuf.EnumOptions_enum_stringer'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, _, F@_7,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, NewFValue,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_enum_customname'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_enum_customname'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, _,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     NewFValue, TrUserData).

'skip_varint_google.protobuf.EnumOptions'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, TrUserData) ->
    'skip_varint_google.protobuf.EnumOptions'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, TrUserData);
'skip_varint_google.protobuf.EnumOptions'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_length_delimited_google.protobuf.EnumOptions'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumOptions'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7,
							TrUserData);
'skip_length_delimited_google.protobuf.EnumOptions'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest2,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_group_google.protobuf.EnumOptions'(Bin, FNum, Z2,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     0, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_32_google.protobuf.EnumOptions'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_64_google.protobuf.EnumOptions'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'decode_msg_google.protobuf.EnumValueOptions'(Bin,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Bin,
							  0, 0,
							  id('$undef',
							     TrUserData),
							  id([], TrUserData),
							  id('$undef',
							     TrUserData),
							  TrUserData).

'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<8,
							Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<186,
							62, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<138,
							157, 32, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<>>,
						      0, 0, F@_1, R1, F@_3,
						      TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true ->
		S2#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{enumvalue_customname => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumValueOptions'(Other,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumValueOptions'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData).

'dg_read_field_def_google.protobuf.EnumValueOptions'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3,
							 TrUserData);
'dg_read_field_def_google.protobuf.EnumValueOptions'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      7994 ->
	  'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  TrUserData);
      528010 ->
	  'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumValueOptions'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3,
							       TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumValueOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumValueOptions'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumValueOptions'(Rest,
							      Key bsr 3, 0,
							      F@_1, F@_2, F@_3,
							      TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumValueOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumValueOptions'(<<>>,
						     0, 0, F@_1, R1, F@_3,
						     TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true ->
		S2#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{enumvalue_customname => F@_3}
    end.

'd_field_google.protobuf.EnumValueOptions_deprecated'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.EnumValueOptions_deprecated'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, _, F@_2, F@_3,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, NewFValue, F@_2,
							  F@_3, TrUserData).

'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								Prev, F@_3,
								TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, F@_1,
							  cons(NewFValue, Prev,
							       TrUserData),
							  F@_3, TrUserData).

'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, _,
								TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, F@_1, F@_2,
							  NewFValue,
							  TrUserData).

'skip_varint_google.protobuf.EnumValueOptions'(<<1:1,
						 _:7, Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'skip_varint_google.protobuf.EnumValueOptions'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3,
						   TrUserData);
'skip_varint_google.protobuf.EnumValueOptions'(<<0:1,
						 _:7, Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_length_delimited_google.protobuf.EnumValueOptions'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumValueOptions'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'skip_length_delimited_google.protobuf.EnumValueOptions'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest2,
							  0, 0, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_group_google.protobuf.EnumValueOptions'(Bin, FNum,
					      Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  0, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_32_google.protobuf.EnumValueOptions'(<<_:32,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_64_google.protobuf.EnumValueOptions'(<<_:64,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'decode_msg_google.protobuf.ServiceOptions'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Bin,
							0, 0,
							id('$undef',
							   TrUserData),
							id([], TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.ServiceOptions'(<<136,
						      2, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData);
'dfp_read_field_def_google.protobuf.ServiceOptions'(<<186,
						      62, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData);
'dfp_read_field_def_google.protobuf.ServiceOptions'(<<>>,
						    0, 0, F@_1, R1,
						    TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.ServiceOptions'(Other,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'dg_read_field_def_google.protobuf.ServiceOptions'(Other,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'dg_read_field_def_google.protobuf.ServiceOptions'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.ServiceOptions'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'dg_read_field_def_google.protobuf.ServiceOptions'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      264 ->
	  'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							      0, 0, F@_1, F@_2,
							      TrUserData);
      7994 ->
	  'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.ServiceOptions'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    1 ->
		'skip_64_google.protobuf.ServiceOptions'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.ServiceOptions'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.ServiceOptions'(Rest,
							    Key bsr 3, 0, F@_1,
							    F@_2, TrUserData);
	    5 ->
		'skip_32_google.protobuf.ServiceOptions'(Rest, 0, 0,
							 F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.ServiceOptions'(<<>>,
						   0, 0, F@_1, R1,
						   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.ServiceOptions_deprecated'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, TrUserData);
'd_field_google.protobuf.ServiceOptions_deprecated'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, F@_2,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.ServiceOptions'(RestF,
							0, 0, NewFValue, F@_2,
							TrUserData).

'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  TrUserData);
'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      Prev,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceOptions'(RestF,
							0, 0, F@_1,
							cons(NewFValue, Prev,
							     TrUserData),
							TrUserData).

'skip_varint_google.protobuf.ServiceOptions'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_google.protobuf.ServiceOptions'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'skip_varint_google.protobuf.ServiceOptions'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_length_delimited_google.protobuf.ServiceOptions'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.ServiceOptions'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2,
							   TrUserData);
'skip_length_delimited_google.protobuf.ServiceOptions'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest2,
							0, 0, F@_1, F@_2,
							TrUserData).

'skip_group_google.protobuf.ServiceOptions'(Bin, FNum,
					    Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							0, Z2, F@_1, F@_2,
							TrUserData).

'skip_32_google.protobuf.ServiceOptions'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_64_google.protobuf.ServiceOptions'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'decode_msg_google.protobuf.MethodOptions'(Bin,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Bin,
						       0, 0,
						       id('$undef', TrUserData),
						       id([], TrUserData),
						       TrUserData).

'dfp_read_field_def_google.protobuf.MethodOptions'(<<136,
						     2, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData);
'dfp_read_field_def_google.protobuf.MethodOptions'(<<186,
						     62, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'dfp_read_field_def_google.protobuf.MethodOptions'(<<>>,
						   0, 0, F@_1, R1,
						   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.MethodOptions'(Other,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'dg_read_field_def_google.protobuf.MethodOptions'(Other,
						      Z1, Z2, F@_1, F@_2,
						      TrUserData).

'dg_read_field_def_google.protobuf.MethodOptions'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MethodOptions'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'dg_read_field_def_google.protobuf.MethodOptions'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      264 ->
	  'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
							     0, 0, F@_1, F@_2,
							     TrUserData);
      7994 ->
	  'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MethodOptions'(Rest, 0, 0,
							    F@_1, F@_2,
							    TrUserData);
	    1 ->
		'skip_64_google.protobuf.MethodOptions'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MethodOptions'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData);
	    3 ->
		'skip_group_google.protobuf.MethodOptions'(Rest,
							   Key bsr 3, 0, F@_1,
							   F@_2, TrUserData);
	    5 ->
		'skip_32_google.protobuf.MethodOptions'(Rest, 0, 0,
							F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MethodOptions'(<<>>,
						  0, 0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.MethodOptions_deprecated'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'd_field_google.protobuf.MethodOptions_deprecated'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2,
						   TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodOptions'(RestF,
						       0, 0, NewFValue, F@_2,
						       TrUserData).

'd_field_google.protobuf.MethodOptions_uninterpreted_option'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 TrUserData);
'd_field_google.protobuf.MethodOptions_uninterpreted_option'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, Prev,
							     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodOptions'(RestF,
						       0, 0, F@_1,
						       cons(NewFValue, Prev,
							    TrUserData),
						       TrUserData).

'skip_varint_google.protobuf.MethodOptions'(<<1:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_google.protobuf.MethodOptions'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'skip_varint_google.protobuf.MethodOptions'(<<0:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_length_delimited_google.protobuf.MethodOptions'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MethodOptions'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2,
							  TrUserData);
'skip_length_delimited_google.protobuf.MethodOptions'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest2,
						       0, 0, F@_1, F@_2,
						       TrUserData).

'skip_group_google.protobuf.MethodOptions'(Bin, FNum,
					   Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       0, Z2, F@_1, F@_2,
						       TrUserData).

'skip_32_google.protobuf.MethodOptions'(<<_:32,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_64_google.protobuf.MethodOptions'(<<_:64,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bin,
							  TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Bin,
								      0, 0,
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      TrUserData).

'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<10,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<16,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<>>,
								  0, 0, F@_1,
								  F@_2, _) ->
    #{name_part => F@_1, is_extension => F@_2};
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Other,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Other,
								     Z1, Z2,
								     F@_1, F@_2,
								     TrUserData).

'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     TrUserData);
'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   TrUserData);
      16 ->
	  'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.UninterpretedOption.NamePart'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   TrUserData);
	    1 ->
		'skip_64_google.protobuf.UninterpretedOption.NamePart'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(Rest,
										     0,
										     0,
										     F@_1,
										     F@_2,
										     TrUserData);
	    3 ->
		'skip_group_google.protobuf.UninterpretedOption.NamePart'(Rest,
									  Key
									    bsr
									    3,
									  0,
									  F@_1,
									  F@_2,
									  TrUserData);
	    5 ->
		'skip_32_google.protobuf.UninterpretedOption.NamePart'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<>>,
								 0, 0, F@_1,
								 F@_2, _) ->
    #{name_part => F@_1, is_extension => F@_2}.

'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, _,
								 F@_2,
								 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(RestF,
								      0, 0,
								      NewFValue,
								      F@_2,
								      TrUserData).

'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									TrUserData);
'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, _,
								    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(RestF,
								      0, 0,
								      F@_1,
								      NewFValue,
								      TrUserData).

'skip_varint_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   TrUserData) ->
    'skip_varint_google.protobuf.UninterpretedOption.NamePart'(Rest,
							       Z1, Z2, F@_1,
							       F@_2,
							       TrUserData);
'skip_varint_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 F@_1,
									 F@_2,
									 TrUserData);
'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest2,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_group_google.protobuf.UninterpretedOption.NamePart'(Bin,
							  FNum, Z2, F@_1, F@_2,
							  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      0, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_32_google.protobuf.UninterpretedOption.NamePart'(<<_:32,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_64_google.protobuf.UninterpretedOption.NamePart'(<<_:64,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'decode_msg_google.protobuf.UninterpretedOption'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Bin,
							     0, 0,
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<32,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<40,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<49,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_double_value'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<58,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<66,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<>>,
							 0, 0, R1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{name => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{identifier_value => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{positive_int_value => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{negative_int_value => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{double_value => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{string_value => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{aggregate_value => F@_7}
    end;
'dfp_read_field_def_google.protobuf.UninterpretedOption'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'dg_read_field_def_google.protobuf.UninterpretedOption'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData).

'dg_read_field_def_google.protobuf.UninterpretedOption'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    TrUserData);
'dg_read_field_def_google.protobuf.UninterpretedOption'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      18 ->
	  'd_field_google.protobuf.UninterpretedOption_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData);
      26 ->
	  'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 TrUserData);
      32 ->
	  'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   TrUserData);
      40 ->
	  'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   TrUserData);
      49 ->
	  'd_field_google.protobuf.UninterpretedOption_double_value'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      58 ->
	  'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      66 ->
	  'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.UninterpretedOption'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.UninterpretedOption'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.UninterpretedOption'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    F@_6,
									    F@_7,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.UninterpretedOption'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.UninterpretedOption'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.UninterpretedOption'(<<>>,
							0, 0, R1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{name => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{identifier_value => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{positive_int_value => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{negative_int_value => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{double_value => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{string_value => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{aggregate_value => F@_7}
    end.

'd_field_google.protobuf.UninterpretedOption_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7,
						       TrUserData);
'd_field_google.protobuf.UninterpretedOption_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, Prev, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bs,
											 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_identifier_value'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7,
								   TrUserData);
'd_field_google.protobuf.UninterpretedOption_identifier_value'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1, _,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7,
							       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1,
							     NewFValue, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, TrUserData).

'd_field_google.protobuf.UninterpretedOption_positive_int_value'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption_positive_int_value'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, _, F@_4,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     NewFValue, F@_4,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_negative_int_value'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption_negative_int_value'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3, _,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, NewFValue,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_double_value'(<<0:48,
							     240, 127,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(infinity,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<0:48,
							     240, 255,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id('-infinity',
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<_:48,
							     15:4, _:4, _:1,
							     127:7,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(nan,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<Value:64/little-float,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(Value,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_string_value'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7,
							       TrUserData);
'd_field_google.protobuf.UninterpretedOption_string_value'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5, _,
							   F@_7, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     NewFValue, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_aggregate_value'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7,
								  TrUserData);
'd_field_google.protobuf.UninterpretedOption_aggregate_value'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, _,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, NewFValue,
							     TrUserData).

'skip_varint_google.protobuf.UninterpretedOption'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData) ->
    'skip_varint_google.protobuf.UninterpretedOption'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData);
'skip_varint_google.protobuf.UninterpretedOption'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_length_delimited_google.protobuf.UninterpretedOption'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.UninterpretedOption'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7,
								TrUserData);
'skip_length_delimited_google.protobuf.UninterpretedOption'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_group_google.protobuf.UninterpretedOption'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 F@_4, F@_5, F@_6, F@_7,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_32_google.protobuf.UninterpretedOption'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_64_google.protobuf.UninterpretedOption'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'decode_msg_google.protobuf.SourceCodeInfo.Location'(Bin,
						     TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Bin,
								 0, 0,
								 id([],
								    TrUserData),
								 id([],
								    TrUserData),
								 id('$undef',
								    TrUserData),
								 id('$undef',
								    TrUserData),
								 id([],
								    TrUserData),
								 TrUserData).

'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<10,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<8,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<18,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<16,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<26,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<34,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<50,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										Z1,
										Z2,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<>>,
							     0, 0, R1, R2, F@_3,
							     F@_4, R3,
							     TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData),
	   span => lists_reverse(R2, TrUserData),
	   leading_detached_comments =>
	       lists_reverse(R3, TrUserData)},
    S2 = if F@_3 == '$undef' -> S1;
	    true -> S1#{leading_comments => F@_3}
	 end,
    if F@_4 == '$undef' -> S2;
       true -> S2#{trailing_comments => F@_4}
    end;
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Other,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(Other,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData).

'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5,
								TrUserData);
'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
      8 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData);
      18 ->
	  'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
      16 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData);
      26 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     TrUserData);
      34 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      TrUserData);
      50 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										      0,
										      0,
										      F@_1,
										      F@_2,
										      F@_3,
										      F@_4,
										      F@_5,
										      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.SourceCodeInfo.Location'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      TrUserData);
	    1 ->
		'skip_64_google.protobuf.SourceCodeInfo.Location'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(Rest,
										0,
										0,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
	    3 ->
		'skip_group_google.protobuf.SourceCodeInfo.Location'(Rest,
								     Key bsr 3,
								     0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     TrUserData);
	    5 ->
		'skip_32_google.protobuf.SourceCodeInfo.Location'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<>>,
							    0, 0, R1, R2, F@_3,
							    F@_4, R3,
							    TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData),
	   span => lists_reverse(R2, TrUserData),
	   leading_detached_comments =>
	       lists_reverse(R3, TrUserData)},
    S2 = if F@_3 == '$undef' -> S1;
	    true -> S1#{leading_comments => F@_3}
	 end,
    if F@_4 == '$undef' -> S2;
       true -> S2#{trailing_comments => F@_4}
    end.

'd_field_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5,
							   TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, Prev, F@_2, F@_3,
						       F@_4, F@_5,
						       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5,
							TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, TrUserData);
'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, E, F@_2, F@_3,
							F@_4, F@_5,
							TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(PackedBytes,
								      0, 0, E,
								      TrUserData),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, NewSeq,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  AccSeq,
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(RestF,
								  0, 0,
								  [NewFValue
								   | AccSeq],
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<>>,
							      0, 0, AccSeq,
							      _) ->
    AccSeq.

'd_field_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5,
							   TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, Prev, F@_3,
						       F@_4, F@_5,
						       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 F@_3, F@_4,
								 F@_5,
								 TrUserData).

'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5,
							TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, TrUserData);
'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, E, F@_3,
							F@_4, F@_5,
							TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(PackedBytes,
								      0, 0, E,
								      TrUserData),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, F@_1,
								 NewSeq, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  AccSeq,
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(RestF,
								  0, 0,
								  [NewFValue
								   | AccSeq],
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<>>,
							      0, 0, AccSeq,
							      _) ->
    AccSeq.

'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, _,
								   F@_4, F@_5,
								   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2,
								 NewFValue,
								 F@_4, F@_5,
								 TrUserData).

'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, _,
								    F@_5,
								    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 NewFValue,
								 F@_5,
								 TrUserData).

'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(<<1:1,
									      X:7,
									      Rest/binary>>,
									    N,
									    Acc,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										N
										  +
										  7,
										X
										  bsl
										  N
										  +
										  Acc,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(<<0:1,
									      X:7,
									      Rest/binary>>,
									    N,
									    Acc,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    Prev,
									    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 TrUserData).

'skip_varint_google.protobuf.SourceCodeInfo.Location'(<<1:1,
							_:7, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData) ->
    'skip_varint_google.protobuf.SourceCodeInfo.Location'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  TrUserData);
'skip_varint_google.protobuf.SourceCodeInfo.Location'(<<0:1,
							_:7, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5,
								    TrUserData);
'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_group_google.protobuf.SourceCodeInfo.Location'(Bin,
						     FNum, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 0, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_32_google.protobuf.SourceCodeInfo.Location'(<<_:32,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_64_google.protobuf.SourceCodeInfo.Location'(<<_:64,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'decode_msg_google.protobuf.SourceCodeInfo'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Bin,
							0, 0,
							id([], TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.SourceCodeInfo'(<<10,
						      Rest/binary>>,
						    Z1, Z2, F@_1, TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo'(<<>>,
						    0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{location => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Other,
						    Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo'(Other,
						       Z1, Z2, F@_1,
						       TrUserData).

'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
							    0, 0, F@_1,
							    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							     F@_1, TrUserData);
	    1 ->
		'skip_64_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							 F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.SourceCodeInfo'(Rest,
								       0, 0,
								       F@_1,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.SourceCodeInfo'(Rest,
							    Key bsr 3, 0, F@_1,
							    TrUserData);
	    5 ->
		'skip_32_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							 F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<>>,
						   0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{location => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.SourceCodeInfo_location'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, TrUserData);
'd_field_google.protobuf.SourceCodeInfo_location'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.SourceCodeInfo.Location'(Bs,
										    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(RestF,
							0, 0,
							cons(NewFValue, Prev,
							     TrUserData),
							TrUserData).

'skip_varint_google.protobuf.SourceCodeInfo'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.SourceCodeInfo'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.SourceCodeInfo'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_length_delimited_google.protobuf.SourceCodeInfo'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.SourceCodeInfo'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'skip_length_delimited_google.protobuf.SourceCodeInfo'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest2,
							0, 0, F@_1, TrUserData).

'skip_group_google.protobuf.SourceCodeInfo'(Bin, FNum,
					    Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							0, Z2, F@_1,
							TrUserData).

'skip_32_google.protobuf.SourceCodeInfo'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_64_google.protobuf.SourceCodeInfo'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
							  TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
								      0, 0,
								      id([],
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      TrUserData).

'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<10,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<8,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4,
								TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<18,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<24,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<32,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<>>,
								  0, 0, R1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData)},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{source_file => F@_2}
	 end,
    S3 = if F@_3 == '$undef' -> S2;
	    true -> S2#{'begin' => F@_3}
	 end,
    if F@_4 == '$undef' -> S3;
       true -> S3#{'end' => F@_4}
    end;
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Other,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Other,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData).

'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData);
'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
      8 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData);
      18 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     TrUserData);
      24 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
      32 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4,
								     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   TrUserData);
	    1 ->
		'skip_64_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
										     0,
										     0,
										     F@_1,
										     F@_2,
										     F@_3,
										     F@_4,
										     TrUserData);
	    3 ->
		'skip_group_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									  Key
									    bsr
									    3,
									  0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  TrUserData);
	    5 ->
		'skip_32_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<>>,
								 0, 0, R1, F@_2,
								 F@_3, F@_4,
								 TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData)},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{source_file => F@_2}
	 end,
    S3 = if F@_3 == '$undef' -> S2;
	    true -> S2#{'begin' => F@_3}
	 end,
    if F@_4 == '$undef' -> S3;
       true -> S3#{'end' => F@_4}
    end.

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, Prev, F@_2,
							    F@_3, F@_4,
							    TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      cons(NewFValue,
									   Prev,
									   TrUserData),
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4,
							     TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 TrUserData);
'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, E, F@_2,
							     F@_3, F@_4,
							     TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(PackedBytes,
									   0, 0,
									   E,
									   TrUserData),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest2,
								      0, 0,
								      NewSeq,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc,
								   AccSeq,
								   TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       AccSeq,
								       TrUserData);
'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc,
								   AccSeq,
								   TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(RestF,
								       0, 0,
								       [NewFValue
									| AccSeq],
								       TrUserData);
'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<>>,
								   0, 0, AccSeq,
								   _) ->
    AccSeq.

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, F@_3,
								   F@_4,
								   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   _, F@_3,
								   F@_4,
								   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      NewFValue,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     _, F@_4,
							     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      F@_2,
								      NewFValue,
								      F@_4,
								      TrUserData).

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4,
							       TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, _,
							   TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      NewFValue,
								      TrUserData).

'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData) ->
    'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       TrUserData);
'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 TrUserData);
'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest2,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_group_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
							  FNum, Z2, F@_1, F@_2,
							  F@_3, F@_4,
							  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      0, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_32_google.protobuf.GeneratedCodeInfo.Annotation'(<<_:32,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_64_google.protobuf.GeneratedCodeInfo.Annotation'(<<_:64,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'decode_msg_google.protobuf.GeneratedCodeInfo'(Bin,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Bin,
							   0, 0,
							   id([], TrUserData),
							   TrUserData).

'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(<<10,
							 Rest/binary>>,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(<<>>,
						       0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{annotation => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Other,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(Other,
							  Z1, Z2, F@_1,
							  TrUserData).

'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, TrUserData);
'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1,
						      TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
								 0, 0, F@_1,
								 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.GeneratedCodeInfo'(Rest, 0,
								0, F@_1,
								TrUserData);
	    1 ->
		'skip_64_google.protobuf.GeneratedCodeInfo'(Rest, 0, 0,
							    F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(Rest,
									  0, 0,
									  F@_1,
									  TrUserData);
	    3 ->
		'skip_group_google.protobuf.GeneratedCodeInfo'(Rest,
							       Key bsr 3, 0,
							       F@_1,
							       TrUserData);
	    5 ->
		'skip_32_google.protobuf.GeneratedCodeInfo'(Rest, 0, 0,
							    F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<>>,
						      0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{annotation => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.GeneratedCodeInfo_annotation'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo_annotation'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, Prev,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bs,
											 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(RestF,
							   0, 0,
							   cons(NewFValue, Prev,
								TrUserData),
							   TrUserData).

'skip_varint_google.protobuf.GeneratedCodeInfo'(<<1:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.GeneratedCodeInfo'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.GeneratedCodeInfo'(<<0:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, TrUserData);
'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest2,
							   0, 0, F@_1,
							   TrUserData).

'skip_group_google.protobuf.GeneratedCodeInfo'(Bin,
					       FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   0, Z2, F@_1,
							   TrUserData).

'skip_32_google.protobuf.GeneratedCodeInfo'(<<_:32,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_64_google.protobuf.GeneratedCodeInfo'(<<_:64,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'd_enum_google.protobuf.FieldDescriptorProto.Type'(1) ->
    'TYPE_DOUBLE';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(2) ->
    'TYPE_FLOAT';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(3) ->
    'TYPE_INT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(4) ->
    'TYPE_UINT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(5) ->
    'TYPE_INT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(6) ->
    'TYPE_FIXED64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(7) ->
    'TYPE_FIXED32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(8) ->
    'TYPE_BOOL';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(9) ->
    'TYPE_STRING';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(10) ->
    'TYPE_GROUP';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(11) ->
    'TYPE_MESSAGE';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(12) ->
    'TYPE_BYTES';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(13) ->
    'TYPE_UINT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(14) ->
    'TYPE_ENUM';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(15) ->
    'TYPE_SFIXED32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(16) ->
    'TYPE_SFIXED64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(17) ->
    'TYPE_SINT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(18) ->
    'TYPE_SINT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(V) ->
    V.

'd_enum_google.protobuf.FieldDescriptorProto.Label'(1) ->
    'LABEL_OPTIONAL';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(2) ->
    'LABEL_REQUIRED';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(3) ->
    'LABEL_REPEATED';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(V) ->
    V.

'd_enum_google.protobuf.FileOptions.OptimizeMode'(1) ->
    'SPEED';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(2) ->
    'CODE_SIZE';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(3) ->
    'LITE_RUNTIME';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(V) ->
    V.

'd_enum_google.protobuf.FieldOptions.CType'(0) ->
    'STRING';
'd_enum_google.protobuf.FieldOptions.CType'(1) ->
    'CORD';
'd_enum_google.protobuf.FieldOptions.CType'(2) ->
    'STRING_PIECE';
'd_enum_google.protobuf.FieldOptions.CType'(V) -> V.

'd_enum_google.protobuf.FieldOptions.JSType'(0) ->
    'JS_NORMAL';
'd_enum_google.protobuf.FieldOptions.JSType'(1) ->
    'JS_STRING';
'd_enum_google.protobuf.FieldOptions.JSType'(2) ->
    'JS_NUMBER';
'd_enum_google.protobuf.FieldOptions.JSType'(V) -> V.

read_group(Bin, FieldNum) ->
    {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum),
    <<Group:NumBytes/binary, _:EndTagLen/binary, Rest/binary>> = Bin,
    {Group, Rest}.

%% Like skipping over fields, but record the total length,
%% Each field is <(FieldNum bsl 3) bor FieldType> ++ <FieldValue>
%% Record the length because varints may be non-optimally encoded.
%%
%% Groups can be nested, but assume the same FieldNum cannot be nested
%% because group field numbers are shared with the rest of the fields
%% numbers. Thus we can search just for an group-end with the same
%% field number.
%%
%% (The only time the same group field number could occur would
%% be in a nested sub message, but then it would be inside a
%% length-delimited entry, which we skip-read by length.)
read_gr_b(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, FieldNum)
  when N < (32-7) ->
    read_gr_b(Tl, N+7, X bsl N + Acc, NumBytes, TagLen+1, FieldNum);
read_gr_b(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen,
          FieldNum) ->
    Key = X bsl N + Acc,
    TagLen1 = TagLen + 1,
    case {Key bsr 3, Key band 7} of
        {FieldNum, 4} -> % 4 = group_end
            {NumBytes, TagLen1};
        {_, 0} -> % 0 = varint
            read_gr_vi(Tl, 0, NumBytes + TagLen1, FieldNum);
        {_, 1} -> % 1 = bits64
            <<_:64, Tl2/binary>> = Tl,
            read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 8, 0, FieldNum);
        {_, 2} -> % 2 = length_delimited
            read_gr_ld(Tl, 0, 0, NumBytes + TagLen1, FieldNum);
        {_, 3} -> % 3 = group_start
            read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
        {_, 4} -> % 4 = group_end
            read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
        {_, 5} -> % 5 = bits32
            <<_:32, Tl2/binary>> = Tl,
            read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 4, 0, FieldNum)
    end.

read_gr_vi(<<1:1, _:7, Tl/binary>>, N, NumBytes, FieldNum)
  when N < (64-7) ->
    read_gr_vi(Tl, N+7, NumBytes+1, FieldNum);
read_gr_vi(<<0:1, _:7, Tl/binary>>, _, NumBytes, FieldNum) ->
    read_gr_b(Tl, 0, 0, NumBytes+1, 0, FieldNum).

read_gr_ld(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum)
  when N < (64-7) ->
    read_gr_ld(Tl, N+7, X bsl N + Acc, NumBytes+1, FieldNum);
read_gr_ld(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) ->
    Len = X bsl N + Acc,
    NumBytes1 = NumBytes + 1,
    <<_:Len/binary, Tl2/binary>> = Tl,
    read_gr_b(Tl2, 0, 0, NumBytes1 + Len, 0, FieldNum).

merge_msgs(Prev, New, MsgName) when is_atom(MsgName) ->
    merge_msgs(Prev, New, MsgName, []).

merge_msgs(Prev, New, MsgName, Opts) ->
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'google.protobuf.FileDescriptorSet' ->
	  'merge_msg_google.protobuf.FileDescriptorSet'(Prev, New,
							TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'merge_msg_google.protobuf.FileDescriptorProto'(Prev,
							  New, TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'(Prev,
								     New,
								     TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'merge_msg_google.protobuf.DescriptorProto.ReservedRange'(Prev,
								    New,
								    TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'merge_msg_google.protobuf.DescriptorProto'(Prev, New,
						      TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'merge_msg_google.protobuf.FieldDescriptorProto'(Prev,
							   New, TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'merge_msg_google.protobuf.OneofDescriptorProto'(Prev,
							   New, TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'merge_msg_google.protobuf.EnumDescriptorProto'(Prev,
							  New, TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'merge_msg_google.protobuf.EnumValueDescriptorProto'(Prev,
							       New, TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'merge_msg_google.protobuf.ServiceDescriptorProto'(Prev,
							     New, TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'merge_msg_google.protobuf.MethodDescriptorProto'(Prev,
							    New, TrUserData);
      'google.protobuf.FileOptions' ->
	  'merge_msg_google.protobuf.FileOptions'(Prev, New,
						  TrUserData);
      'google.protobuf.MessageOptions' ->
	  'merge_msg_google.protobuf.MessageOptions'(Prev, New,
						     TrUserData);
      'google.protobuf.FieldOptions' ->
	  'merge_msg_google.protobuf.FieldOptions'(Prev, New,
						   TrUserData);
      'google.protobuf.EnumOptions' ->
	  'merge_msg_google.protobuf.EnumOptions'(Prev, New,
						  TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'merge_msg_google.protobuf.EnumValueOptions'(Prev, New,
						       TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'merge_msg_google.protobuf.ServiceOptions'(Prev, New,
						     TrUserData);
      'google.protobuf.MethodOptions' ->
	  'merge_msg_google.protobuf.MethodOptions'(Prev, New,
						    TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'merge_msg_google.protobuf.UninterpretedOption.NamePart'(Prev,
								   New,
								   TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'merge_msg_google.protobuf.UninterpretedOption'(Prev,
							  New, TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'merge_msg_google.protobuf.SourceCodeInfo.Location'(Prev,
							      New, TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'merge_msg_google.protobuf.SourceCodeInfo'(Prev, New,
						     TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Prev,
								   New,
								   TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'merge_msg_google.protobuf.GeneratedCodeInfo'(Prev, New,
							TrUserData)
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileDescriptorSet'/3}).
'merge_msg_google.protobuf.FileDescriptorSet'(PMsg,
					      NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{file := PFfile}, #{file := NFfile}} ->
	  S1#{file => 'erlang_++'(PFfile, NFfile, TrUserData)};
      {_, #{file := NFfile}} -> S1#{file => NFfile};
      {#{file := PFfile}, _} -> S1#{file => PFfile};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileDescriptorProto'/3}).
'merge_msg_google.protobuf.FileDescriptorProto'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{package := NFpackage}} ->
	       S2#{package => NFpackage};
	   {#{package := PFpackage}, _} ->
	       S2#{package => PFpackage};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{dependency := PFdependency},
	    #{dependency := NFdependency}} ->
	       S3#{dependency =>
		       'erlang_++'(PFdependency, NFdependency, TrUserData)};
	   {_, #{dependency := NFdependency}} ->
	       S3#{dependency => NFdependency};
	   {#{dependency := PFdependency}, _} ->
	       S3#{dependency => PFdependency};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{public_dependency := PFpublic_dependency},
	    #{public_dependency := NFpublic_dependency}} ->
	       S4#{public_dependency =>
		       'erlang_++'(PFpublic_dependency, NFpublic_dependency,
				   TrUserData)};
	   {_, #{public_dependency := NFpublic_dependency}} ->
	       S4#{public_dependency => NFpublic_dependency};
	   {#{public_dependency := PFpublic_dependency}, _} ->
	       S4#{public_dependency => PFpublic_dependency};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{weak_dependency := PFweak_dependency},
	    #{weak_dependency := NFweak_dependency}} ->
	       S5#{weak_dependency =>
		       'erlang_++'(PFweak_dependency, NFweak_dependency,
				   TrUserData)};
	   {_, #{weak_dependency := NFweak_dependency}} ->
	       S5#{weak_dependency => NFweak_dependency};
	   {#{weak_dependency := PFweak_dependency}, _} ->
	       S5#{weak_dependency => PFweak_dependency};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {#{message_type := PFmessage_type},
	    #{message_type := NFmessage_type}} ->
	       S6#{message_type =>
		       'erlang_++'(PFmessage_type, NFmessage_type,
				   TrUserData)};
	   {_, #{message_type := NFmessage_type}} ->
	       S6#{message_type => NFmessage_type};
	   {#{message_type := PFmessage_type}, _} ->
	       S6#{message_type => PFmessage_type};
	   {_, _} -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{enum_type := PFenum_type},
	    #{enum_type := NFenum_type}} ->
	       S7#{enum_type =>
		       'erlang_++'(PFenum_type, NFenum_type, TrUserData)};
	   {_, #{enum_type := NFenum_type}} ->
	       S7#{enum_type => NFenum_type};
	   {#{enum_type := PFenum_type}, _} ->
	       S7#{enum_type => PFenum_type};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {#{service := PFservice}, #{service := NFservice}} ->
	       S8#{service =>
		       'erlang_++'(PFservice, NFservice, TrUserData)};
	   {_, #{service := NFservice}} ->
	       S8#{service => NFservice};
	   {#{service := PFservice}, _} ->
	       S8#{service => PFservice};
	   {_, _} -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {#{extension := PFextension},
	     #{extension := NFextension}} ->
		S9#{extension =>
			'erlang_++'(PFextension, NFextension, TrUserData)};
	    {_, #{extension := NFextension}} ->
		S9#{extension => NFextension};
	    {#{extension := PFextension}, _} ->
		S9#{extension => PFextension};
	    {_, _} -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {#{options := PFoptions}, #{options := NFoptions}} ->
		S10#{options =>
			 'merge_msg_google.protobuf.FileOptions'(PFoptions,
								 NFoptions,
								 TrUserData)};
	    {_, #{options := NFoptions}} ->
		S10#{options => NFoptions};
	    {#{options := PFoptions}, _} ->
		S10#{options => PFoptions};
	    {_, _} -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {#{source_code_info := PFsource_code_info},
	     #{source_code_info := NFsource_code_info}} ->
		S11#{source_code_info =>
			 'merge_msg_google.protobuf.SourceCodeInfo'(PFsource_code_info,
								    NFsource_code_info,
								    TrUserData)};
	    {_, #{source_code_info := NFsource_code_info}} ->
		S11#{source_code_info => NFsource_code_info};
	    {#{source_code_info := PFsource_code_info}, _} ->
		S11#{source_code_info => PFsource_code_info};
	    {_, _} -> S11
	  end,
    case {PMsg, NMsg} of
      {_, #{syntax := NFsyntax}} -> S12#{syntax => NFsyntax};
      {#{syntax := PFsyntax}, _} -> S12#{syntax => PFsyntax};
      _ -> S12
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'(PMsg,
							   NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{start := NFstart}} -> S1#{start => NFstart};
	   {#{start := PFstart}, _} -> S1#{start => PFstart};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S2#{'end' => NFend};
      {#{'end' := PFend}, _} -> S2#{'end' => PFend};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
'merge_msg_google.protobuf.DescriptorProto.ReservedRange'(PMsg,
							  NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{start := NFstart}} -> S1#{start => NFstart};
	   {#{start := PFstart}, _} -> S1#{start => PFstart};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S2#{'end' => NFend};
      {#{'end' := PFend}, _} -> S2#{'end' => PFend};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto'/3}).
'merge_msg_google.protobuf.DescriptorProto'(PMsg, NMsg,
					    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{field := PFfield}, #{field := NFfield}} ->
	       S2#{field => 'erlang_++'(PFfield, NFfield, TrUserData)};
	   {_, #{field := NFfield}} -> S2#{field => NFfield};
	   {#{field := PFfield}, _} -> S2#{field => PFfield};
	   {_, _} -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{extension := PFextension},
	    #{extension := NFextension}} ->
	       S3#{extension =>
		       'erlang_++'(PFextension, NFextension, TrUserData)};
	   {_, #{extension := NFextension}} ->
	       S3#{extension => NFextension};
	   {#{extension := PFextension}, _} ->
	       S3#{extension => PFextension};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{nested_type := PFnested_type},
	    #{nested_type := NFnested_type}} ->
	       S4#{nested_type =>
		       'erlang_++'(PFnested_type, NFnested_type, TrUserData)};
	   {_, #{nested_type := NFnested_type}} ->
	       S4#{nested_type => NFnested_type};
	   {#{nested_type := PFnested_type}, _} ->
	       S4#{nested_type => PFnested_type};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{enum_type := PFenum_type},
	    #{enum_type := NFenum_type}} ->
	       S5#{enum_type =>
		       'erlang_++'(PFenum_type, NFenum_type, TrUserData)};
	   {_, #{enum_type := NFenum_type}} ->
	       S5#{enum_type => NFenum_type};
	   {#{enum_type := PFenum_type}, _} ->
	       S5#{enum_type => PFenum_type};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {#{extension_range := PFextension_range},
	    #{extension_range := NFextension_range}} ->
	       S6#{extension_range =>
		       'erlang_++'(PFextension_range, NFextension_range,
				   TrUserData)};
	   {_, #{extension_range := NFextension_range}} ->
	       S6#{extension_range => NFextension_range};
	   {#{extension_range := PFextension_range}, _} ->
	       S6#{extension_range => PFextension_range};
	   {_, _} -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{oneof_decl := PFoneof_decl},
	    #{oneof_decl := NFoneof_decl}} ->
	       S7#{oneof_decl =>
		       'erlang_++'(PFoneof_decl, NFoneof_decl, TrUserData)};
	   {_, #{oneof_decl := NFoneof_decl}} ->
	       S7#{oneof_decl => NFoneof_decl};
	   {#{oneof_decl := PFoneof_decl}, _} ->
	       S7#{oneof_decl => PFoneof_decl};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {#{options := PFoptions}, #{options := NFoptions}} ->
	       S8#{options =>
		       'merge_msg_google.protobuf.MessageOptions'(PFoptions,
								  NFoptions,
								  TrUserData)};
	   {_, #{options := NFoptions}} ->
	       S8#{options => NFoptions};
	   {#{options := PFoptions}, _} ->
	       S8#{options => PFoptions};
	   {_, _} -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {#{reserved_range := PFreserved_range},
	     #{reserved_range := NFreserved_range}} ->
		S9#{reserved_range =>
			'erlang_++'(PFreserved_range, NFreserved_range,
				    TrUserData)};
	    {_, #{reserved_range := NFreserved_range}} ->
		S9#{reserved_range => NFreserved_range};
	    {#{reserved_range := PFreserved_range}, _} ->
		S9#{reserved_range => PFreserved_range};
	    {_, _} -> S9
	  end,
    case {PMsg, NMsg} of
      {#{reserved_name := PFreserved_name},
       #{reserved_name := NFreserved_name}} ->
	  S10#{reserved_name =>
		   'erlang_++'(PFreserved_name, NFreserved_name,
			       TrUserData)};
      {_, #{reserved_name := NFreserved_name}} ->
	  S10#{reserved_name => NFreserved_name};
      {#{reserved_name := PFreserved_name}, _} ->
	  S10#{reserved_name => PFreserved_name};
      {_, _} -> S10
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FieldDescriptorProto'/3}).
'merge_msg_google.protobuf.FieldDescriptorProto'(PMsg,
						 NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{number := NFnumber}} -> S2#{number => NFnumber};
	   {#{number := PFnumber}, _} -> S2#{number => PFnumber};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{label := NFlabel}} -> S3#{label => NFlabel};
	   {#{label := PFlabel}, _} -> S3#{label => PFlabel};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{type := NFtype}} -> S4#{type => NFtype};
	   {#{type := PFtype}, _} -> S4#{type => PFtype};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{type_name := NFtype_name}} ->
	       S5#{type_name => NFtype_name};
	   {#{type_name := PFtype_name}, _} ->
	       S5#{type_name => PFtype_name};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{extendee := NFextendee}} ->
	       S6#{extendee => NFextendee};
	   {#{extendee := PFextendee}, _} ->
	       S6#{extendee => PFextendee};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{default_value := NFdefault_value}} ->
	       S7#{default_value => NFdefault_value};
	   {#{default_value := PFdefault_value}, _} ->
	       S7#{default_value => PFdefault_value};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{oneof_index := NFoneof_index}} ->
	       S8#{oneof_index => NFoneof_index};
	   {#{oneof_index := PFoneof_index}, _} ->
	       S8#{oneof_index => PFoneof_index};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{json_name := NFjson_name}} ->
		S9#{json_name => NFjson_name};
	    {#{json_name := PFjson_name}, _} ->
		S9#{json_name => PFjson_name};
	    _ -> S9
	  end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S10#{options =>
		   'merge_msg_google.protobuf.FieldOptions'(PFoptions,
							    NFoptions,
							    TrUserData)};
      {_, #{options := NFoptions}} ->
	  S10#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S10#{options => PFoptions};
      {_, _} -> S10
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.OneofDescriptorProto'/3}).
'merge_msg_google.protobuf.OneofDescriptorProto'(PMsg,
						 NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumDescriptorProto'/3}).
'merge_msg_google.protobuf.EnumDescriptorProto'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{value := PFvalue}, #{value := NFvalue}} ->
	       S2#{value => 'erlang_++'(PFvalue, NFvalue, TrUserData)};
	   {_, #{value := NFvalue}} -> S2#{value => NFvalue};
	   {#{value := PFvalue}, _} -> S2#{value => PFvalue};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.EnumOptions'(PFoptions,
							  NFoptions,
							  TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumValueDescriptorProto'/3}).
'merge_msg_google.protobuf.EnumValueDescriptorProto'(PMsg,
						     NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{number := NFnumber}} -> S2#{number => NFnumber};
	   {#{number := PFnumber}, _} -> S2#{number => PFnumber};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.EnumValueOptions'(PFoptions,
							       NFoptions,
							       TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.ServiceDescriptorProto'/3}).
'merge_msg_google.protobuf.ServiceDescriptorProto'(PMsg,
						   NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{method := PFmethod}, #{method := NFmethod}} ->
	       S2#{method =>
		       'erlang_++'(PFmethod, NFmethod, TrUserData)};
	   {_, #{method := NFmethod}} -> S2#{method => NFmethod};
	   {#{method := PFmethod}, _} -> S2#{method => PFmethod};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.ServiceOptions'(PFoptions,
							     NFoptions,
							     TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MethodDescriptorProto'/3}).
'merge_msg_google.protobuf.MethodDescriptorProto'(PMsg,
						  NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{input_type := NFinput_type}} ->
	       S2#{input_type => NFinput_type};
	   {#{input_type := PFinput_type}, _} ->
	       S2#{input_type => PFinput_type};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{output_type := NFoutput_type}} ->
	       S3#{output_type => NFoutput_type};
	   {#{output_type := PFoutput_type}, _} ->
	       S3#{output_type => PFoutput_type};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{options := PFoptions}, #{options := NFoptions}} ->
	       S4#{options =>
		       'merge_msg_google.protobuf.MethodOptions'(PFoptions,
								 NFoptions,
								 TrUserData)};
	   {_, #{options := NFoptions}} ->
	       S4#{options => NFoptions};
	   {#{options := PFoptions}, _} ->
	       S4#{options => PFoptions};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{client_streaming := NFclient_streaming}} ->
	       S5#{client_streaming => NFclient_streaming};
	   {#{client_streaming := PFclient_streaming}, _} ->
	       S5#{client_streaming => PFclient_streaming};
	   _ -> S5
	 end,
    case {PMsg, NMsg} of
      {_, #{server_streaming := NFserver_streaming}} ->
	  S6#{server_streaming => NFserver_streaming};
      {#{server_streaming := PFserver_streaming}, _} ->
	  S6#{server_streaming => PFserver_streaming};
      _ -> S6
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileOptions'/3}).
'merge_msg_google.protobuf.FileOptions'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{java_package := NFjava_package}} ->
	       S1#{java_package => NFjava_package};
	   {#{java_package := PFjava_package}, _} ->
	       S1#{java_package => PFjava_package};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_,
	    #{java_outer_classname := NFjava_outer_classname}} ->
	       S2#{java_outer_classname => NFjava_outer_classname};
	   {#{java_outer_classname := PFjava_outer_classname},
	    _} ->
	       S2#{java_outer_classname => PFjava_outer_classname};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{java_multiple_files := NFjava_multiple_files}} ->
	       S3#{java_multiple_files => NFjava_multiple_files};
	   {#{java_multiple_files := PFjava_multiple_files}, _} ->
	       S3#{java_multiple_files => PFjava_multiple_files};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_,
	    #{java_generate_equals_and_hash :=
		  NFjava_generate_equals_and_hash}} ->
	       S4#{java_generate_equals_and_hash =>
		       NFjava_generate_equals_and_hash};
	   {#{java_generate_equals_and_hash :=
		  PFjava_generate_equals_and_hash},
	    _} ->
	       S4#{java_generate_equals_and_hash =>
		       PFjava_generate_equals_and_hash};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_,
	    #{java_string_check_utf8 :=
		  NFjava_string_check_utf8}} ->
	       S5#{java_string_check_utf8 => NFjava_string_check_utf8};
	   {#{java_string_check_utf8 := PFjava_string_check_utf8},
	    _} ->
	       S5#{java_string_check_utf8 => PFjava_string_check_utf8};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{optimize_for := NFoptimize_for}} ->
	       S6#{optimize_for => NFoptimize_for};
	   {#{optimize_for := PFoptimize_for}, _} ->
	       S6#{optimize_for => PFoptimize_for};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{go_package := NFgo_package}} ->
	       S7#{go_package => NFgo_package};
	   {#{go_package := PFgo_package}, _} ->
	       S7#{go_package => PFgo_package};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{cc_generic_services := NFcc_generic_services}} ->
	       S8#{cc_generic_services => NFcc_generic_services};
	   {#{cc_generic_services := PFcc_generic_services}, _} ->
	       S8#{cc_generic_services => PFcc_generic_services};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_,
	     #{java_generic_services := NFjava_generic_services}} ->
		S9#{java_generic_services => NFjava_generic_services};
	    {#{java_generic_services := PFjava_generic_services},
	     _} ->
		S9#{java_generic_services => PFjava_generic_services};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{py_generic_services := NFpy_generic_services}} ->
		S10#{py_generic_services => NFpy_generic_services};
	    {#{py_generic_services := PFpy_generic_services}, _} ->
		S10#{py_generic_services => PFpy_generic_services};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{deprecated := NFdeprecated}} ->
		S11#{deprecated => NFdeprecated};
	    {#{deprecated := PFdeprecated}, _} ->
		S11#{deprecated => PFdeprecated};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{cc_enable_arenas := NFcc_enable_arenas}} ->
		S12#{cc_enable_arenas => NFcc_enable_arenas};
	    {#{cc_enable_arenas := PFcc_enable_arenas}, _} ->
		S12#{cc_enable_arenas => PFcc_enable_arenas};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{objc_class_prefix := NFobjc_class_prefix}} ->
		S13#{objc_class_prefix => NFobjc_class_prefix};
	    {#{objc_class_prefix := PFobjc_class_prefix}, _} ->
		S13#{objc_class_prefix => PFobjc_class_prefix};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{csharp_namespace := NFcsharp_namespace}} ->
		S14#{csharp_namespace => NFcsharp_namespace};
	    {#{csharp_namespace := PFcsharp_namespace}, _} ->
		S14#{csharp_namespace => PFcsharp_namespace};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_,
	     #{javanano_use_deprecated_package :=
		   NFjavanano_use_deprecated_package}} ->
		S15#{javanano_use_deprecated_package =>
			 NFjavanano_use_deprecated_package};
	    {#{javanano_use_deprecated_package :=
		   PFjavanano_use_deprecated_package},
	     _} ->
		S15#{javanano_use_deprecated_package =>
			 PFjavanano_use_deprecated_package};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {#{uninterpreted_option := PFuninterpreted_option},
	     #{uninterpreted_option := NFuninterpreted_option}} ->
		S16#{uninterpreted_option =>
			 'erlang_++'(PFuninterpreted_option,
				     NFuninterpreted_option, TrUserData)};
	    {_,
	     #{uninterpreted_option := NFuninterpreted_option}} ->
		S16#{uninterpreted_option => NFuninterpreted_option};
	    {#{uninterpreted_option := PFuninterpreted_option},
	     _} ->
		S16#{uninterpreted_option => PFuninterpreted_option};
	    {_, _} -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{goproto_getters_all := NFgoproto_getters_all}} ->
		S17#{goproto_getters_all => NFgoproto_getters_all};
	    {#{goproto_getters_all := PFgoproto_getters_all}, _} ->
		S17#{goproto_getters_all => PFgoproto_getters_all};
	    _ -> S17
	  end,
    S19 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_enum_prefix_all :=
		   NFgoproto_enum_prefix_all}} ->
		S18#{goproto_enum_prefix_all =>
			 NFgoproto_enum_prefix_all};
	    {#{goproto_enum_prefix_all :=
		   PFgoproto_enum_prefix_all},
	     _} ->
		S18#{goproto_enum_prefix_all =>
			 PFgoproto_enum_prefix_all};
	    _ -> S18
	  end,
    S20 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_stringer_all := NFgoproto_stringer_all}} ->
		S19#{goproto_stringer_all => NFgoproto_stringer_all};
	    {#{goproto_stringer_all := PFgoproto_stringer_all},
	     _} ->
		S19#{goproto_stringer_all => PFgoproto_stringer_all};
	    _ -> S19
	  end,
    S21 = case {PMsg, NMsg} of
	    {_, #{verbose_equal_all := NFverbose_equal_all}} ->
		S20#{verbose_equal_all => NFverbose_equal_all};
	    {#{verbose_equal_all := PFverbose_equal_all}, _} ->
		S20#{verbose_equal_all => PFverbose_equal_all};
	    _ -> S20
	  end,
    S22 = case {PMsg, NMsg} of
	    {_, #{face_all := NFface_all}} ->
		S21#{face_all => NFface_all};
	    {#{face_all := PFface_all}, _} ->
		S21#{face_all => PFface_all};
	    _ -> S21
	  end,
    S23 = case {PMsg, NMsg} of
	    {_, #{gostring_all := NFgostring_all}} ->
		S22#{gostring_all => NFgostring_all};
	    {#{gostring_all := PFgostring_all}, _} ->
		S22#{gostring_all => PFgostring_all};
	    _ -> S22
	  end,
    S24 = case {PMsg, NMsg} of
	    {_, #{populate_all := NFpopulate_all}} ->
		S23#{populate_all => NFpopulate_all};
	    {#{populate_all := PFpopulate_all}, _} ->
		S23#{populate_all => PFpopulate_all};
	    _ -> S23
	  end,
    S25 = case {PMsg, NMsg} of
	    {_, #{stringer_all := NFstringer_all}} ->
		S24#{stringer_all => NFstringer_all};
	    {#{stringer_all := PFstringer_all}, _} ->
		S24#{stringer_all => PFstringer_all};
	    _ -> S24
	  end,
    S26 = case {PMsg, NMsg} of
	    {_, #{onlyone_all := NFonlyone_all}} ->
		S25#{onlyone_all => NFonlyone_all};
	    {#{onlyone_all := PFonlyone_all}, _} ->
		S25#{onlyone_all => PFonlyone_all};
	    _ -> S25
	  end,
    S27 = case {PMsg, NMsg} of
	    {_, #{equal_all := NFequal_all}} ->
		S26#{equal_all => NFequal_all};
	    {#{equal_all := PFequal_all}, _} ->
		S26#{equal_all => PFequal_all};
	    _ -> S26
	  end,
    S28 = case {PMsg, NMsg} of
	    {_, #{description_all := NFdescription_all}} ->
		S27#{description_all => NFdescription_all};
	    {#{description_all := PFdescription_all}, _} ->
		S27#{description_all => PFdescription_all};
	    _ -> S27
	  end,
    S29 = case {PMsg, NMsg} of
	    {_, #{testgen_all := NFtestgen_all}} ->
		S28#{testgen_all => NFtestgen_all};
	    {#{testgen_all := PFtestgen_all}, _} ->
		S28#{testgen_all => PFtestgen_all};
	    _ -> S28
	  end,
    S30 = case {PMsg, NMsg} of
	    {_, #{benchgen_all := NFbenchgen_all}} ->
		S29#{benchgen_all => NFbenchgen_all};
	    {#{benchgen_all := PFbenchgen_all}, _} ->
		S29#{benchgen_all => PFbenchgen_all};
	    _ -> S29
	  end,
    S31 = case {PMsg, NMsg} of
	    {_, #{marshaler_all := NFmarshaler_all}} ->
		S30#{marshaler_all => NFmarshaler_all};
	    {#{marshaler_all := PFmarshaler_all}, _} ->
		S30#{marshaler_all => PFmarshaler_all};
	    _ -> S30
	  end,
    S32 = case {PMsg, NMsg} of
	    {_, #{unmarshaler_all := NFunmarshaler_all}} ->
		S31#{unmarshaler_all => NFunmarshaler_all};
	    {#{unmarshaler_all := PFunmarshaler_all}, _} ->
		S31#{unmarshaler_all => PFunmarshaler_all};
	    _ -> S31
	  end,
    S33 = case {PMsg, NMsg} of
	    {_,
	     #{stable_marshaler_all := NFstable_marshaler_all}} ->
		S32#{stable_marshaler_all => NFstable_marshaler_all};
	    {#{stable_marshaler_all := PFstable_marshaler_all},
	     _} ->
		S32#{stable_marshaler_all => PFstable_marshaler_all};
	    _ -> S32
	  end,
    S34 = case {PMsg, NMsg} of
	    {_, #{sizer_all := NFsizer_all}} ->
		S33#{sizer_all => NFsizer_all};
	    {#{sizer_all := PFsizer_all}, _} ->
		S33#{sizer_all => PFsizer_all};
	    _ -> S33
	  end,
    S35 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_enum_stringer_all :=
		   NFgoproto_enum_stringer_all}} ->
		S34#{goproto_enum_stringer_all =>
			 NFgoproto_enum_stringer_all};
	    {#{goproto_enum_stringer_all :=
		   PFgoproto_enum_stringer_all},
	     _} ->
		S34#{goproto_enum_stringer_all =>
			 PFgoproto_enum_stringer_all};
	    _ -> S34
	  end,
    S36 = case {PMsg, NMsg} of
	    {_, #{enum_stringer_all := NFenum_stringer_all}} ->
		S35#{enum_stringer_all => NFenum_stringer_all};
	    {#{enum_stringer_all := PFenum_stringer_all}, _} ->
		S35#{enum_stringer_all => PFenum_stringer_all};
	    _ -> S35
	  end,
    S37 = case {PMsg, NMsg} of
	    {_,
	     #{unsafe_marshaler_all := NFunsafe_marshaler_all}} ->
		S36#{unsafe_marshaler_all => NFunsafe_marshaler_all};
	    {#{unsafe_marshaler_all := PFunsafe_marshaler_all},
	     _} ->
		S36#{unsafe_marshaler_all => PFunsafe_marshaler_all};
	    _ -> S36
	  end,
    S38 = case {PMsg, NMsg} of
	    {_,
	     #{unsafe_unmarshaler_all :=
		   NFunsafe_unmarshaler_all}} ->
		S37#{unsafe_unmarshaler_all =>
			 NFunsafe_unmarshaler_all};
	    {#{unsafe_unmarshaler_all := PFunsafe_unmarshaler_all},
	     _} ->
		S37#{unsafe_unmarshaler_all =>
			 PFunsafe_unmarshaler_all};
	    _ -> S37
	  end,
    S39 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_extensions_map_all :=
		   NFgoproto_extensions_map_all}} ->
		S38#{goproto_extensions_map_all =>
			 NFgoproto_extensions_map_all};
	    {#{goproto_extensions_map_all :=
		   PFgoproto_extensions_map_all},
	     _} ->
		S38#{goproto_extensions_map_all =>
			 PFgoproto_extensions_map_all};
	    _ -> S38
	  end,
    S40 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_unrecognized_all :=
		   NFgoproto_unrecognized_all}} ->
		S39#{goproto_unrecognized_all =>
			 NFgoproto_unrecognized_all};
	    {#{goproto_unrecognized_all :=
		   PFgoproto_unrecognized_all},
	     _} ->
		S39#{goproto_unrecognized_all =>
			 PFgoproto_unrecognized_all};
	    _ -> S39
	  end,
    S41 = case {PMsg, NMsg} of
	    {_, #{gogoproto_import := NFgogoproto_import}} ->
		S40#{gogoproto_import => NFgogoproto_import};
	    {#{gogoproto_import := PFgogoproto_import}, _} ->
		S40#{gogoproto_import => PFgogoproto_import};
	    _ -> S40
	  end,
    S42 = case {PMsg, NMsg} of
	    {_, #{protosizer_all := NFprotosizer_all}} ->
		S41#{protosizer_all => NFprotosizer_all};
	    {#{protosizer_all := PFprotosizer_all}, _} ->
		S41#{protosizer_all => PFprotosizer_all};
	    _ -> S41
	  end,
    case {PMsg, NMsg} of
      {_, #{compare_all := NFcompare_all}} ->
	  S42#{compare_all => NFcompare_all};
      {#{compare_all := PFcompare_all}, _} ->
	  S42#{compare_all => PFcompare_all};
      _ -> S42
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MessageOptions'/3}).
'merge_msg_google.protobuf.MessageOptions'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_,
	    #{message_set_wire_format :=
		  NFmessage_set_wire_format}} ->
	       S1#{message_set_wire_format =>
		       NFmessage_set_wire_format};
	   {#{message_set_wire_format :=
		  PFmessage_set_wire_format},
	    _} ->
	       S1#{message_set_wire_format =>
		       PFmessage_set_wire_format};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_,
	    #{no_standard_descriptor_accessor :=
		  NFno_standard_descriptor_accessor}} ->
	       S2#{no_standard_descriptor_accessor =>
		       NFno_standard_descriptor_accessor};
	   {#{no_standard_descriptor_accessor :=
		  PFno_standard_descriptor_accessor},
	    _} ->
	       S2#{no_standard_descriptor_accessor =>
		       PFno_standard_descriptor_accessor};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S3#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S3#{deprecated => PFdeprecated};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{map_entry := NFmap_entry}} ->
	       S4#{map_entry => NFmap_entry};
	   {#{map_entry := PFmap_entry}, _} ->
	       S4#{map_entry => PFmap_entry};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S5#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S5#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S5#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{goproto_getters := NFgoproto_getters}} ->
	       S6#{goproto_getters => NFgoproto_getters};
	   {#{goproto_getters := PFgoproto_getters}, _} ->
	       S6#{goproto_getters => PFgoproto_getters};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{goproto_stringer := NFgoproto_stringer}} ->
	       S7#{goproto_stringer => NFgoproto_stringer};
	   {#{goproto_stringer := PFgoproto_stringer}, _} ->
	       S7#{goproto_stringer => PFgoproto_stringer};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{verbose_equal := NFverbose_equal}} ->
	       S8#{verbose_equal => NFverbose_equal};
	   {#{verbose_equal := PFverbose_equal}, _} ->
	       S8#{verbose_equal => PFverbose_equal};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{face := NFface}} -> S9#{face => NFface};
	    {#{face := PFface}, _} -> S9#{face => PFface};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{gostring := NFgostring}} ->
		S10#{gostring => NFgostring};
	    {#{gostring := PFgostring}, _} ->
		S10#{gostring => PFgostring};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{populate := NFpopulate}} ->
		S11#{populate => NFpopulate};
	    {#{populate := PFpopulate}, _} ->
		S11#{populate => PFpopulate};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{stringer := NFstringer}} ->
		S12#{stringer => NFstringer};
	    {#{stringer := PFstringer}, _} ->
		S12#{stringer => PFstringer};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{onlyone := NFonlyone}} ->
		S13#{onlyone => NFonlyone};
	    {#{onlyone := PFonlyone}, _} ->
		S13#{onlyone => PFonlyone};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{equal := NFequal}} -> S14#{equal => NFequal};
	    {#{equal := PFequal}, _} -> S14#{equal => PFequal};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_, #{description := NFdescription}} ->
		S15#{description => NFdescription};
	    {#{description := PFdescription}, _} ->
		S15#{description => PFdescription};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {_, #{testgen := NFtestgen}} ->
		S16#{testgen => NFtestgen};
	    {#{testgen := PFtestgen}, _} ->
		S16#{testgen => PFtestgen};
	    _ -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{benchgen := NFbenchgen}} ->
		S17#{benchgen => NFbenchgen};
	    {#{benchgen := PFbenchgen}, _} ->
		S17#{benchgen => PFbenchgen};
	    _ -> S17
	  end,
    S19 = case {PMsg, NMsg} of
	    {_, #{marshaler := NFmarshaler}} ->
		S18#{marshaler => NFmarshaler};
	    {#{marshaler := PFmarshaler}, _} ->
		S18#{marshaler => PFmarshaler};
	    _ -> S18
	  end,
    S20 = case {PMsg, NMsg} of
	    {_, #{unmarshaler := NFunmarshaler}} ->
		S19#{unmarshaler => NFunmarshaler};
	    {#{unmarshaler := PFunmarshaler}, _} ->
		S19#{unmarshaler => PFunmarshaler};
	    _ -> S19
	  end,
    S21 = case {PMsg, NMsg} of
	    {_, #{stable_marshaler := NFstable_marshaler}} ->
		S20#{stable_marshaler => NFstable_marshaler};
	    {#{stable_marshaler := PFstable_marshaler}, _} ->
		S20#{stable_marshaler => PFstable_marshaler};
	    _ -> S20
	  end,
    S22 = case {PMsg, NMsg} of
	    {_, #{sizer := NFsizer}} -> S21#{sizer => NFsizer};
	    {#{sizer := PFsizer}, _} -> S21#{sizer => PFsizer};
	    _ -> S21
	  end,
    S23 = case {PMsg, NMsg} of
	    {_, #{unsafe_marshaler := NFunsafe_marshaler}} ->
		S22#{unsafe_marshaler => NFunsafe_marshaler};
	    {#{unsafe_marshaler := PFunsafe_marshaler}, _} ->
		S22#{unsafe_marshaler => PFunsafe_marshaler};
	    _ -> S22
	  end,
    S24 = case {PMsg, NMsg} of
	    {_, #{unsafe_unmarshaler := NFunsafe_unmarshaler}} ->
		S23#{unsafe_unmarshaler => NFunsafe_unmarshaler};
	    {#{unsafe_unmarshaler := PFunsafe_unmarshaler}, _} ->
		S23#{unsafe_unmarshaler => PFunsafe_unmarshaler};
	    _ -> S23
	  end,
    S25 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_extensions_map :=
		   NFgoproto_extensions_map}} ->
		S24#{goproto_extensions_map =>
			 NFgoproto_extensions_map};
	    {#{goproto_extensions_map := PFgoproto_extensions_map},
	     _} ->
		S24#{goproto_extensions_map =>
			 PFgoproto_extensions_map};
	    _ -> S24
	  end,
    S26 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_unrecognized := NFgoproto_unrecognized}} ->
		S25#{goproto_unrecognized => NFgoproto_unrecognized};
	    {#{goproto_unrecognized := PFgoproto_unrecognized},
	     _} ->
		S25#{goproto_unrecognized => PFgoproto_unrecognized};
	    _ -> S25
	  end,
    S27 = case {PMsg, NMsg} of
	    {_, #{protosizer := NFprotosizer}} ->
		S26#{protosizer => NFprotosizer};
	    {#{protosizer := PFprotosizer}, _} ->
		S26#{protosizer => PFprotosizer};
	    _ -> S26
	  end,
    case {PMsg, NMsg} of
      {_, #{compare := NFcompare}} ->
	  S27#{compare => NFcompare};
      {#{compare := PFcompare}, _} ->
	  S27#{compare => PFcompare};
      _ -> S27
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FieldOptions'/3}).
'merge_msg_google.protobuf.FieldOptions'(PMsg, NMsg,
					 TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{ctype := NFctype}} -> S1#{ctype => NFctype};
	   {#{ctype := PFctype}, _} -> S1#{ctype => PFctype};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{packed := NFpacked}} -> S2#{packed => NFpacked};
	   {#{packed := PFpacked}, _} -> S2#{packed => PFpacked};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{jstype := NFjstype}} -> S3#{jstype => NFjstype};
	   {#{jstype := PFjstype}, _} -> S3#{jstype => PFjstype};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{lazy := NFlazy}} -> S4#{lazy => NFlazy};
	   {#{lazy := PFlazy}, _} -> S4#{lazy => PFlazy};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S5#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S5#{deprecated => PFdeprecated};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{weak := NFweak}} -> S6#{weak => NFweak};
	   {#{weak := PFweak}, _} -> S6#{weak => PFweak};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S7#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S7#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S7#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{nullable := NFnullable}} ->
	       S8#{nullable => NFnullable};
	   {#{nullable := PFnullable}, _} ->
	       S8#{nullable => PFnullable};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{embed := NFembed}} -> S9#{embed => NFembed};
	    {#{embed := PFembed}, _} -> S9#{embed => PFembed};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{customtype := NFcustomtype}} ->
		S10#{customtype => NFcustomtype};
	    {#{customtype := PFcustomtype}, _} ->
		S10#{customtype => PFcustomtype};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{customname := NFcustomname}} ->
		S11#{customname => NFcustomname};
	    {#{customname := PFcustomname}, _} ->
		S11#{customname => PFcustomname};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{jsontag := NFjsontag}} ->
		S12#{jsontag => NFjsontag};
	    {#{jsontag := PFjsontag}, _} ->
		S12#{jsontag => PFjsontag};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{moretags := NFmoretags}} ->
		S13#{moretags => NFmoretags};
	    {#{moretags := PFmoretags}, _} ->
		S13#{moretags => PFmoretags};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{casttype := NFcasttype}} ->
		S14#{casttype => NFcasttype};
	    {#{casttype := PFcasttype}, _} ->
		S14#{casttype => PFcasttype};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_, #{castkey := NFcastkey}} ->
		S15#{castkey => NFcastkey};
	    {#{castkey := PFcastkey}, _} ->
		S15#{castkey => PFcastkey};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {_, #{castvalue := NFcastvalue}} ->
		S16#{castvalue => NFcastvalue};
	    {#{castvalue := PFcastvalue}, _} ->
		S16#{castvalue => PFcastvalue};
	    _ -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{stdtime := NFstdtime}} ->
		S17#{stdtime => NFstdtime};
	    {#{stdtime := PFstdtime}, _} ->
		S17#{stdtime => PFstdtime};
	    _ -> S17
	  end,
    case {PMsg, NMsg} of
      {_, #{stdduration := NFstdduration}} ->
	  S18#{stdduration => NFstdduration};
      {#{stdduration := PFstdduration}, _} ->
	  S18#{stdduration => PFstdduration};
      _ -> S18
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumOptions'/3}).
'merge_msg_google.protobuf.EnumOptions'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{allow_alias := NFallow_alias}} ->
	       S1#{allow_alias => NFallow_alias};
	   {#{allow_alias := PFallow_alias}, _} ->
	       S1#{allow_alias => PFallow_alias};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S2#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S2#{deprecated => PFdeprecated};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S3#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S3#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S3#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{goproto_enum_prefix := NFgoproto_enum_prefix}} ->
	       S4#{goproto_enum_prefix => NFgoproto_enum_prefix};
	   {#{goproto_enum_prefix := PFgoproto_enum_prefix}, _} ->
	       S4#{goproto_enum_prefix => PFgoproto_enum_prefix};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_,
	    #{goproto_enum_stringer := NFgoproto_enum_stringer}} ->
	       S5#{goproto_enum_stringer => NFgoproto_enum_stringer};
	   {#{goproto_enum_stringer := PFgoproto_enum_stringer},
	    _} ->
	       S5#{goproto_enum_stringer => PFgoproto_enum_stringer};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{enum_stringer := NFenum_stringer}} ->
	       S6#{enum_stringer => NFenum_stringer};
	   {#{enum_stringer := PFenum_stringer}, _} ->
	       S6#{enum_stringer => PFenum_stringer};
	   _ -> S6
	 end,
    case {PMsg, NMsg} of
      {_, #{enum_customname := NFenum_customname}} ->
	  S7#{enum_customname => NFenum_customname};
      {#{enum_customname := PFenum_customname}, _} ->
	  S7#{enum_customname => PFenum_customname};
      _ -> S7
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumValueOptions'/3}).
'merge_msg_google.protobuf.EnumValueOptions'(PMsg, NMsg,
					     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S2#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S2#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S2#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {_,
       #{enumvalue_customname := NFenumvalue_customname}} ->
	  S3#{enumvalue_customname => NFenumvalue_customname};
      {#{enumvalue_customname := PFenumvalue_customname},
       _} ->
	  S3#{enumvalue_customname => PFenumvalue_customname};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.ServiceOptions'/3}).
'merge_msg_google.protobuf.ServiceOptions'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{uninterpreted_option := PFuninterpreted_option},
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option =>
		  'erlang_++'(PFuninterpreted_option,
			      NFuninterpreted_option, TrUserData)};
      {_,
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option => NFuninterpreted_option};
      {#{uninterpreted_option := PFuninterpreted_option},
       _} ->
	  S2#{uninterpreted_option => PFuninterpreted_option};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MethodOptions'/3}).
'merge_msg_google.protobuf.MethodOptions'(PMsg, NMsg,
					  TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{uninterpreted_option := PFuninterpreted_option},
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option =>
		  'erlang_++'(PFuninterpreted_option,
			      NFuninterpreted_option, TrUserData)};
      {_,
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option => NFuninterpreted_option};
      {#{uninterpreted_option := PFuninterpreted_option},
       _} ->
	  S2#{uninterpreted_option => PFuninterpreted_option};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
'merge_msg_google.protobuf.UninterpretedOption.NamePart'(#{},
							 #{name_part :=
							       NFname_part,
							   is_extension :=
							       NFis_extension},
							 _) ->
    #{name_part => NFname_part,
      is_extension => NFis_extension}.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.UninterpretedOption'/3}).
'merge_msg_google.protobuf.UninterpretedOption'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{name := PFname}, #{name := NFname}} ->
	       S1#{name => 'erlang_++'(PFname, NFname, TrUserData)};
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{identifier_value := NFidentifier_value}} ->
	       S2#{identifier_value => NFidentifier_value};
	   {#{identifier_value := PFidentifier_value}, _} ->
	       S2#{identifier_value => PFidentifier_value};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{positive_int_value := NFpositive_int_value}} ->
	       S3#{positive_int_value => NFpositive_int_value};
	   {#{positive_int_value := PFpositive_int_value}, _} ->
	       S3#{positive_int_value => PFpositive_int_value};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{negative_int_value := NFnegative_int_value}} ->
	       S4#{negative_int_value => NFnegative_int_value};
	   {#{negative_int_value := PFnegative_int_value}, _} ->
	       S4#{negative_int_value => PFnegative_int_value};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{double_value := NFdouble_value}} ->
	       S5#{double_value => NFdouble_value};
	   {#{double_value := PFdouble_value}, _} ->
	       S5#{double_value => PFdouble_value};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{string_value := NFstring_value}} ->
	       S6#{string_value => NFstring_value};
	   {#{string_value := PFstring_value}, _} ->
	       S6#{string_value => PFstring_value};
	   _ -> S6
	 end,
    case {PMsg, NMsg} of
      {_, #{aggregate_value := NFaggregate_value}} ->
	  S7#{aggregate_value => NFaggregate_value};
      {#{aggregate_value := PFaggregate_value}, _} ->
	  S7#{aggregate_value => PFaggregate_value};
      _ -> S7
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.SourceCodeInfo.Location'/3}).
'merge_msg_google.protobuf.SourceCodeInfo.Location'(PMsg,
						    NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{path := PFpath}, #{path := NFpath}} ->
	       S1#{path => 'erlang_++'(PFpath, NFpath, TrUserData)};
	   {_, #{path := NFpath}} -> S1#{path => NFpath};
	   {#{path := PFpath}, _} -> S1#{path => PFpath};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{span := PFspan}, #{span := NFspan}} ->
	       S2#{span => 'erlang_++'(PFspan, NFspan, TrUserData)};
	   {_, #{span := NFspan}} -> S2#{span => NFspan};
	   {#{span := PFspan}, _} -> S2#{span => PFspan};
	   {_, _} -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{leading_comments := NFleading_comments}} ->
	       S3#{leading_comments => NFleading_comments};
	   {#{leading_comments := PFleading_comments}, _} ->
	       S3#{leading_comments => PFleading_comments};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{trailing_comments := NFtrailing_comments}} ->
	       S4#{trailing_comments => NFtrailing_comments};
	   {#{trailing_comments := PFtrailing_comments}, _} ->
	       S4#{trailing_comments => PFtrailing_comments};
	   _ -> S4
	 end,
    case {PMsg, NMsg} of
      {#{leading_detached_comments :=
	     PFleading_detached_comments},
       #{leading_detached_comments :=
	     NFleading_detached_comments}} ->
	  S5#{leading_detached_comments =>
		  'erlang_++'(PFleading_detached_comments,
			      NFleading_detached_comments, TrUserData)};
      {_,
       #{leading_detached_comments :=
	     NFleading_detached_comments}} ->
	  S5#{leading_detached_comments =>
		  NFleading_detached_comments};
      {#{leading_detached_comments :=
	     PFleading_detached_comments},
       _} ->
	  S5#{leading_detached_comments =>
		  PFleading_detached_comments};
      {_, _} -> S5
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.SourceCodeInfo'/3}).
'merge_msg_google.protobuf.SourceCodeInfo'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{location := PFlocation},
       #{location := NFlocation}} ->
	  S1#{location =>
		  'erlang_++'(PFlocation, NFlocation, TrUserData)};
      {_, #{location := NFlocation}} ->
	  S1#{location => NFlocation};
      {#{location := PFlocation}, _} ->
	  S1#{location => PFlocation};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'(PMsg,
							 NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{path := PFpath}, #{path := NFpath}} ->
	       S1#{path => 'erlang_++'(PFpath, NFpath, TrUserData)};
	   {_, #{path := NFpath}} -> S1#{path => NFpath};
	   {#{path := PFpath}, _} -> S1#{path => PFpath};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{source_file := NFsource_file}} ->
	       S2#{source_file => NFsource_file};
	   {#{source_file := PFsource_file}, _} ->
	       S2#{source_file => PFsource_file};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{'begin' := NFbegin}} -> S3#{'begin' => NFbegin};
	   {#{'begin' := PFbegin}, _} -> S3#{'begin' => PFbegin};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S4#{'end' => NFend};
      {#{'end' := PFend}, _} -> S4#{'end' => PFend};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.GeneratedCodeInfo'/3}).
'merge_msg_google.protobuf.GeneratedCodeInfo'(PMsg,
					      NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{annotation := PFannotation},
       #{annotation := NFannotation}} ->
	  S1#{annotation =>
		  'erlang_++'(PFannotation, NFannotation, TrUserData)};
      {_, #{annotation := NFannotation}} ->
	  S1#{annotation => NFannotation};
      {#{annotation := PFannotation}, _} ->
	  S1#{annotation => PFannotation};
      {_, _} -> S1
    end.


verify_msg(Msg, MsgName) when is_atom(MsgName) ->
    verify_msg(Msg, MsgName, []).

verify_msg(Msg, MsgName, Opts) ->
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'google.protobuf.FileDescriptorSet' ->
	  'v_msg_google.protobuf.FileDescriptorSet'(Msg,
						    [MsgName], TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'v_msg_google.protobuf.FileDescriptorProto'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								 [MsgName],
								 TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'v_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
								[MsgName],
								TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'v_msg_google.protobuf.DescriptorProto'(Msg, [MsgName],
						  TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'v_msg_google.protobuf.FieldDescriptorProto'(Msg,
						       [MsgName], TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'v_msg_google.protobuf.OneofDescriptorProto'(Msg,
						       [MsgName], TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'v_msg_google.protobuf.EnumDescriptorProto'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'v_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							   [MsgName],
							   TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'v_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							 [MsgName], TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'v_msg_google.protobuf.MethodDescriptorProto'(Msg,
							[MsgName], TrUserData);
      'google.protobuf.FileOptions' ->
	  'v_msg_google.protobuf.FileOptions'(Msg, [MsgName],
					      TrUserData);
      'google.protobuf.MessageOptions' ->
	  'v_msg_google.protobuf.MessageOptions'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.FieldOptions' ->
	  'v_msg_google.protobuf.FieldOptions'(Msg, [MsgName],
					       TrUserData);
      'google.protobuf.EnumOptions' ->
	  'v_msg_google.protobuf.EnumOptions'(Msg, [MsgName],
					      TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'v_msg_google.protobuf.EnumValueOptions'(Msg, [MsgName],
						   TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'v_msg_google.protobuf.ServiceOptions'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.MethodOptions' ->
	  'v_msg_google.protobuf.MethodOptions'(Msg, [MsgName],
						TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'v_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							       [MsgName],
							       TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'v_msg_google.protobuf.UninterpretedOption'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'v_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							  [MsgName],
							  TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'v_msg_google.protobuf.SourceCodeInfo'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							       [MsgName],
							       TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'v_msg_google.protobuf.GeneratedCodeInfo'(Msg,
						    [MsgName], TrUserData);
      _ -> mk_type_error(not_a_known_message, Msg, [])
    end.


-compile({nowarn_unused_function,'v_msg_google.protobuf.FileDescriptorSet'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileDescriptorSet'/3}).
'v_msg_google.protobuf.FileDescriptorSet'(#{} = M, Path,
					  TrUserData) ->
    case M of
      #{file := F1} ->
	  if is_list(F1) ->
		 _ = ['v_msg_google.protobuf.FileDescriptorProto'(Elem,
								  [file | Path],
								  TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FileDescriptorProto'}},
			       F1, [file | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (file) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileDescriptorSet'(M, Path,
					  _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileDescriptorSet'},
		  M, Path);
'v_msg_google.protobuf.FileDescriptorSet'(X, Path,
					  _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileDescriptorSet'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FileDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileDescriptorProto'/3}).
'v_msg_google.protobuf.FileDescriptorProto'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{package := F2} ->
	  v_type_string(F2, [package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{dependency := F3} ->
	  if is_list(F3) ->
		 _ = [v_type_string(Elem, [dependency | Path],
				    TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F3,
			       [dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{public_dependency := F4} ->
	  if is_list(F4) ->
		 _ = [v_type_int32(Elem, [public_dependency | Path],
				   TrUserData)
		      || Elem <- F4],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F4,
			       [public_dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{weak_dependency := F5} ->
	  if is_list(F5) ->
		 _ = [v_type_int32(Elem, [weak_dependency | Path],
				   TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F5,
			       [weak_dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{message_type := F6} ->
	  if is_list(F6) ->
		 _ = ['v_msg_google.protobuf.DescriptorProto'(Elem,
							      [message_type
							       | Path],
							      TrUserData)
		      || Elem <- F6],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.DescriptorProto'}},
			       F6, [message_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enum_type := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.EnumDescriptorProto'(Elem,
								  [enum_type
								   | Path],
								  TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.EnumDescriptorProto'}},
			       F7, [enum_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{service := F8} ->
	  if is_list(F8) ->
		 _ =
		     ['v_msg_google.protobuf.ServiceDescriptorProto'(Elem,
								     [service
								      | Path],
								     TrUserData)
		      || Elem <- F8],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.ServiceDescriptorProto'}},
			       F8, [service | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension := F9} ->
	  if is_list(F9) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [extension
								    | Path],
								   TrUserData)
		      || Elem <- F9],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F9, [extension | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F10} ->
	  'v_msg_google.protobuf.FileOptions'(F10,
					      [options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{source_code_info := F11} ->
	  'v_msg_google.protobuf.SourceCodeInfo'(F11,
						 [source_code_info | Path],
						 TrUserData);
      _ -> ok
    end,
    case M of
      #{syntax := F12} ->
	  v_type_string(F12, [syntax | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (package) -> ok;
		      (dependency) -> ok;
		      (public_dependency) -> ok;
		      (weak_dependency) -> ok;
		      (message_type) -> ok;
		      (enum_type) -> ok;
		      (service) -> ok;
		      (extension) -> ok;
		      (options) -> ok;
		      (source_code_info) -> ok;
		      (syntax) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileDescriptorProto'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.FileDescriptorProto'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(#{} =
							   M,
						       Path, TrUserData) ->
    case M of
      #{start := F1} ->
	  v_type_int32(F1, [start | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F2} ->
	  v_type_int32(F2, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (start) -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(M,
						       Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto.ExtensionRange'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(X,
						       Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto.ExtensionRange'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(#{} =
							  M,
						      Path, TrUserData) ->
    case M of
      #{start := F1} ->
	  v_type_int32(F1, [start | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F2} ->
	  v_type_int32(F2, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (start) -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(M,
						      Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto.ReservedRange'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(X,
						      Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto.ReservedRange'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto'/3}).
'v_msg_google.protobuf.DescriptorProto'(#{} = M, Path,
					TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{field := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [field
								    | Path],
								   TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F2, [field | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [extension
								    | Path],
								   TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F3, [extension | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{nested_type := F4} ->
	  if is_list(F4) ->
		 _ = ['v_msg_google.protobuf.DescriptorProto'(Elem,
							      [nested_type
							       | Path],
							      TrUserData)
		      || Elem <- F4],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.DescriptorProto'}},
			       F4, [nested_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enum_type := F5} ->
	  if is_list(F5) ->
		 _ = ['v_msg_google.protobuf.EnumDescriptorProto'(Elem,
								  [enum_type
								   | Path],
								  TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.EnumDescriptorProto'}},
			       F5, [enum_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension_range := F6} ->
	  if is_list(F6) ->
		 _ =
		     ['v_msg_google.protobuf.DescriptorProto.ExtensionRange'(Elem,
									     [extension_range
									      | Path],
									     TrUserData)
		      || Elem <- F6],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.DescriptorProto.ExtensionRange'}},
			       F6, [extension_range | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{oneof_decl := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.OneofDescriptorProto'(Elem,
								   [oneof_decl
								    | Path],
								   TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.OneofDescriptorProto'}},
			       F7, [oneof_decl | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F8} ->
	  'v_msg_google.protobuf.MessageOptions'(F8,
						 [options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{reserved_range := F9} ->
	  if is_list(F9) ->
		 _ =
		     ['v_msg_google.protobuf.DescriptorProto.ReservedRange'(Elem,
									    [reserved_range
									     | Path],
									    TrUserData)
		      || Elem <- F9],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.DescriptorProto.ReservedRange'}},
			       F9, [reserved_range | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{reserved_name := F10} ->
	  if is_list(F10) ->
		 _ = [v_type_string(Elem, [reserved_name | Path],
				    TrUserData)
		      || Elem <- F10],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F10,
			       [reserved_name | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (field) -> ok;
		      (extension) -> ok;
		      (nested_type) -> ok;
		      (enum_type) -> ok;
		      (extension_range) -> ok;
		      (oneof_decl) -> ok;
		      (options) -> ok;
		      (reserved_range) -> ok;
		      (reserved_name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto'(M, Path,
					_TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto'(X, Path,
					_TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FieldDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FieldDescriptorProto'/3}).
'v_msg_google.protobuf.FieldDescriptorProto'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{number := F2} ->
	  v_type_int32(F2, [number | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{label := F3} ->
	  'v_enum_google.protobuf.FieldDescriptorProto.Label'(F3,
							      [label | Path],
							      TrUserData);
      _ -> ok
    end,
    case M of
      #{type := F4} ->
	  'v_enum_google.protobuf.FieldDescriptorProto.Type'(F4,
							     [type | Path],
							     TrUserData);
      _ -> ok
    end,
    case M of
      #{type_name := F5} ->
	  v_type_string(F5, [type_name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{extendee := F6} ->
	  v_type_string(F6, [extendee | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{default_value := F7} ->
	  v_type_string(F7, [default_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{oneof_index := F8} ->
	  v_type_int32(F8, [oneof_index | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{json_name := F9} ->
	  v_type_string(F9, [json_name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F10} ->
	  'v_msg_google.protobuf.FieldOptions'(F10,
					       [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (number) -> ok;
		      (label) -> ok;
		      (type) -> ok;
		      (type_name) -> ok;
		      (extendee) -> ok;
		      (default_value) -> ok;
		      (oneof_index) -> ok;
		      (json_name) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FieldDescriptorProto'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FieldDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.FieldDescriptorProto'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FieldDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.OneofDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.OneofDescriptorProto'/3}).
'v_msg_google.protobuf.OneofDescriptorProto'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.OneofDescriptorProto'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.OneofDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.OneofDescriptorProto'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.OneofDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumDescriptorProto'/3}).
'v_msg_google.protobuf.EnumDescriptorProto'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F2} ->
	  if is_list(F2) ->
		 _ =
		     ['v_msg_google.protobuf.EnumValueDescriptorProto'(Elem,
								       [value
									| Path],
								       TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.EnumValueDescriptorProto'}},
			       F2, [value | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.EnumOptions'(F3,
					      [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (value) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumDescriptorProto'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.EnumDescriptorProto'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumValueDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumValueDescriptorProto'/3}).
'v_msg_google.protobuf.EnumValueDescriptorProto'(#{} =
						     M,
						 Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{number := F2} ->
	  v_type_int32(F2, [number | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.EnumValueOptions'(F3,
						   [options | Path],
						   TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (number) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumValueDescriptorProto'(M,
						 Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumValueDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.EnumValueDescriptorProto'(X,
						 Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumValueDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.ServiceDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.ServiceDescriptorProto'/3}).
'v_msg_google.protobuf.ServiceDescriptorProto'(#{} = M,
					       Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{method := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.MethodDescriptorProto'(Elem,
								    [method
								     | Path],
								    TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.MethodDescriptorProto'}},
			       F2, [method | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.ServiceOptions'(F3,
						 [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (method) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.ServiceDescriptorProto'(M, Path,
					       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.ServiceDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.ServiceDescriptorProto'(X, Path,
					       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.ServiceDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MethodDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MethodDescriptorProto'/3}).
'v_msg_google.protobuf.MethodDescriptorProto'(#{} = M,
					      Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{input_type := F2} ->
	  v_type_string(F2, [input_type | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{output_type := F3} ->
	  v_type_string(F3, [output_type | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F4} ->
	  'v_msg_google.protobuf.MethodOptions'(F4,
						[options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{client_streaming := F5} ->
	  v_type_bool(F5, [client_streaming | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{server_streaming := F6} ->
	  v_type_bool(F6, [server_streaming | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (input_type) -> ok;
		      (output_type) -> ok;
		      (options) -> ok;
		      (client_streaming) -> ok;
		      (server_streaming) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MethodDescriptorProto'(M, Path,
					      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MethodDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.MethodDescriptorProto'(X, Path,
					      _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MethodDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FileOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileOptions'/3}).
'v_msg_google.protobuf.FileOptions'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{java_package := F1} ->
	  v_type_string(F1, [java_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{java_outer_classname := F2} ->
	  v_type_string(F2, [java_outer_classname | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{java_multiple_files := F3} ->
	  v_type_bool(F3, [java_multiple_files | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_generate_equals_and_hash := F4} ->
	  v_type_bool(F4, [java_generate_equals_and_hash | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_string_check_utf8 := F5} ->
	  v_type_bool(F5, [java_string_check_utf8 | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{optimize_for := F6} ->
	  'v_enum_google.protobuf.FileOptions.OptimizeMode'(F6,
							    [optimize_for
							     | Path],
							    TrUserData);
      _ -> ok
    end,
    case M of
      #{go_package := F7} ->
	  v_type_string(F7, [go_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{cc_generic_services := F8} ->
	  v_type_bool(F8, [cc_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_generic_services := F9} ->
	  v_type_bool(F9, [java_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{py_generic_services := F10} ->
	  v_type_bool(F10, [py_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F11} ->
	  v_type_bool(F11, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{cc_enable_arenas := F12} ->
	  v_type_bool(F12, [cc_enable_arenas | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{objc_class_prefix := F13} ->
	  v_type_string(F13, [objc_class_prefix | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{csharp_namespace := F14} ->
	  v_type_string(F14, [csharp_namespace | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{javanano_use_deprecated_package := F15} ->
	  v_type_bool(F15,
		      [javanano_use_deprecated_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F16} ->
	  if is_list(F16) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F16],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F16, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_getters_all := F17} ->
	  v_type_bool(F17, [goproto_getters_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_prefix_all := F18} ->
	  v_type_bool(F18, [goproto_enum_prefix_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_stringer_all := F19} ->
	  v_type_bool(F19, [goproto_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{verbose_equal_all := F20} ->
	  v_type_bool(F20, [verbose_equal_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{face_all := F21} ->
	  v_type_bool(F21, [face_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{gostring_all := F22} ->
	  v_type_bool(F22, [gostring_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{populate_all := F23} ->
	  v_type_bool(F23, [populate_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stringer_all := F24} ->
	  v_type_bool(F24, [stringer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{onlyone_all := F25} ->
	  v_type_bool(F25, [onlyone_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{equal_all := F26} ->
	  v_type_bool(F26, [equal_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{description_all := F27} ->
	  v_type_bool(F27, [description_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{testgen_all := F28} ->
	  v_type_bool(F28, [testgen_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{benchgen_all := F29} ->
	  v_type_bool(F29, [benchgen_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{marshaler_all := F30} ->
	  v_type_bool(F30, [marshaler_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unmarshaler_all := F31} ->
	  v_type_bool(F31, [unmarshaler_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stable_marshaler_all := F32} ->
	  v_type_bool(F32, [stable_marshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{sizer_all := F33} ->
	  v_type_bool(F33, [sizer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_stringer_all := F34} ->
	  v_type_bool(F34, [goproto_enum_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_stringer_all := F35} ->
	  v_type_bool(F35, [enum_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_marshaler_all := F36} ->
	  v_type_bool(F36, [unsafe_marshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_unmarshaler_all := F37} ->
	  v_type_bool(F37, [unsafe_unmarshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_extensions_map_all := F38} ->
	  v_type_bool(F38, [goproto_extensions_map_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_unrecognized_all := F39} ->
	  v_type_bool(F39, [goproto_unrecognized_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{gogoproto_import := F40} ->
	  v_type_bool(F40, [gogoproto_import | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{protosizer_all := F41} ->
	  v_type_bool(F41, [protosizer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compare_all := F42} ->
	  v_type_bool(F42, [compare_all | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (java_package) -> ok;
		      (java_outer_classname) -> ok;
		      (java_multiple_files) -> ok;
		      (java_generate_equals_and_hash) -> ok;
		      (java_string_check_utf8) -> ok;
		      (optimize_for) -> ok;
		      (go_package) -> ok;
		      (cc_generic_services) -> ok;
		      (java_generic_services) -> ok;
		      (py_generic_services) -> ok;
		      (deprecated) -> ok;
		      (cc_enable_arenas) -> ok;
		      (objc_class_prefix) -> ok;
		      (csharp_namespace) -> ok;
		      (javanano_use_deprecated_package) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_getters_all) -> ok;
		      (goproto_enum_prefix_all) -> ok;
		      (goproto_stringer_all) -> ok;
		      (verbose_equal_all) -> ok;
		      (face_all) -> ok;
		      (gostring_all) -> ok;
		      (populate_all) -> ok;
		      (stringer_all) -> ok;
		      (onlyone_all) -> ok;
		      (equal_all) -> ok;
		      (description_all) -> ok;
		      (testgen_all) -> ok;
		      (benchgen_all) -> ok;
		      (marshaler_all) -> ok;
		      (unmarshaler_all) -> ok;
		      (stable_marshaler_all) -> ok;
		      (sizer_all) -> ok;
		      (goproto_enum_stringer_all) -> ok;
		      (enum_stringer_all) -> ok;
		      (unsafe_marshaler_all) -> ok;
		      (unsafe_unmarshaler_all) -> ok;
		      (goproto_extensions_map_all) -> ok;
		      (goproto_unrecognized_all) -> ok;
		      (gogoproto_import) -> ok;
		      (protosizer_all) -> ok;
		      (compare_all) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileOptions'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileOptions'},
		  M, Path);
'v_msg_google.protobuf.FileOptions'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MessageOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MessageOptions'/3}).
'v_msg_google.protobuf.MessageOptions'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{message_set_wire_format := F1} ->
	  v_type_bool(F1, [message_set_wire_format | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{no_standard_descriptor_accessor := F2} ->
	  v_type_bool(F2,
		      [no_standard_descriptor_accessor | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F3} ->
	  v_type_bool(F3, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{map_entry := F4} ->
	  v_type_bool(F4, [map_entry | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F5} ->
	  if is_list(F5) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F5, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_getters := F6} ->
	  v_type_bool(F6, [goproto_getters | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_stringer := F7} ->
	  v_type_bool(F7, [goproto_stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{verbose_equal := F8} ->
	  v_type_bool(F8, [verbose_equal | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{face := F9} ->
	  v_type_bool(F9, [face | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{gostring := F10} ->
	  v_type_bool(F10, [gostring | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{populate := F11} ->
	  v_type_bool(F11, [populate | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stringer := F12} ->
	  v_type_bool(F12, [stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{onlyone := F13} ->
	  v_type_bool(F13, [onlyone | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{equal := F14} ->
	  v_type_bool(F14, [equal | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{description := F15} ->
	  v_type_bool(F15, [description | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{testgen := F16} ->
	  v_type_bool(F16, [testgen | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{benchgen := F17} ->
	  v_type_bool(F17, [benchgen | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{marshaler := F18} ->
	  v_type_bool(F18, [marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unmarshaler := F19} ->
	  v_type_bool(F19, [unmarshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stable_marshaler := F20} ->
	  v_type_bool(F20, [stable_marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{sizer := F21} ->
	  v_type_bool(F21, [sizer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_marshaler := F22} ->
	  v_type_bool(F22, [unsafe_marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_unmarshaler := F23} ->
	  v_type_bool(F23, [unsafe_unmarshaler | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_extensions_map := F24} ->
	  v_type_bool(F24, [goproto_extensions_map | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_unrecognized := F25} ->
	  v_type_bool(F25, [goproto_unrecognized | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{protosizer := F26} ->
	  v_type_bool(F26, [protosizer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compare := F27} ->
	  v_type_bool(F27, [compare | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (message_set_wire_format) -> ok;
		      (no_standard_descriptor_accessor) -> ok;
		      (deprecated) -> ok;
		      (map_entry) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_getters) -> ok;
		      (goproto_stringer) -> ok;
		      (verbose_equal) -> ok;
		      (face) -> ok;
		      (gostring) -> ok;
		      (populate) -> ok;
		      (stringer) -> ok;
		      (onlyone) -> ok;
		      (equal) -> ok;
		      (description) -> ok;
		      (testgen) -> ok;
		      (benchgen) -> ok;
		      (marshaler) -> ok;
		      (unmarshaler) -> ok;
		      (stable_marshaler) -> ok;
		      (sizer) -> ok;
		      (unsafe_marshaler) -> ok;
		      (unsafe_unmarshaler) -> ok;
		      (goproto_extensions_map) -> ok;
		      (goproto_unrecognized) -> ok;
		      (protosizer) -> ok;
		      (compare) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MessageOptions'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MessageOptions'},
		  M, Path);
'v_msg_google.protobuf.MessageOptions'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MessageOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FieldOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FieldOptions'/3}).
'v_msg_google.protobuf.FieldOptions'(#{} = M, Path,
				     TrUserData) ->
    case M of
      #{ctype := F1} ->
	  'v_enum_google.protobuf.FieldOptions.CType'(F1,
						      [ctype | Path],
						      TrUserData);
      _ -> ok
    end,
    case M of
      #{packed := F2} ->
	  v_type_bool(F2, [packed | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{jstype := F3} ->
	  'v_enum_google.protobuf.FieldOptions.JSType'(F3,
						       [jstype | Path],
						       TrUserData);
      _ -> ok
    end,
    case M of
      #{lazy := F4} ->
	  v_type_bool(F4, [lazy | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F5} ->
	  v_type_bool(F5, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{weak := F6} ->
	  v_type_bool(F6, [weak | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F7, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{nullable := F8} ->
	  v_type_bool(F8, [nullable | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{embed := F9} ->
	  v_type_bool(F9, [embed | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{customtype := F10} ->
	  v_type_string(F10, [customtype | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{customname := F11} ->
	  v_type_string(F11, [customname | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{jsontag := F12} ->
	  v_type_string(F12, [jsontag | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{moretags := F13} ->
	  v_type_string(F13, [moretags | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{casttype := F14} ->
	  v_type_string(F14, [casttype | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{castkey := F15} ->
	  v_type_string(F15, [castkey | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{castvalue := F16} ->
	  v_type_string(F16, [castvalue | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stdtime := F17} ->
	  v_type_bool(F17, [stdtime | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stdduration := F18} ->
	  v_type_bool(F18, [stdduration | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (ctype) -> ok;
		      (packed) -> ok;
		      (jstype) -> ok;
		      (lazy) -> ok;
		      (deprecated) -> ok;
		      (weak) -> ok;
		      (uninterpreted_option) -> ok;
		      (nullable) -> ok;
		      (embed) -> ok;
		      (customtype) -> ok;
		      (customname) -> ok;
		      (jsontag) -> ok;
		      (moretags) -> ok;
		      (casttype) -> ok;
		      (castkey) -> ok;
		      (castvalue) -> ok;
		      (stdtime) -> ok;
		      (stdduration) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FieldOptions'(M, Path,
				     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FieldOptions'},
		  M, Path);
'v_msg_google.protobuf.FieldOptions'(X, Path,
				     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FieldOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumOptions'/3}).
'v_msg_google.protobuf.EnumOptions'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{allow_alias := F1} ->
	  v_type_bool(F1, [allow_alias | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F2} ->
	  v_type_bool(F2, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F3, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_enum_prefix := F4} ->
	  v_type_bool(F4, [goproto_enum_prefix | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_stringer := F5} ->
	  v_type_bool(F5, [goproto_enum_stringer | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_stringer := F6} ->
	  v_type_bool(F6, [enum_stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_customname := F7} ->
	  v_type_string(F7, [enum_customname | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (allow_alias) -> ok;
		      (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_enum_prefix) -> ok;
		      (goproto_enum_stringer) -> ok;
		      (enum_stringer) -> ok;
		      (enum_customname) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumOptions'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumOptions'},
		  M, Path);
'v_msg_google.protobuf.EnumOptions'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumValueOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumValueOptions'/3}).
'v_msg_google.protobuf.EnumValueOptions'(#{} = M, Path,
					 TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enumvalue_customname := F3} ->
	  v_type_string(F3, [enumvalue_customname | Path],
			TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (enumvalue_customname) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumValueOptions'(M, Path,
					 _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumValueOptions'},
		  M, Path);
'v_msg_google.protobuf.EnumValueOptions'(X, Path,
					 _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumValueOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.ServiceOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.ServiceOptions'/3}).
'v_msg_google.protobuf.ServiceOptions'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.ServiceOptions'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.ServiceOptions'},
		  M, Path);
'v_msg_google.protobuf.ServiceOptions'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.ServiceOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MethodOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MethodOptions'/3}).
'v_msg_google.protobuf.MethodOptions'(#{} = M, Path,
				      TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MethodOptions'(M, Path,
				      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MethodOptions'},
		  M, Path);
'v_msg_google.protobuf.MethodOptions'(X, Path,
				      _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MethodOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
'v_msg_google.protobuf.UninterpretedOption.NamePart'(#{name_part
							   := F1,
						       is_extension := F2} =
							 M,
						     Path, TrUserData) ->
    v_type_string(F1, [name_part | Path], TrUserData),
    v_type_bool(F2, [is_extension | Path], TrUserData),
    lists:foreach(fun (name_part) -> ok;
		      (is_extension) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.UninterpretedOption.NamePart'(M,
						     Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields,
		   [name_part, is_extension] -- maps:keys(M),
		   'google.protobuf.UninterpretedOption.NamePart'},
		  M, Path);
'v_msg_google.protobuf.UninterpretedOption.NamePart'(X,
						     Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.UninterpretedOption.NamePart'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.UninterpretedOption'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.UninterpretedOption'/3}).
'v_msg_google.protobuf.UninterpretedOption'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.UninterpretedOption.NamePart'(Elem,
									   [name
									    | Path],
									   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.UninterpretedOption.NamePart'}},
			       F1, [name | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{identifier_value := F2} ->
	  v_type_string(F2, [identifier_value | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{positive_int_value := F3} ->
	  v_type_uint64(F3, [positive_int_value | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{negative_int_value := F4} ->
	  v_type_int64(F4, [negative_int_value | Path],
		       TrUserData);
      _ -> ok
    end,
    case M of
      #{double_value := F5} ->
	  v_type_double(F5, [double_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{string_value := F6} ->
	  v_type_bytes(F6, [string_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{aggregate_value := F7} ->
	  v_type_string(F7, [aggregate_value | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (identifier_value) -> ok;
		      (positive_int_value) -> ok;
		      (negative_int_value) -> ok;
		      (double_value) -> ok;
		      (string_value) -> ok;
		      (aggregate_value) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.UninterpretedOption'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.UninterpretedOption'},
		  M, Path);
'v_msg_google.protobuf.UninterpretedOption'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.UninterpretedOption'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.SourceCodeInfo.Location'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.SourceCodeInfo.Location'/3}).
'v_msg_google.protobuf.SourceCodeInfo.Location'(#{} = M,
						Path, TrUserData) ->
    case M of
      #{path := F1} ->
	  if is_list(F1) ->
		 _ = [v_type_int32(Elem, [path | Path], TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F1,
			       [path | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{span := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_int32(Elem, [span | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F2,
			       [span | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{leading_comments := F3} ->
	  v_type_string(F3, [leading_comments | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{trailing_comments := F4} ->
	  v_type_string(F4, [trailing_comments | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{leading_detached_comments := F5} ->
	  if is_list(F5) ->
		 _ = [v_type_string(Elem,
				    [leading_detached_comments | Path],
				    TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F5,
			       [leading_detached_comments | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (path) -> ok;
		      (span) -> ok;
		      (leading_comments) -> ok;
		      (trailing_comments) -> ok;
		      (leading_detached_comments) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.SourceCodeInfo.Location'(M, Path,
						_TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.SourceCodeInfo.Location'},
		  M, Path);
'v_msg_google.protobuf.SourceCodeInfo.Location'(X, Path,
						_TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.SourceCodeInfo.Location'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.SourceCodeInfo'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.SourceCodeInfo'/3}).
'v_msg_google.protobuf.SourceCodeInfo'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{location := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.SourceCodeInfo.Location'(Elem,
								      [location
								       | Path],
								      TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.SourceCodeInfo.Location'}},
			       F1, [location | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (location) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.SourceCodeInfo'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.SourceCodeInfo'},
		  M, Path);
'v_msg_google.protobuf.SourceCodeInfo'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.SourceCodeInfo'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(#{} =
							 M,
						     Path, TrUserData) ->
    case M of
      #{path := F1} ->
	  if is_list(F1) ->
		 _ = [v_type_int32(Elem, [path | Path], TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F1,
			       [path | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{source_file := F2} ->
	  v_type_string(F2, [source_file | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'begin' := F3} ->
	  v_type_int32(F3, ['begin' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F4} ->
	  v_type_int32(F4, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (path) -> ok;
		      (source_file) -> ok;
		      ('begin') -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(M,
						     Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.GeneratedCodeInfo.Annotation'},
		  M, Path);
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(X,
						     Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.GeneratedCodeInfo.Annotation'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.GeneratedCodeInfo'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.GeneratedCodeInfo'/3}).
'v_msg_google.protobuf.GeneratedCodeInfo'(#{} = M, Path,
					  TrUserData) ->
    case M of
      #{annotation := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Elem,
									   [annotation
									    | Path],
									   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.GeneratedCodeInfo.Annotation'}},
			       F1, [annotation | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (annotation) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.GeneratedCodeInfo'(M, Path,
					  _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.GeneratedCodeInfo'},
		  M, Path);
'v_msg_google.protobuf.GeneratedCodeInfo'(X, Path,
					  _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.GeneratedCodeInfo'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldDescriptorProto.Type'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldDescriptorProto.Type'/3}).
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'(V,
						   Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldDescriptorProto.Type'(X,
						   Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldDescriptorProto.Type'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldDescriptorProto.Label'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldDescriptorProto.Label'/3}).
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'(V,
						    Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldDescriptorProto.Label'(X,
						    Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldDescriptorProto.Label'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FileOptions.OptimizeMode'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FileOptions.OptimizeMode'/3}).
'v_enum_google.protobuf.FileOptions.OptimizeMode'('SPEED',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'(V,
						  Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FileOptions.OptimizeMode'(X,
						  Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FileOptions.OptimizeMode'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldOptions.CType'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldOptions.CType'/3}).
'v_enum_google.protobuf.FieldOptions.CType'('STRING',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'('CORD',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'('STRING_PIECE',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'(V, Path,
					    TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldOptions.CType'(X, Path,
					    _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldOptions.CType'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldOptions.JSType'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldOptions.JSType'/3}).
'v_enum_google.protobuf.FieldOptions.JSType'('JS_NORMAL',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'('JS_STRING',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'('JS_NUMBER',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'(V, Path,
					     TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldOptions.JSType'(X, Path,
					     _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldOptions.JSType'},
		  X, Path).

-compile({nowarn_unused_function,v_type_sint32/3}).
-dialyzer({nowarn_function,v_type_sint32/3}).
v_type_sint32(N, _Path, _TrUserData)
    when -2147483648 =< N, N =< 2147483647 ->
    ok;
v_type_sint32(N, Path, _TrUserData)
    when is_integer(N) ->
    mk_type_error({value_out_of_range, sint32, signed, 32},
		  N, Path);
v_type_sint32(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, sint32, signed, 32}, X,
		  Path).

-compile({nowarn_unused_function,v_type_int32/3}).
-dialyzer({nowarn_function,v_type_int32/3}).
v_type_int32(N, _Path, _TrUserData)
    when -2147483648 =< N, N =< 2147483647 ->
    ok;
v_type_int32(N, Path, _TrUserData) when is_integer(N) ->
    mk_type_error({value_out_of_range, int32, signed, 32},
		  N, Path);
v_type_int32(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, int32, signed, 32}, X,
		  Path).

-compile({nowarn_unused_function,v_type_int64/3}).
-dialyzer({nowarn_function,v_type_int64/3}).
v_type_int64(N, _Path, _TrUserData)
    when -9223372036854775808 =< N,
	 N =< 9223372036854775807 ->
    ok;
v_type_int64(N, Path, _TrUserData) when is_integer(N) ->
    mk_type_error({value_out_of_range, int64, signed, 64},
		  N, Path);
v_type_int64(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, int64, signed, 64}, X,
		  Path).

-compile({nowarn_unused_function,v_type_uint64/3}).
-dialyzer({nowarn_function,v_type_uint64/3}).
v_type_uint64(N, _Path, _TrUserData)
    when 0 =< N, N =< 18446744073709551615 ->
    ok;
v_type_uint64(N, Path, _TrUserData)
    when is_integer(N) ->
    mk_type_error({value_out_of_range, uint64, unsigned,
		   64},
		  N, Path);
v_type_uint64(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, uint64, unsigned, 64}, X,
		  Path).

-compile({nowarn_unused_function,v_type_bool/3}).
-dialyzer({nowarn_function,v_type_bool/3}).
v_type_bool(false, _Path, _TrUserData) -> ok;
v_type_bool(true, _Path, _TrUserData) -> ok;
v_type_bool(0, _Path, _TrUserData) -> ok;
v_type_bool(1, _Path, _TrUserData) -> ok;
v_type_bool(X, Path, _TrUserData) ->
    mk_type_error(bad_boolean_value, X, Path).

-compile({nowarn_unused_function,v_type_double/3}).
-dialyzer({nowarn_function,v_type_double/3}).
v_type_double(N, _Path, _TrUserData) when is_float(N) ->
    ok;
v_type_double(N, _Path, _TrUserData)
    when is_integer(N) ->
    ok;
v_type_double(infinity, _Path, _TrUserData) -> ok;
v_type_double('-infinity', _Path, _TrUserData) -> ok;
v_type_double(nan, _Path, _TrUserData) -> ok;
v_type_double(X, Path, _TrUserData) ->
    mk_type_error(bad_double_value, X, Path).

-compile({nowarn_unused_function,v_type_string/3}).
-dialyzer({nowarn_function,v_type_string/3}).
v_type_string(S, Path, _TrUserData)
    when is_list(S); is_binary(S) ->
    try unicode:characters_to_binary(S) of
      B when is_binary(B) -> ok;
      {error, _, _} ->
	  mk_type_error(bad_unicode_string, S, Path)
    catch
      error:badarg ->
	  mk_type_error(bad_unicode_string, S, Path)
    end;
v_type_string(X, Path, _TrUserData) ->
    mk_type_error(bad_unicode_string, X, Path).

-compile({nowarn_unused_function,v_type_bytes/3}).
-dialyzer({nowarn_function,v_type_bytes/3}).
v_type_bytes(B, _Path, _TrUserData) when is_binary(B) ->
    ok;
v_type_bytes(B, _Path, _TrUserData) when is_list(B) ->
    ok;
v_type_bytes(X, Path, _TrUserData) ->
    mk_type_error(bad_binary_value, X, Path).

-compile({nowarn_unused_function,mk_type_error/3}).
-spec mk_type_error(_, _, list()) -> no_return().
mk_type_error(Error, ValueSeen, Path) ->
    Path2 = prettify_path(Path),
    erlang:error({gpb_type_error,
		  {Error, [{value, ValueSeen}, {path, Path2}]}}).


-compile({nowarn_unused_function,prettify_path/1}).
-dialyzer({nowarn_function,prettify_path/1}).
prettify_path([]) -> top_level;
prettify_path(PathR) ->
    list_to_atom(lists:append(lists:join(".",
					 lists:map(fun atom_to_list/1,
						   lists:reverse(PathR))))).


-compile({nowarn_unused_function,id/2}).
-compile({inline,id/2}).
id(X, _TrUserData) -> X.

-compile({nowarn_unused_function,v_ok/3}).
-compile({inline,v_ok/3}).
v_ok(_Value, _Path, _TrUserData) -> ok.

-compile({nowarn_unused_function,m_overwrite/3}).
-compile({inline,m_overwrite/3}).
m_overwrite(_Prev, New, _TrUserData) -> New.

-compile({nowarn_unused_function,cons/3}).
-compile({inline,cons/3}).
cons(Elem, Acc, _TrUserData) -> [Elem | Acc].

-compile({nowarn_unused_function,lists_reverse/2}).
-compile({inline,lists_reverse/2}).
'lists_reverse'(L, _TrUserData) -> lists:reverse(L).
-compile({nowarn_unused_function,'erlang_++'/3}).
-compile({inline,'erlang_++'/3}).
'erlang_++'(A, B, _TrUserData) -> A ++ B.


get_msg_defs() ->
    [{{enum, 'google.protobuf.FieldDescriptorProto.Type'},
      [{'TYPE_DOUBLE', 1}, {'TYPE_FLOAT', 2},
       {'TYPE_INT64', 3}, {'TYPE_UINT64', 4},
       {'TYPE_INT32', 5}, {'TYPE_FIXED64', 6},
       {'TYPE_FIXED32', 7}, {'TYPE_BOOL', 8},
       {'TYPE_STRING', 9}, {'TYPE_GROUP', 10},
       {'TYPE_MESSAGE', 11}, {'TYPE_BYTES', 12},
       {'TYPE_UINT32', 13}, {'TYPE_ENUM', 14},
       {'TYPE_SFIXED32', 15}, {'TYPE_SFIXED64', 16},
       {'TYPE_SINT32', 17}, {'TYPE_SINT64', 18}]},
     {{enum, 'google.protobuf.FieldDescriptorProto.Label'},
      [{'LABEL_OPTIONAL', 1}, {'LABEL_REQUIRED', 2},
       {'LABEL_REPEATED', 3}]},
     {{enum, 'google.protobuf.FileOptions.OptimizeMode'},
      [{'SPEED', 1}, {'CODE_SIZE', 2}, {'LITE_RUNTIME', 3}]},
     {{enum, 'google.protobuf.FieldOptions.CType'},
      [{'STRING', 0}, {'CORD', 1}, {'STRING_PIECE', 2}]},
     {{enum, 'google.protobuf.FieldOptions.JSType'},
      [{'JS_NORMAL', 0}, {'JS_STRING', 1}, {'JS_NUMBER', 2}]},
     {{msg, 'google.protobuf.FileDescriptorSet'},
      [#{name => file, fnum => 1, rnum => 2,
	 type => {msg, 'google.protobuf.FileDescriptorProto'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.FileDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => package, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []},
       #{name => dependency, fnum => 3, rnum => 4,
	 type => string, occurrence => repeated, opts => []},
       #{name => public_dependency, fnum => 10, rnum => 5,
	 type => int32, occurrence => repeated, opts => []},
       #{name => weak_dependency, fnum => 11, rnum => 6,
	 type => int32, occurrence => repeated, opts => []},
       #{name => message_type, fnum => 4, rnum => 7,
	 type => {msg, 'google.protobuf.DescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => enum_type, fnum => 5, rnum => 8,
	 type => {msg, 'google.protobuf.EnumDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => service, fnum => 6, rnum => 9,
	 type => {msg, 'google.protobuf.ServiceDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension, fnum => 7, rnum => 10,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 8, rnum => 11,
	 type => {msg, 'google.protobuf.FileOptions'},
	 occurrence => optional, opts => []},
       #{name => source_code_info, fnum => 9, rnum => 12,
	 type => {msg, 'google.protobuf.SourceCodeInfo'},
	 occurrence => optional, opts => []},
       #{name => syntax, fnum => 12, rnum => 13,
	 type => string, occurrence => optional, opts => []}]},
     {{msg,
       'google.protobuf.DescriptorProto.ExtensionRange'},
      [#{name => start, fnum => 1, rnum => 2, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.DescriptorProto.ReservedRange'},
      [#{name => start, fnum => 1, rnum => 2, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.DescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => field, fnum => 2, rnum => 3,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension, fnum => 6, rnum => 4,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => nested_type, fnum => 3, rnum => 5,
	 type => {msg, 'google.protobuf.DescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => enum_type, fnum => 4, rnum => 6,
	 type => {msg, 'google.protobuf.EnumDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension_range, fnum => 5, rnum => 7,
	 type =>
	     {msg, 'google.protobuf.DescriptorProto.ExtensionRange'},
	 occurrence => repeated, opts => []},
       #{name => oneof_decl, fnum => 8, rnum => 8,
	 type => {msg, 'google.protobuf.OneofDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 7, rnum => 9,
	 type => {msg, 'google.protobuf.MessageOptions'},
	 occurrence => optional, opts => []},
       #{name => reserved_range, fnum => 9, rnum => 10,
	 type =>
	     {msg, 'google.protobuf.DescriptorProto.ReservedRange'},
	 occurrence => repeated, opts => []},
       #{name => reserved_name, fnum => 10, rnum => 11,
	 type => string, occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.FieldDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => number, fnum => 3, rnum => 3, type => int32,
	 occurrence => optional, opts => []},
       #{name => label, fnum => 4, rnum => 4,
	 type =>
	     {enum, 'google.protobuf.FieldDescriptorProto.Label'},
	 occurrence => optional, opts => []},
       #{name => type, fnum => 5, rnum => 5,
	 type =>
	     {enum, 'google.protobuf.FieldDescriptorProto.Type'},
	 occurrence => optional, opts => []},
       #{name => type_name, fnum => 6, rnum => 6,
	 type => string, occurrence => optional, opts => []},
       #{name => extendee, fnum => 2, rnum => 7,
	 type => string, occurrence => optional, opts => []},
       #{name => default_value, fnum => 7, rnum => 8,
	 type => string, occurrence => optional, opts => []},
       #{name => oneof_index, fnum => 9, rnum => 9,
	 type => int32, occurrence => optional, opts => []},
       #{name => json_name, fnum => 10, rnum => 10,
	 type => string, occurrence => optional, opts => []},
       #{name => options, fnum => 8, rnum => 11,
	 type => {msg, 'google.protobuf.FieldOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.OneofDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => value, fnum => 2, rnum => 3,
	 type =>
	     {msg, 'google.protobuf.EnumValueDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.EnumOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumValueDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => number, fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.EnumValueOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.ServiceDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => method, fnum => 2, rnum => 3,
	 type => {msg, 'google.protobuf.MethodDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.ServiceOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.MethodDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => input_type, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => output_type, fnum => 3, rnum => 4,
	 type => string, occurrence => optional, opts => []},
       #{name => options, fnum => 4, rnum => 5,
	 type => {msg, 'google.protobuf.MethodOptions'},
	 occurrence => optional, opts => []},
       #{name => client_streaming, fnum => 5, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => server_streaming, fnum => 6, rnum => 7,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]}]},
     {{msg, 'google.protobuf.FileOptions'},
      [#{name => java_package, fnum => 1, rnum => 2,
	 type => string, occurrence => optional, opts => []},
       #{name => java_outer_classname, fnum => 8, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => java_multiple_files, fnum => 10, rnum => 4,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_generate_equals_and_hash, fnum => 20,
	 rnum => 5, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_string_check_utf8, fnum => 27, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => optimize_for, fnum => 9, rnum => 7,
	 type =>
	     {enum, 'google.protobuf.FileOptions.OptimizeMode'},
	 occurrence => optional, opts => [{default, 'SPEED'}]},
       #{name => go_package, fnum => 11, rnum => 8,
	 type => string, occurrence => optional, opts => []},
       #{name => cc_generic_services, fnum => 16, rnum => 9,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_generic_services, fnum => 17, rnum => 10,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => py_generic_services, fnum => 18, rnum => 11,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => deprecated, fnum => 23, rnum => 12,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => cc_enable_arenas, fnum => 31, rnum => 13,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => objc_class_prefix, fnum => 36, rnum => 14,
	 type => string, occurrence => optional, opts => []},
       #{name => csharp_namespace, fnum => 37, rnum => 15,
	 type => string, occurrence => optional, opts => []},
       #{name => javanano_use_deprecated_package, fnum => 38,
	 rnum => 16, type => bool, occurrence => optional,
	 opts => [deprecated]},
       #{name => uninterpreted_option, fnum => 999, rnum => 17,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_getters_all, fnum => 63001,
	 rnum => 18, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_enum_prefix_all, fnum => 63002,
	 rnum => 19, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_stringer_all, fnum => 63003,
	 rnum => 20, type => bool, occurrence => optional,
	 opts => []},
       #{name => verbose_equal_all, fnum => 63004, rnum => 21,
	 type => bool, occurrence => optional, opts => []},
       #{name => face_all, fnum => 63005, rnum => 22,
	 type => bool, occurrence => optional, opts => []},
       #{name => gostring_all, fnum => 63006, rnum => 23,
	 type => bool, occurrence => optional, opts => []},
       #{name => populate_all, fnum => 63007, rnum => 24,
	 type => bool, occurrence => optional, opts => []},
       #{name => stringer_all, fnum => 63008, rnum => 25,
	 type => bool, occurrence => optional, opts => []},
       #{name => onlyone_all, fnum => 63009, rnum => 26,
	 type => bool, occurrence => optional, opts => []},
       #{name => equal_all, fnum => 63013, rnum => 27,
	 type => bool, occurrence => optional, opts => []},
       #{name => description_all, fnum => 63014, rnum => 28,
	 type => bool, occurrence => optional, opts => []},
       #{name => testgen_all, fnum => 63015, rnum => 29,
	 type => bool, occurrence => optional, opts => []},
       #{name => benchgen_all, fnum => 63016, rnum => 30,
	 type => bool, occurrence => optional, opts => []},
       #{name => marshaler_all, fnum => 63017, rnum => 31,
	 type => bool, occurrence => optional, opts => []},
       #{name => unmarshaler_all, fnum => 63018, rnum => 32,
	 type => bool, occurrence => optional, opts => []},
       #{name => stable_marshaler_all, fnum => 63019,
	 rnum => 33, type => bool, occurrence => optional,
	 opts => []},
       #{name => sizer_all, fnum => 63020, rnum => 34,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_enum_stringer_all, fnum => 63021,
	 rnum => 35, type => bool, occurrence => optional,
	 opts => []},
       #{name => enum_stringer_all, fnum => 63022, rnum => 36,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_marshaler_all, fnum => 63023,
	 rnum => 37, type => bool, occurrence => optional,
	 opts => []},
       #{name => unsafe_unmarshaler_all, fnum => 63024,
	 rnum => 38, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_extensions_map_all, fnum => 63025,
	 rnum => 39, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_unrecognized_all, fnum => 63026,
	 rnum => 40, type => bool, occurrence => optional,
	 opts => []},
       #{name => gogoproto_import, fnum => 63027, rnum => 41,
	 type => bool, occurrence => optional, opts => []},
       #{name => protosizer_all, fnum => 63028, rnum => 42,
	 type => bool, occurrence => optional, opts => []},
       #{name => compare_all, fnum => 63029, rnum => 43,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.MessageOptions'},
      [#{name => message_set_wire_format, fnum => 1,
	 rnum => 2, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => no_standard_descriptor_accessor, fnum => 2,
	 rnum => 3, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => deprecated, fnum => 3, rnum => 4,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => map_entry, fnum => 7, rnum => 5, type => bool,
	 occurrence => optional, opts => []},
       #{name => uninterpreted_option, fnum => 999, rnum => 6,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_getters, fnum => 64001, rnum => 7,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_stringer, fnum => 64003, rnum => 8,
	 type => bool, occurrence => optional, opts => []},
       #{name => verbose_equal, fnum => 64004, rnum => 9,
	 type => bool, occurrence => optional, opts => []},
       #{name => face, fnum => 64005, rnum => 10, type => bool,
	 occurrence => optional, opts => []},
       #{name => gostring, fnum => 64006, rnum => 11,
	 type => bool, occurrence => optional, opts => []},
       #{name => populate, fnum => 64007, rnum => 12,
	 type => bool, occurrence => optional, opts => []},
       #{name => stringer, fnum => 67008, rnum => 13,
	 type => bool, occurrence => optional, opts => []},
       #{name => onlyone, fnum => 64009, rnum => 14,
	 type => bool, occurrence => optional, opts => []},
       #{name => equal, fnum => 64013, rnum => 15,
	 type => bool, occurrence => optional, opts => []},
       #{name => description, fnum => 64014, rnum => 16,
	 type => bool, occurrence => optional, opts => []},
       #{name => testgen, fnum => 64015, rnum => 17,
	 type => bool, occurrence => optional, opts => []},
       #{name => benchgen, fnum => 64016, rnum => 18,
	 type => bool, occurrence => optional, opts => []},
       #{name => marshaler, fnum => 64017, rnum => 19,
	 type => bool, occurrence => optional, opts => []},
       #{name => unmarshaler, fnum => 64018, rnum => 20,
	 type => bool, occurrence => optional, opts => []},
       #{name => stable_marshaler, fnum => 64019, rnum => 21,
	 type => bool, occurrence => optional, opts => []},
       #{name => sizer, fnum => 64020, rnum => 22,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_marshaler, fnum => 64023, rnum => 23,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_unmarshaler, fnum => 64024, rnum => 24,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_extensions_map, fnum => 64025,
	 rnum => 25, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_unrecognized, fnum => 64026,
	 rnum => 26, type => bool, occurrence => optional,
	 opts => []},
       #{name => protosizer, fnum => 64028, rnum => 27,
	 type => bool, occurrence => optional, opts => []},
       #{name => compare, fnum => 64029, rnum => 28,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.FieldOptions'},
      [#{name => ctype, fnum => 1, rnum => 2,
	 type => {enum, 'google.protobuf.FieldOptions.CType'},
	 occurrence => optional, opts => [{default, 'STRING'}]},
       #{name => packed, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []},
       #{name => jstype, fnum => 6, rnum => 4,
	 type => {enum, 'google.protobuf.FieldOptions.JSType'},
	 occurrence => optional,
	 opts => [{default, 'JS_NORMAL'}]},
       #{name => lazy, fnum => 5, rnum => 5, type => bool,
	 occurrence => optional, opts => [{default, false}]},
       #{name => deprecated, fnum => 3, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => weak, fnum => 10, rnum => 7, type => bool,
	 occurrence => optional, opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 8,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => nullable, fnum => 65001, rnum => 9,
	 type => bool, occurrence => optional, opts => []},
       #{name => embed, fnum => 65002, rnum => 10,
	 type => bool, occurrence => optional, opts => []},
       #{name => customtype, fnum => 65003, rnum => 11,
	 type => string, occurrence => optional, opts => []},
       #{name => customname, fnum => 65004, rnum => 12,
	 type => string, occurrence => optional, opts => []},
       #{name => jsontag, fnum => 65005, rnum => 13,
	 type => string, occurrence => optional, opts => []},
       #{name => moretags, fnum => 65006, rnum => 14,
	 type => string, occurrence => optional, opts => []},
       #{name => casttype, fnum => 65007, rnum => 15,
	 type => string, occurrence => optional, opts => []},
       #{name => castkey, fnum => 65008, rnum => 16,
	 type => string, occurrence => optional, opts => []},
       #{name => castvalue, fnum => 65009, rnum => 17,
	 type => string, occurrence => optional, opts => []},
       #{name => stdtime, fnum => 65010, rnum => 18,
	 type => bool, occurrence => optional, opts => []},
       #{name => stdduration, fnum => 65011, rnum => 19,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumOptions'},
      [#{name => allow_alias, fnum => 2, rnum => 2,
	 type => bool, occurrence => optional, opts => []},
       #{name => deprecated, fnum => 3, rnum => 3,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 4,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_enum_prefix, fnum => 62001, rnum => 5,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_enum_stringer, fnum => 62021,
	 rnum => 6, type => bool, occurrence => optional,
	 opts => []},
       #{name => enum_stringer, fnum => 62022, rnum => 7,
	 type => bool, occurrence => optional, opts => []},
       #{name => enum_customname, fnum => 62023, rnum => 8,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumValueOptions'},
      [#{name => deprecated, fnum => 1, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => enumvalue_customname, fnum => 66001,
	 rnum => 4, type => string, occurrence => optional,
	 opts => []}]},
     {{msg, 'google.protobuf.ServiceOptions'},
      [#{name => deprecated, fnum => 33, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.MethodOptions'},
      [#{name => deprecated, fnum => 33, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.UninterpretedOption.NamePart'},
      [#{name => name_part, fnum => 1, rnum => 2,
	 type => string, occurrence => required, opts => []},
       #{name => is_extension, fnum => 2, rnum => 3,
	 type => bool, occurrence => required, opts => []}]},
     {{msg, 'google.protobuf.UninterpretedOption'},
      [#{name => name, fnum => 2, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.UninterpretedOption.NamePart'},
	 occurrence => repeated, opts => []},
       #{name => identifier_value, fnum => 3, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => positive_int_value, fnum => 4, rnum => 4,
	 type => uint64, occurrence => optional, opts => []},
       #{name => negative_int_value, fnum => 5, rnum => 5,
	 type => int64, occurrence => optional, opts => []},
       #{name => double_value, fnum => 6, rnum => 6,
	 type => double, occurrence => optional, opts => []},
       #{name => string_value, fnum => 7, rnum => 7,
	 type => bytes, occurrence => optional, opts => []},
       #{name => aggregate_value, fnum => 8, rnum => 8,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.SourceCodeInfo.Location'},
      [#{name => path, fnum => 1, rnum => 2, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => span, fnum => 2, rnum => 3, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => leading_comments, fnum => 3, rnum => 4,
	 type => string, occurrence => optional, opts => []},
       #{name => trailing_comments, fnum => 4, rnum => 5,
	 type => string, occurrence => optional, opts => []},
       #{name => leading_detached_comments, fnum => 6,
	 rnum => 6, type => string, occurrence => repeated,
	 opts => []}]},
     {{msg, 'google.protobuf.SourceCodeInfo'},
      [#{name => location, fnum => 1, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.SourceCodeInfo.Location'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
      [#{name => path, fnum => 1, rnum => 2, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => source_file, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => 'begin', fnum => 3, rnum => 4, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 4, rnum => 5, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.GeneratedCodeInfo'},
      [#{name => annotation, fnum => 1, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
	 occurrence => repeated, opts => []}]}].


get_msg_names() ->
    ['google.protobuf.FileDescriptorSet',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.DescriptorProto',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.FileOptions',
     'google.protobuf.MessageOptions',
     'google.protobuf.FieldOptions',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.ServiceOptions',
     'google.protobuf.MethodOptions',
     'google.protobuf.UninterpretedOption.NamePart',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.GeneratedCodeInfo'].


get_group_names() -> [].


get_msg_or_group_names() ->
    ['google.protobuf.FileDescriptorSet',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.DescriptorProto',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.FileOptions',
     'google.protobuf.MessageOptions',
     'google.protobuf.FieldOptions',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.ServiceOptions',
     'google.protobuf.MethodOptions',
     'google.protobuf.UninterpretedOption.NamePart',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.GeneratedCodeInfo'].


get_enum_names() ->
    ['google.protobuf.FieldDescriptorProto.Type',
     'google.protobuf.FieldDescriptorProto.Label',
     'google.protobuf.FileOptions.OptimizeMode',
     'google.protobuf.FieldOptions.CType',
     'google.protobuf.FieldOptions.JSType'].


fetch_msg_def(MsgName) ->
    case find_msg_def(MsgName) of
      Fs when is_list(Fs) -> Fs;
      error -> erlang:error({no_such_msg, MsgName})
    end.


fetch_enum_def(EnumName) ->
    case find_enum_def(EnumName) of
      Es when is_list(Es) -> Es;
      error -> erlang:error({no_such_enum, EnumName})
    end.


find_msg_def('google.protobuf.FileDescriptorSet') ->
    [#{name => file, fnum => 1, rnum => 2,
       type => {msg, 'google.protobuf.FileDescriptorProto'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.FileDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => package, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []},
     #{name => dependency, fnum => 3, rnum => 4,
       type => string, occurrence => repeated, opts => []},
     #{name => public_dependency, fnum => 10, rnum => 5,
       type => int32, occurrence => repeated, opts => []},
     #{name => weak_dependency, fnum => 11, rnum => 6,
       type => int32, occurrence => repeated, opts => []},
     #{name => message_type, fnum => 4, rnum => 7,
       type => {msg, 'google.protobuf.DescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => enum_type, fnum => 5, rnum => 8,
       type => {msg, 'google.protobuf.EnumDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => service, fnum => 6, rnum => 9,
       type => {msg, 'google.protobuf.ServiceDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension, fnum => 7, rnum => 10,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 8, rnum => 11,
       type => {msg, 'google.protobuf.FileOptions'},
       occurrence => optional, opts => []},
     #{name => source_code_info, fnum => 9, rnum => 12,
       type => {msg, 'google.protobuf.SourceCodeInfo'},
       occurrence => optional, opts => []},
     #{name => syntax, fnum => 12, rnum => 13,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto.ExtensionRange') ->
    [#{name => start, fnum => 1, rnum => 2, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto.ReservedRange') ->
    [#{name => start, fnum => 1, rnum => 2, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => field, fnum => 2, rnum => 3,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension, fnum => 6, rnum => 4,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => nested_type, fnum => 3, rnum => 5,
       type => {msg, 'google.protobuf.DescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => enum_type, fnum => 4, rnum => 6,
       type => {msg, 'google.protobuf.EnumDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension_range, fnum => 5, rnum => 7,
       type =>
	   {msg, 'google.protobuf.DescriptorProto.ExtensionRange'},
       occurrence => repeated, opts => []},
     #{name => oneof_decl, fnum => 8, rnum => 8,
       type => {msg, 'google.protobuf.OneofDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 7, rnum => 9,
       type => {msg, 'google.protobuf.MessageOptions'},
       occurrence => optional, opts => []},
     #{name => reserved_range, fnum => 9, rnum => 10,
       type =>
	   {msg, 'google.protobuf.DescriptorProto.ReservedRange'},
       occurrence => repeated, opts => []},
     #{name => reserved_name, fnum => 10, rnum => 11,
       type => string, occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.FieldDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => number, fnum => 3, rnum => 3, type => int32,
       occurrence => optional, opts => []},
     #{name => label, fnum => 4, rnum => 4,
       type =>
	   {enum, 'google.protobuf.FieldDescriptorProto.Label'},
       occurrence => optional, opts => []},
     #{name => type, fnum => 5, rnum => 5,
       type =>
	   {enum, 'google.protobuf.FieldDescriptorProto.Type'},
       occurrence => optional, opts => []},
     #{name => type_name, fnum => 6, rnum => 6,
       type => string, occurrence => optional, opts => []},
     #{name => extendee, fnum => 2, rnum => 7,
       type => string, occurrence => optional, opts => []},
     #{name => default_value, fnum => 7, rnum => 8,
       type => string, occurrence => optional, opts => []},
     #{name => oneof_index, fnum => 9, rnum => 9,
       type => int32, occurrence => optional, opts => []},
     #{name => json_name, fnum => 10, rnum => 10,
       type => string, occurrence => optional, opts => []},
     #{name => options, fnum => 8, rnum => 11,
       type => {msg, 'google.protobuf.FieldOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.OneofDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => value, fnum => 2, rnum => 3,
       type =>
	   {msg, 'google.protobuf.EnumValueDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.EnumOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumValueDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => number, fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.EnumValueOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.ServiceDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => method, fnum => 2, rnum => 3,
       type => {msg, 'google.protobuf.MethodDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.ServiceOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.MethodDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => input_type, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => output_type, fnum => 3, rnum => 4,
       type => string, occurrence => optional, opts => []},
     #{name => options, fnum => 4, rnum => 5,
       type => {msg, 'google.protobuf.MethodOptions'},
       occurrence => optional, opts => []},
     #{name => client_streaming, fnum => 5, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => server_streaming, fnum => 6, rnum => 7,
       type => bool, occurrence => optional,
       opts => [{default, false}]}];
find_msg_def('google.protobuf.FileOptions') ->
    [#{name => java_package, fnum => 1, rnum => 2,
       type => string, occurrence => optional, opts => []},
     #{name => java_outer_classname, fnum => 8, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => java_multiple_files, fnum => 10, rnum => 4,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_generate_equals_and_hash, fnum => 20,
       rnum => 5, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_string_check_utf8, fnum => 27, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => optimize_for, fnum => 9, rnum => 7,
       type =>
	   {enum, 'google.protobuf.FileOptions.OptimizeMode'},
       occurrence => optional, opts => [{default, 'SPEED'}]},
     #{name => go_package, fnum => 11, rnum => 8,
       type => string, occurrence => optional, opts => []},
     #{name => cc_generic_services, fnum => 16, rnum => 9,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_generic_services, fnum => 17, rnum => 10,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => py_generic_services, fnum => 18, rnum => 11,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => deprecated, fnum => 23, rnum => 12,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => cc_enable_arenas, fnum => 31, rnum => 13,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => objc_class_prefix, fnum => 36, rnum => 14,
       type => string, occurrence => optional, opts => []},
     #{name => csharp_namespace, fnum => 37, rnum => 15,
       type => string, occurrence => optional, opts => []},
     #{name => javanano_use_deprecated_package, fnum => 38,
       rnum => 16, type => bool, occurrence => optional,
       opts => [deprecated]},
     #{name => uninterpreted_option, fnum => 999, rnum => 17,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_getters_all, fnum => 63001,
       rnum => 18, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_enum_prefix_all, fnum => 63002,
       rnum => 19, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_stringer_all, fnum => 63003,
       rnum => 20, type => bool, occurrence => optional,
       opts => []},
     #{name => verbose_equal_all, fnum => 63004, rnum => 21,
       type => bool, occurrence => optional, opts => []},
     #{name => face_all, fnum => 63005, rnum => 22,
       type => bool, occurrence => optional, opts => []},
     #{name => gostring_all, fnum => 63006, rnum => 23,
       type => bool, occurrence => optional, opts => []},
     #{name => populate_all, fnum => 63007, rnum => 24,
       type => bool, occurrence => optional, opts => []},
     #{name => stringer_all, fnum => 63008, rnum => 25,
       type => bool, occurrence => optional, opts => []},
     #{name => onlyone_all, fnum => 63009, rnum => 26,
       type => bool, occurrence => optional, opts => []},
     #{name => equal_all, fnum => 63013, rnum => 27,
       type => bool, occurrence => optional, opts => []},
     #{name => description_all, fnum => 63014, rnum => 28,
       type => bool, occurrence => optional, opts => []},
     #{name => testgen_all, fnum => 63015, rnum => 29,
       type => bool, occurrence => optional, opts => []},
     #{name => benchgen_all, fnum => 63016, rnum => 30,
       type => bool, occurrence => optional, opts => []},
     #{name => marshaler_all, fnum => 63017, rnum => 31,
       type => bool, occurrence => optional, opts => []},
     #{name => unmarshaler_all, fnum => 63018, rnum => 32,
       type => bool, occurrence => optional, opts => []},
     #{name => stable_marshaler_all, fnum => 63019,
       rnum => 33, type => bool, occurrence => optional,
       opts => []},
     #{name => sizer_all, fnum => 63020, rnum => 34,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_enum_stringer_all, fnum => 63021,
       rnum => 35, type => bool, occurrence => optional,
       opts => []},
     #{name => enum_stringer_all, fnum => 63022, rnum => 36,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_marshaler_all, fnum => 63023,
       rnum => 37, type => bool, occurrence => optional,
       opts => []},
     #{name => unsafe_unmarshaler_all, fnum => 63024,
       rnum => 38, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_extensions_map_all, fnum => 63025,
       rnum => 39, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_unrecognized_all, fnum => 63026,
       rnum => 40, type => bool, occurrence => optional,
       opts => []},
     #{name => gogoproto_import, fnum => 63027, rnum => 41,
       type => bool, occurrence => optional, opts => []},
     #{name => protosizer_all, fnum => 63028, rnum => 42,
       type => bool, occurrence => optional, opts => []},
     #{name => compare_all, fnum => 63029, rnum => 43,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.MessageOptions') ->
    [#{name => message_set_wire_format, fnum => 1,
       rnum => 2, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => no_standard_descriptor_accessor, fnum => 2,
       rnum => 3, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => deprecated, fnum => 3, rnum => 4,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => map_entry, fnum => 7, rnum => 5, type => bool,
       occurrence => optional, opts => []},
     #{name => uninterpreted_option, fnum => 999, rnum => 6,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_getters, fnum => 64001, rnum => 7,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_stringer, fnum => 64003, rnum => 8,
       type => bool, occurrence => optional, opts => []},
     #{name => verbose_equal, fnum => 64004, rnum => 9,
       type => bool, occurrence => optional, opts => []},
     #{name => face, fnum => 64005, rnum => 10, type => bool,
       occurrence => optional, opts => []},
     #{name => gostring, fnum => 64006, rnum => 11,
       type => bool, occurrence => optional, opts => []},
     #{name => populate, fnum => 64007, rnum => 12,
       type => bool, occurrence => optional, opts => []},
     #{name => stringer, fnum => 67008, rnum => 13,
       type => bool, occurrence => optional, opts => []},
     #{name => onlyone, fnum => 64009, rnum => 14,
       type => bool, occurrence => optional, opts => []},
     #{name => equal, fnum => 64013, rnum => 15,
       type => bool, occurrence => optional, opts => []},
     #{name => description, fnum => 64014, rnum => 16,
       type => bool, occurrence => optional, opts => []},
     #{name => testgen, fnum => 64015, rnum => 17,
       type => bool, occurrence => optional, opts => []},
     #{name => benchgen, fnum => 64016, rnum => 18,
       type => bool, occurrence => optional, opts => []},
     #{name => marshaler, fnum => 64017, rnum => 19,
       type => bool, occurrence => optional, opts => []},
     #{name => unmarshaler, fnum => 64018, rnum => 20,
       type => bool, occurrence => optional, opts => []},
     #{name => stable_marshaler, fnum => 64019, rnum => 21,
       type => bool, occurrence => optional, opts => []},
     #{name => sizer, fnum => 64020, rnum => 22,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_marshaler, fnum => 64023, rnum => 23,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_unmarshaler, fnum => 64024, rnum => 24,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_extensions_map, fnum => 64025,
       rnum => 25, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_unrecognized, fnum => 64026,
       rnum => 26, type => bool, occurrence => optional,
       opts => []},
     #{name => protosizer, fnum => 64028, rnum => 27,
       type => bool, occurrence => optional, opts => []},
     #{name => compare, fnum => 64029, rnum => 28,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.FieldOptions') ->
    [#{name => ctype, fnum => 1, rnum => 2,
       type => {enum, 'google.protobuf.FieldOptions.CType'},
       occurrence => optional, opts => [{default, 'STRING'}]},
     #{name => packed, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []},
     #{name => jstype, fnum => 6, rnum => 4,
       type => {enum, 'google.protobuf.FieldOptions.JSType'},
       occurrence => optional,
       opts => [{default, 'JS_NORMAL'}]},
     #{name => lazy, fnum => 5, rnum => 5, type => bool,
       occurrence => optional, opts => [{default, false}]},
     #{name => deprecated, fnum => 3, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => weak, fnum => 10, rnum => 7, type => bool,
       occurrence => optional, opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 8,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => nullable, fnum => 65001, rnum => 9,
       type => bool, occurrence => optional, opts => []},
     #{name => embed, fnum => 65002, rnum => 10,
       type => bool, occurrence => optional, opts => []},
     #{name => customtype, fnum => 65003, rnum => 11,
       type => string, occurrence => optional, opts => []},
     #{name => customname, fnum => 65004, rnum => 12,
       type => string, occurrence => optional, opts => []},
     #{name => jsontag, fnum => 65005, rnum => 13,
       type => string, occurrence => optional, opts => []},
     #{name => moretags, fnum => 65006, rnum => 14,
       type => string, occurrence => optional, opts => []},
     #{name => casttype, fnum => 65007, rnum => 15,
       type => string, occurrence => optional, opts => []},
     #{name => castkey, fnum => 65008, rnum => 16,
       type => string, occurrence => optional, opts => []},
     #{name => castvalue, fnum => 65009, rnum => 17,
       type => string, occurrence => optional, opts => []},
     #{name => stdtime, fnum => 65010, rnum => 18,
       type => bool, occurrence => optional, opts => []},
     #{name => stdduration, fnum => 65011, rnum => 19,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumOptions') ->
    [#{name => allow_alias, fnum => 2, rnum => 2,
       type => bool, occurrence => optional, opts => []},
     #{name => deprecated, fnum => 3, rnum => 3,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 4,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_enum_prefix, fnum => 62001, rnum => 5,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_enum_stringer, fnum => 62021,
       rnum => 6, type => bool, occurrence => optional,
       opts => []},
     #{name => enum_stringer, fnum => 62022, rnum => 7,
       type => bool, occurrence => optional, opts => []},
     #{name => enum_customname, fnum => 62023, rnum => 8,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumValueOptions') ->
    [#{name => deprecated, fnum => 1, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => enumvalue_customname, fnum => 66001,
       rnum => 4, type => string, occurrence => optional,
       opts => []}];
find_msg_def('google.protobuf.ServiceOptions') ->
    [#{name => deprecated, fnum => 33, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.MethodOptions') ->
    [#{name => deprecated, fnum => 33, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.UninterpretedOption.NamePart') ->
    [#{name => name_part, fnum => 1, rnum => 2,
       type => string, occurrence => required, opts => []},
     #{name => is_extension, fnum => 2, rnum => 3,
       type => bool, occurrence => required, opts => []}];
find_msg_def('google.protobuf.UninterpretedOption') ->
    [#{name => name, fnum => 2, rnum => 2,
       type =>
	   {msg, 'google.protobuf.UninterpretedOption.NamePart'},
       occurrence => repeated, opts => []},
     #{name => identifier_value, fnum => 3, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => positive_int_value, fnum => 4, rnum => 4,
       type => uint64, occurrence => optional, opts => []},
     #{name => negative_int_value, fnum => 5, rnum => 5,
       type => int64, occurrence => optional, opts => []},
     #{name => double_value, fnum => 6, rnum => 6,
       type => double, occurrence => optional, opts => []},
     #{name => string_value, fnum => 7, rnum => 7,
       type => bytes, occurrence => optional, opts => []},
     #{name => aggregate_value, fnum => 8, rnum => 8,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.SourceCodeInfo.Location') ->
    [#{name => path, fnum => 1, rnum => 2, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => span, fnum => 2, rnum => 3, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => leading_comments, fnum => 3, rnum => 4,
       type => string, occurrence => optional, opts => []},
     #{name => trailing_comments, fnum => 4, rnum => 5,
       type => string, occurrence => optional, opts => []},
     #{name => leading_detached_comments, fnum => 6,
       rnum => 6, type => string, occurrence => repeated,
       opts => []}];
find_msg_def('google.protobuf.SourceCodeInfo') ->
    [#{name => location, fnum => 1, rnum => 2,
       type =>
	   {msg, 'google.protobuf.SourceCodeInfo.Location'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.GeneratedCodeInfo.Annotation') ->
    [#{name => path, fnum => 1, rnum => 2, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => source_file, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => 'begin', fnum => 3, rnum => 4, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 4, rnum => 5, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.GeneratedCodeInfo') ->
    [#{name => annotation, fnum => 1, rnum => 2,
       type =>
	   {msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
       occurrence => repeated, opts => []}];
find_msg_def(_) -> error.


find_enum_def('google.protobuf.FieldDescriptorProto.Type') ->
    [{'TYPE_DOUBLE', 1}, {'TYPE_FLOAT', 2},
     {'TYPE_INT64', 3}, {'TYPE_UINT64', 4},
     {'TYPE_INT32', 5}, {'TYPE_FIXED64', 6},
     {'TYPE_FIXED32', 7}, {'TYPE_BOOL', 8},
     {'TYPE_STRING', 9}, {'TYPE_GROUP', 10},
     {'TYPE_MESSAGE', 11}, {'TYPE_BYTES', 12},
     {'TYPE_UINT32', 13}, {'TYPE_ENUM', 14},
     {'TYPE_SFIXED32', 15}, {'TYPE_SFIXED64', 16},
     {'TYPE_SINT32', 17}, {'TYPE_SINT64', 18}];
find_enum_def('google.protobuf.FieldDescriptorProto.Label') ->
    [{'LABEL_OPTIONAL', 1}, {'LABEL_REQUIRED', 2},
     {'LABEL_REPEATED', 3}];
find_enum_def('google.protobuf.FileOptions.OptimizeMode') ->
    [{'SPEED', 1}, {'CODE_SIZE', 2}, {'LITE_RUNTIME', 3}];
find_enum_def('google.protobuf.FieldOptions.CType') ->
    [{'STRING', 0}, {'CORD', 1}, {'STRING_PIECE', 2}];
find_enum_def('google.protobuf.FieldOptions.JSType') ->
    [{'JS_NORMAL', 0}, {'JS_STRING', 1}, {'JS_NUMBER', 2}];
find_enum_def(_) -> error.


enum_symbol_by_value('google.protobuf.FieldDescriptorProto.Type',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(Value);
enum_symbol_by_value('google.protobuf.FieldDescriptorProto.Label',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(Value);
enum_symbol_by_value('google.protobuf.FileOptions.OptimizeMode',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(Value);
enum_symbol_by_value('google.protobuf.FieldOptions.CType',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(Value);
enum_symbol_by_value('google.protobuf.FieldOptions.JSType',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(Value).


enum_value_by_symbol('google.protobuf.FieldDescriptorProto.Type',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'(Sym);
enum_value_by_symbol('google.protobuf.FieldDescriptorProto.Label',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'(Sym);
enum_value_by_symbol('google.protobuf.FileOptions.OptimizeMode',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'(Sym);
enum_value_by_symbol('google.protobuf.FieldOptions.CType',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldOptions.CType'(Sym);
enum_value_by_symbol('google.protobuf.FieldOptions.JSType',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'(Sym).


'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(1) ->
    'TYPE_DOUBLE';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(2) ->
    'TYPE_FLOAT';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(3) ->
    'TYPE_INT64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(4) ->
    'TYPE_UINT64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(5) ->
    'TYPE_INT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(6) ->
    'TYPE_FIXED64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(7) ->
    'TYPE_FIXED32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(8) ->
    'TYPE_BOOL';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(9) ->
    'TYPE_STRING';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(10) ->
    'TYPE_GROUP';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(11) ->
    'TYPE_MESSAGE';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(12) ->
    'TYPE_BYTES';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(13) ->
    'TYPE_UINT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(14) ->
    'TYPE_ENUM';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(15) ->
    'TYPE_SFIXED32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(16) ->
    'TYPE_SFIXED64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(17) ->
    'TYPE_SINT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(18) ->
    'TYPE_SINT64'.


'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT') ->
    2;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64') ->
    3;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64') ->
    4;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32') ->
    5;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64') ->
    6;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32') ->
    7;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL') ->
    8;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING') ->
    9;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP') ->
    10;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE') ->
    11;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES') ->
    12;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32') ->
    13;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM') ->
    14;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32') ->
    15;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64') ->
    16;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32') ->
    17;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64') ->
    18.

'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(1) ->
    'LABEL_OPTIONAL';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(2) ->
    'LABEL_REQUIRED';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(3) ->
    'LABEL_REPEATED'.


'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED') ->
    2;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED') ->
    3.

'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(1) ->
    'SPEED';
'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(2) ->
    'CODE_SIZE';
'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(3) ->
    'LITE_RUNTIME'.


'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('SPEED') ->
    1;
'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE') ->
    2;
'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME') ->
    3.

'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(0) ->
    'STRING';
'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(1) ->
    'CORD';
'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(2) ->
    'STRING_PIECE'.


'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('STRING') ->
    0;
'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('CORD') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('STRING_PIECE') ->
    2.

'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(0) ->
    'JS_NORMAL';
'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(1) ->
    'JS_STRING';
'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(2) ->
    'JS_NUMBER'.


'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_NORMAL') ->
    0;
'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_STRING') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_NUMBER') ->
    2.


get_service_names() -> [].


get_service_def(_) -> error.


get_rpc_names(_) -> error.


find_rpc_def(_, _) -> error.



-spec fetch_rpc_def(_, _) -> no_return().
fetch_rpc_def(ServiceName, RpcName) ->
    erlang:error({no_such_rpc, ServiceName, RpcName}).


%% Convert a a fully qualified (ie with package name) service name
%% as a binary to a service name as an atom.
-spec fqbin_to_service_name(_) -> no_return().
fqbin_to_service_name(X) ->
    error({gpb_error, {badservice, X}}).


%% Convert a service name as an atom to a fully qualified
%% (ie with package name) name as a binary.
-spec service_name_to_fqbin(_) -> no_return().
service_name_to_fqbin(X) ->
    error({gpb_error, {badservice, X}}).


%% Convert a a fully qualified (ie with package name) service name
%% and an rpc name, both as binaries to a service name and an rpc
%% name, as atoms.
-spec fqbins_to_service_and_rpc_name(_, _) -> no_return().
fqbins_to_service_and_rpc_name(S, R) ->
    error({gpb_error, {badservice_or_rpc, {S, R}}}).


%% Convert a service name and an rpc name, both as atoms,
%% to a fully qualified (ie with package name) service name and
%% an rpc name as binaries.
-spec service_and_rpc_name_to_fqbins(_, _) -> no_return().
service_and_rpc_name_to_fqbins(S, R) ->
    error({gpb_error, {badservice_or_rpc, {S, R}}}).


fqbin_to_msg_name(<<"google.protobuf.FileDescriptorSet">>) ->
    'google.protobuf.FileDescriptorSet';
fqbin_to_msg_name(<<"google.protobuf.FileDescriptorProto">>) ->
    'google.protobuf.FileDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto.ExtensionRange">>) ->
    'google.protobuf.DescriptorProto.ExtensionRange';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto.ReservedRange">>) ->
    'google.protobuf.DescriptorProto.ReservedRange';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto">>) ->
    'google.protobuf.DescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.FieldDescriptorProto">>) ->
    'google.protobuf.FieldDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.OneofDescriptorProto">>) ->
    'google.protobuf.OneofDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.EnumDescriptorProto">>) ->
    'google.protobuf.EnumDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.EnumValueDescriptorProto">>) ->
    'google.protobuf.EnumValueDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.ServiceDescriptorProto">>) ->
    'google.protobuf.ServiceDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.MethodDescriptorProto">>) ->
    'google.protobuf.MethodDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.FileOptions">>) ->
    'google.protobuf.FileOptions';
fqbin_to_msg_name(<<"google.protobuf.MessageOptions">>) ->
    'google.protobuf.MessageOptions';
fqbin_to_msg_name(<<"google.protobuf.FieldOptions">>) ->
    'google.protobuf.FieldOptions';
fqbin_to_msg_name(<<"google.protobuf.EnumOptions">>) ->
    'google.protobuf.EnumOptions';
fqbin_to_msg_name(<<"google.protobuf.EnumValueOptions">>) ->
    'google.protobuf.EnumValueOptions';
fqbin_to_msg_name(<<"google.protobuf.ServiceOptions">>) ->
    'google.protobuf.ServiceOptions';
fqbin_to_msg_name(<<"google.protobuf.MethodOptions">>) ->
    'google.protobuf.MethodOptions';
fqbin_to_msg_name(<<"google.protobuf.UninterpretedOption.NamePart">>) ->
    'google.protobuf.UninterpretedOption.NamePart';
fqbin_to_msg_name(<<"google.protobuf.UninterpretedOption">>) ->
    'google.protobuf.UninterpretedOption';
fqbin_to_msg_name(<<"google.protobuf.SourceCodeInfo.Location">>) ->
    'google.protobuf.SourceCodeInfo.Location';
fqbin_to_msg_name(<<"google.protobuf.SourceCodeInfo">>) ->
    'google.protobuf.SourceCodeInfo';
fqbin_to_msg_name(<<"google.protobuf.GeneratedCodeInfo.Annotation">>) ->
    'google.protobuf.GeneratedCodeInfo.Annotation';
fqbin_to_msg_name(<<"google.protobuf.GeneratedCodeInfo">>) ->
    'google.protobuf.GeneratedCodeInfo';
fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}).


msg_name_to_fqbin('google.protobuf.FileDescriptorSet') ->
    <<"google.protobuf.FileDescriptorSet">>;
msg_name_to_fqbin('google.protobuf.FileDescriptorProto') ->
    <<"google.protobuf.FileDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto.ExtensionRange') ->
    <<"google.protobuf.DescriptorProto.ExtensionRange">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto.ReservedRange') ->
    <<"google.protobuf.DescriptorProto.ReservedRange">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto') ->
    <<"google.protobuf.DescriptorProto">>;
msg_name_to_fqbin('google.protobuf.FieldDescriptorProto') ->
    <<"google.protobuf.FieldDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.OneofDescriptorProto') ->
    <<"google.protobuf.OneofDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.EnumDescriptorProto') ->
    <<"google.protobuf.EnumDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.EnumValueDescriptorProto') ->
    <<"google.protobuf.EnumValueDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.ServiceDescriptorProto') ->
    <<"google.protobuf.ServiceDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.MethodDescriptorProto') ->
    <<"google.protobuf.MethodDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.FileOptions') ->
    <<"google.protobuf.FileOptions">>;
msg_name_to_fqbin('google.protobuf.MessageOptions') ->
    <<"google.protobuf.MessageOptions">>;
msg_name_to_fqbin('google.protobuf.FieldOptions') ->
    <<"google.protobuf.FieldOptions">>;
msg_name_to_fqbin('google.protobuf.EnumOptions') ->
    <<"google.protobuf.EnumOptions">>;
msg_name_to_fqbin('google.protobuf.EnumValueOptions') ->
    <<"google.protobuf.EnumValueOptions">>;
msg_name_to_fqbin('google.protobuf.ServiceOptions') ->
    <<"google.protobuf.ServiceOptions">>;
msg_name_to_fqbin('google.protobuf.MethodOptions') ->
    <<"google.protobuf.MethodOptions">>;
msg_name_to_fqbin('google.protobuf.UninterpretedOption.NamePart') ->
    <<"google.protobuf.UninterpretedOption.NamePart">>;
msg_name_to_fqbin('google.protobuf.UninterpretedOption') ->
    <<"google.protobuf.UninterpretedOption">>;
msg_name_to_fqbin('google.protobuf.SourceCodeInfo.Location') ->
    <<"google.protobuf.SourceCodeInfo.Location">>;
msg_name_to_fqbin('google.protobuf.SourceCodeInfo') ->
    <<"google.protobuf.SourceCodeInfo">>;
msg_name_to_fqbin('google.protobuf.GeneratedCodeInfo.Annotation') ->
    <<"google.protobuf.GeneratedCodeInfo.Annotation">>;
msg_name_to_fqbin('google.protobuf.GeneratedCodeInfo') ->
    <<"google.protobuf.GeneratedCodeInfo">>;
msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}).


fqbin_to_enum_name(<<"google.protobuf.FieldDescriptorProto.Type">>) ->
    'google.protobuf.FieldDescriptorProto.Type';
fqbin_to_enum_name(<<"google.protobuf.FieldDescriptorProto.Label">>) ->
    'google.protobuf.FieldDescriptorProto.Label';
fqbin_to_enum_name(<<"google.protobuf.FileOptions.OptimizeMode">>) ->
    'google.protobuf.FileOptions.OptimizeMode';
fqbin_to_enum_name(<<"google.protobuf.FieldOptions.CType">>) ->
    'google.protobuf.FieldOptions.CType';
fqbin_to_enum_name(<<"google.protobuf.FieldOptions.JSType">>) ->
    'google.protobuf.FieldOptions.JSType';
fqbin_to_enum_name(E) ->
    error({gpb_error, {badenum, E}}).


enum_name_to_fqbin('google.protobuf.FieldDescriptorProto.Type') ->
    <<"google.protobuf.FieldDescriptorProto.Type">>;
enum_name_to_fqbin('google.protobuf.FieldDescriptorProto.Label') ->
    <<"google.protobuf.FieldDescriptorProto.Label">>;
enum_name_to_fqbin('google.protobuf.FileOptions.OptimizeMode') ->
    <<"google.protobuf.FileOptions.OptimizeMode">>;
enum_name_to_fqbin('google.protobuf.FieldOptions.CType') ->
    <<"google.protobuf.FieldOptions.CType">>;
enum_name_to_fqbin('google.protobuf.FieldOptions.JSType') ->
    <<"google.protobuf.FieldOptions.JSType">>;
enum_name_to_fqbin(E) ->
    error({gpb_error, {badenum, E}}).


get_package_name() -> gogoproto.


%% Whether or not the message names
%% are prepended with package name or not.
uses_packages() -> true.


source_basename() -> "gogo.proto".


%% Retrieve all proto file names, also imported ones.
%% The order is top-down. The first element is always the main
%% source file. The files are returned with extension,
%% see get_all_proto_names/0 for a version that returns
%% the basenames sans extension
get_all_source_basenames() ->
    ["gogo.proto", "descriptor.proto"].


%% Retrieve all proto file names, also imported ones.
%% The order is top-down. The first element is always the main
%% source file. The files are returned sans .proto extension,
%% to make it easier to use them with the various get_xyz_containment
%% functions.
get_all_proto_names() -> ["gogo", "descriptor"].


get_msg_containment("gogo") -> [];
get_msg_containment("descriptor") ->
    ['google.protobuf.DescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.FieldOptions',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.FileDescriptorSet',
     'google.protobuf.FileOptions',
     'google.protobuf.GeneratedCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.MessageOptions',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.MethodOptions',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.ServiceOptions',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.UninterpretedOption.NamePart'];
get_msg_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_pkg_containment("gogo") -> gogoproto;
get_pkg_containment("descriptor") -> 'google.protobuf';
get_pkg_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_service_containment("gogo") -> [];
get_service_containment("descriptor") -> [];
get_service_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_rpc_containment("gogo") -> [];
get_rpc_containment("descriptor") -> [];
get_rpc_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_enum_containment("gogo") -> [];
get_enum_containment("descriptor") ->
    ['google.protobuf.FieldDescriptorProto.Label',
     'google.protobuf.FieldDescriptorProto.Type',
     'google.protobuf.FieldOptions.CType',
     'google.protobuf.FieldOptions.JSType',
     'google.protobuf.FileOptions.OptimizeMode'];
get_enum_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_proto_by_msg_name_as_fqbin(<<"google.protobuf.ServiceOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MethodOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MessageOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FieldOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumValueOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.UninterpretedOption.NamePart">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileDescriptorSet">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto.ReservedRange">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto.ExtensionRange">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.UninterpretedOption">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.SourceCodeInfo.Location">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.GeneratedCodeInfo.Annotation">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.SourceCodeInfo">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.ServiceDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.OneofDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MethodDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.GeneratedCodeInfo">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumValueDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(E) ->
    error({gpb_error, {badmsg, E}}).


-spec get_proto_by_service_name_as_fqbin(_) -> no_return().
get_proto_by_service_name_as_fqbin(E) ->
    error({gpb_error, {badservice, E}}).


get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FileOptions.OptimizeMode">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldOptions.JSType">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldOptions.CType">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto.Type">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto.Label">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(E) ->
    error({gpb_error, {badenum, E}}).


get_protos_by_pkg_name_as_fqbin(<<"google.protobuf">>) ->
    ["descriptor"];
get_protos_by_pkg_name_as_fqbin(<<"gogoproto">>) -> ["gogo"];
get_protos_by_pkg_name_as_fqbin(E) ->
    error({gpb_error, {badpkg, E}}).



gpb_version_as_string() ->
    "4.11.0".

gpb_version_as_list() ->
    [4,11,0].
