# Generated by the protocol buffer compiler.  DO NOT EDIT!
# This RBS interface is provided for convenience, on a best-effort basis.
# The library is the definitive source for the API contract; if the RBS file
# and the library's behavior differ, the library behavior is authoritative.
# We welcome fixes to change the RBS file to match.
# source: ruby_generated_code_proto2.proto

module A
  module B
    module C
      class TestMessage < ::Google::Protobuf::AbstractMessage
        class NestedMessage < ::Google::Protobuf::AbstractMessage
          include ::Google::Protobuf::_MessageClass[::A::B::C::TestMessage::NestedMessage]

          attr_reader foo(): ::Integer
          attr_writer foo(): ::Integer | ::Float
          def has_foo?: () -> bool
          def clear_foo: () -> void

          type init_map = {
            foo: (::Integer | ::Float)?,
            "foo" => (::Integer | ::Float)?,
          }

          def initialize: (?init_map initial_value) -> void

          def []:
              ("foo" name) -> ::Integer

          def []=:
              ("foo" name, (::Integer | ::Float) value) -> void
        end

        include ::Google::Protobuf::_MessageClass[::A::B::C::TestMessage]

        attr_reader optional_int32(): ::Integer
        attr_writer optional_int32(): ::Integer | ::Float
        def has_optional_int32?: () -> bool
        def clear_optional_int32: () -> void

        attr_reader optional_int64(): ::Integer
        attr_writer optional_int64(): ::Integer | ::Float
        def has_optional_int64?: () -> bool
        def clear_optional_int64: () -> void

        attr_reader optional_uint32(): ::Integer
        attr_writer optional_uint32(): ::Integer | ::Float
        def has_optional_uint32?: () -> bool
        def clear_optional_uint32: () -> void

        attr_reader optional_uint64(): ::Integer
        attr_writer optional_uint64(): ::Integer | ::Float
        def has_optional_uint64?: () -> bool
        def clear_optional_uint64: () -> void

        attr_accessor optional_bool(): bool
        def has_optional_bool?: () -> bool
        def clear_optional_bool: () -> void

        attr_reader optional_double(): ::Float
        attr_writer optional_double(): ::Float | ::Integer
        def has_optional_double?: () -> bool
        def clear_optional_double: () -> void

        attr_reader optional_float(): ::Float
        attr_writer optional_float(): ::Float | ::Integer
        def has_optional_float?: () -> bool
        def clear_optional_float: () -> void

        attr_reader optional_string(): ::String
        attr_writer optional_string(): ::String | ::Symbol
        def has_optional_string?: () -> bool
        def clear_optional_string: () -> void

        attr_accessor optional_bytes(): ::String
        def has_optional_bytes?: () -> bool
        def clear_optional_bytes: () -> void

        attr_reader optional_enum(): ::A::B::C::TestEnum::names | ::Integer
        attr_writer optional_enum(): ::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float
        attr_reader optional_enum_const(): ::Integer
        def has_optional_enum?: () -> bool
        def clear_optional_enum: () -> void

        attr_accessor optional_msg(): ::A::B::C::TestMessage?
        def has_optional_msg?: () -> bool
        def clear_optional_msg: () -> void

        attr_accessor optional_proto2_submessage(): ::A::B::C::TestImportedMessage?
        def has_optional_proto2_submessage?: () -> bool
        def clear_optional_proto2_submessage: () -> void

        attr_accessor repeated_int32(): ::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]
        def clear_repeated_int32: () -> void

        attr_accessor repeated_int64(): ::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]
        def clear_repeated_int64: () -> void

        attr_accessor repeated_uint32(): ::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]
        def clear_repeated_uint32: () -> void

        attr_accessor repeated_uint64(): ::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]
        def clear_repeated_uint64: () -> void

        attr_accessor repeated_bool(): ::Google::Protobuf::RepeatedField[bool, bool]
        def clear_repeated_bool: () -> void

        attr_accessor repeated_double(): ::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer]
        def clear_repeated_double: () -> void

        attr_accessor repeated_float(): ::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer]
        def clear_repeated_float: () -> void

        attr_accessor repeated_string(): ::Google::Protobuf::RepeatedField[::String, ::String | ::Symbol]
        def clear_repeated_string: () -> void

        attr_accessor repeated_bytes(): ::Google::Protobuf::RepeatedField[::String, ::String]
        def clear_repeated_bytes: () -> void

        attr_accessor repeated_enum(): ::Google::Protobuf::RepeatedField[::A::B::C::TestEnum::names | ::Integer, ::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float]
        attr_reader repeated_enum_const(): ::Array[::Integer]
        def clear_repeated_enum: () -> void

        attr_accessor repeated_msg(): ::Google::Protobuf::RepeatedField[::A::B::C::TestMessage, ::A::B::C::TestMessage]
        def clear_repeated_msg: () -> void

        attr_reader required_int32(): ::Integer
        attr_writer required_int32(): ::Integer | ::Float
        def has_required_int32?: () -> bool
        def clear_required_int32: () -> void

        attr_reader required_int64(): ::Integer
        attr_writer required_int64(): ::Integer | ::Float
        def has_required_int64?: () -> bool
        def clear_required_int64: () -> void

        attr_reader required_uint32(): ::Integer
        attr_writer required_uint32(): ::Integer | ::Float
        def has_required_uint32?: () -> bool
        def clear_required_uint32: () -> void

        attr_reader required_uint64(): ::Integer
        attr_writer required_uint64(): ::Integer | ::Float
        def has_required_uint64?: () -> bool
        def clear_required_uint64: () -> void

        attr_accessor required_bool(): bool
        def has_required_bool?: () -> bool
        def clear_required_bool: () -> void

        attr_reader required_double(): ::Float
        attr_writer required_double(): ::Float | ::Integer
        def has_required_double?: () -> bool
        def clear_required_double: () -> void

        attr_reader required_float(): ::Float
        attr_writer required_float(): ::Float | ::Integer
        def has_required_float?: () -> bool
        def clear_required_float: () -> void

        attr_reader required_string(): ::String
        attr_writer required_string(): ::String | ::Symbol
        def has_required_string?: () -> bool
        def clear_required_string: () -> void

        attr_accessor required_bytes(): ::String
        def has_required_bytes?: () -> bool
        def clear_required_bytes: () -> void

        attr_reader required_enum(): ::A::B::C::TestEnum::names | ::Integer
        attr_writer required_enum(): ::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float
        attr_reader required_enum_const(): ::Integer
        def has_required_enum?: () -> bool
        def clear_required_enum: () -> void

        attr_accessor required_msg(): ::A::B::C::TestMessage?
        def has_required_msg?: () -> bool
        def clear_required_msg: () -> void

        attr_reader oneof_int32(): ::Integer
        attr_writer oneof_int32(): (::Integer | ::Float)?
        def has_oneof_int32?: () -> bool
        def clear_oneof_int32: () -> void

        attr_reader oneof_int64(): ::Integer
        attr_writer oneof_int64(): (::Integer | ::Float)?
        def has_oneof_int64?: () -> bool
        def clear_oneof_int64: () -> void

        attr_reader oneof_uint32(): ::Integer
        attr_writer oneof_uint32(): (::Integer | ::Float)?
        def has_oneof_uint32?: () -> bool
        def clear_oneof_uint32: () -> void

        attr_reader oneof_uint64(): ::Integer
        attr_writer oneof_uint64(): (::Integer | ::Float)?
        def has_oneof_uint64?: () -> bool
        def clear_oneof_uint64: () -> void

        attr_reader oneof_bool(): bool
        attr_writer oneof_bool(): bool?
        def has_oneof_bool?: () -> bool
        def clear_oneof_bool: () -> void

        attr_reader oneof_double(): ::Float
        attr_writer oneof_double(): (::Float | ::Integer)?
        def has_oneof_double?: () -> bool
        def clear_oneof_double: () -> void

        attr_reader oneof_float(): ::Float
        attr_writer oneof_float(): (::Float | ::Integer)?
        def has_oneof_float?: () -> bool
        def clear_oneof_float: () -> void

        attr_reader oneof_string(): ::String
        attr_writer oneof_string(): (::String | ::Symbol)?
        def has_oneof_string?: () -> bool
        def clear_oneof_string: () -> void

        attr_reader oneof_bytes(): ::String
        attr_writer oneof_bytes(): ::String?
        def has_oneof_bytes?: () -> bool
        def clear_oneof_bytes: () -> void

        attr_reader oneof_enum(): ::A::B::C::TestEnum::names | ::Integer
        attr_writer oneof_enum(): (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?
        attr_reader oneof_enum_const(): ::Integer
        def has_oneof_enum?: () -> bool
        def clear_oneof_enum: () -> void

        attr_accessor oneof_msg(): ::A::B::C::TestMessage?
        def has_oneof_msg?: () -> bool
        def clear_oneof_msg: () -> void

        attr_accessor nested_message(): ::A::B::C::TestMessage::NestedMessage?
        def has_nested_message?: () -> bool
        def clear_nested_message: () -> void

        attr_reader my_oneof(): (::Integer | bool | ::Float | ::String | ::A::B::C::TestEnum::names | ::Integer | ::A::B::C::TestMessage)?
        def has_my_oneof?: () -> bool
        def clear_my_oneof: () -> void

        type init_map = {
          optional_int32: (::Integer | ::Float)?,
          "optional_int32" => (::Integer | ::Float)?,
          optional_int64: (::Integer | ::Float)?,
          "optional_int64" => (::Integer | ::Float)?,
          optional_uint32: (::Integer | ::Float)?,
          "optional_uint32" => (::Integer | ::Float)?,
          optional_uint64: (::Integer | ::Float)?,
          "optional_uint64" => (::Integer | ::Float)?,
          optional_bool: bool?,
          "optional_bool" => bool?,
          optional_double: (::Float | ::Integer)?,
          "optional_double" => (::Float | ::Integer)?,
          optional_float: (::Float | ::Integer)?,
          "optional_float" => (::Float | ::Integer)?,
          optional_string: (::String | ::Symbol)?,
          "optional_string" => (::String | ::Symbol)?,
          optional_bytes: ::String?,
          "optional_bytes" => ::String?,
          optional_enum: (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          "optional_enum" => (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          optional_msg: (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          "optional_msg" => (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          optional_proto2_submessage: (::A::B::C::TestImportedMessage | ::A::B::C::TestImportedMessage::init_map)?,
          "optional_proto2_submessage" => (::A::B::C::TestImportedMessage | ::A::B::C::TestImportedMessage::init_map)?,
          repeated_int32: ::Array[::Integer | ::Float]?,
          "repeated_int32" => ::Array[::Integer | ::Float]?,
          repeated_int64: ::Array[::Integer | ::Float]?,
          "repeated_int64" => ::Array[::Integer | ::Float]?,
          repeated_uint32: ::Array[::Integer | ::Float]?,
          "repeated_uint32" => ::Array[::Integer | ::Float]?,
          repeated_uint64: ::Array[::Integer | ::Float]?,
          "repeated_uint64" => ::Array[::Integer | ::Float]?,
          repeated_bool: ::Array[bool]?,
          "repeated_bool" => ::Array[bool]?,
          repeated_double: ::Array[::Float | ::Integer]?,
          "repeated_double" => ::Array[::Float | ::Integer]?,
          repeated_float: ::Array[::Float | ::Integer]?,
          "repeated_float" => ::Array[::Float | ::Integer]?,
          repeated_string: ::Array[::String | ::Symbol]?,
          "repeated_string" => ::Array[::String | ::Symbol]?,
          repeated_bytes: ::Array[::String]?,
          "repeated_bytes" => ::Array[::String]?,
          repeated_enum: ::Array[::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float]?,
          "repeated_enum" => ::Array[::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float]?,
          repeated_msg: ::Array[::A::B::C::TestMessage]?,
          "repeated_msg" => ::Array[::A::B::C::TestMessage]?,
          required_int32: (::Integer | ::Float)?,
          "required_int32" => (::Integer | ::Float)?,
          required_int64: (::Integer | ::Float)?,
          "required_int64" => (::Integer | ::Float)?,
          required_uint32: (::Integer | ::Float)?,
          "required_uint32" => (::Integer | ::Float)?,
          required_uint64: (::Integer | ::Float)?,
          "required_uint64" => (::Integer | ::Float)?,
          required_bool: bool?,
          "required_bool" => bool?,
          required_double: (::Float | ::Integer)?,
          "required_double" => (::Float | ::Integer)?,
          required_float: (::Float | ::Integer)?,
          "required_float" => (::Float | ::Integer)?,
          required_string: (::String | ::Symbol)?,
          "required_string" => (::String | ::Symbol)?,
          required_bytes: ::String?,
          "required_bytes" => ::String?,
          required_enum: (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          "required_enum" => (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          required_msg: (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          "required_msg" => (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          oneof_int32: (::Integer | ::Float)?,
          "oneof_int32" => (::Integer | ::Float)?,
          oneof_int64: (::Integer | ::Float)?,
          "oneof_int64" => (::Integer | ::Float)?,
          oneof_uint32: (::Integer | ::Float)?,
          "oneof_uint32" => (::Integer | ::Float)?,
          oneof_uint64: (::Integer | ::Float)?,
          "oneof_uint64" => (::Integer | ::Float)?,
          oneof_bool: bool?,
          "oneof_bool" => bool?,
          oneof_double: (::Float | ::Integer)?,
          "oneof_double" => (::Float | ::Integer)?,
          oneof_float: (::Float | ::Integer)?,
          "oneof_float" => (::Float | ::Integer)?,
          oneof_string: (::String | ::Symbol)?,
          "oneof_string" => (::String | ::Symbol)?,
          oneof_bytes: ::String?,
          "oneof_bytes" => ::String?,
          oneof_enum: (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          "oneof_enum" => (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?,
          oneof_msg: (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          "oneof_msg" => (::A::B::C::TestMessage | ::A::B::C::TestMessage::init_map)?,
          nested_message: (::A::B::C::TestMessage::NestedMessage | ::A::B::C::TestMessage::NestedMessage::init_map)?,
          "nested_message" => (::A::B::C::TestMessage::NestedMessage | ::A::B::C::TestMessage::NestedMessage::init_map)?,
        }

        def initialize: (?init_map initial_value) -> void

        def []:
            ("optional_int32" name) -> ::Integer
          | ("optional_int64" name) -> ::Integer
          | ("optional_uint32" name) -> ::Integer
          | ("optional_uint64" name) -> ::Integer
          | ("optional_bool" name) -> bool
          | ("optional_double" name) -> ::Float
          | ("optional_float" name) -> ::Float
          | ("optional_string" name) -> ::String
          | ("optional_bytes" name) -> ::String
          | ("optional_enum" name) -> (::A::B::C::TestEnum::names | ::Integer)
          | ("optional_msg" name) -> ::A::B::C::TestMessage?
          | ("optional_proto2_submessage" name) -> ::A::B::C::TestImportedMessage?
          | ("repeated_int32" name) -> (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float])
          | ("repeated_int64" name) -> (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float])
          | ("repeated_uint32" name) -> (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float])
          | ("repeated_uint64" name) -> (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float])
          | ("repeated_bool" name) -> ::Google::Protobuf::RepeatedField[bool, bool]
          | ("repeated_double" name) -> (::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer])
          | ("repeated_float" name) -> (::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer])
          | ("repeated_string" name) -> (::Google::Protobuf::RepeatedField[::String, ::String | ::Symbol])
          | ("repeated_bytes" name) -> ::Google::Protobuf::RepeatedField[::String, ::String]
          | ("repeated_enum" name) -> (::Google::Protobuf::RepeatedField[::A::B::C::TestEnum::names | ::Integer, ::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float])
          | ("repeated_msg" name) -> ::Google::Protobuf::RepeatedField[::A::B::C::TestMessage, ::A::B::C::TestMessage]
          | ("required_int32" name) -> ::Integer
          | ("required_int64" name) -> ::Integer
          | ("required_uint32" name) -> ::Integer
          | ("required_uint64" name) -> ::Integer
          | ("required_bool" name) -> bool
          | ("required_double" name) -> ::Float
          | ("required_float" name) -> ::Float
          | ("required_string" name) -> ::String
          | ("required_bytes" name) -> ::String
          | ("required_enum" name) -> (::A::B::C::TestEnum::names | ::Integer)
          | ("required_msg" name) -> ::A::B::C::TestMessage?
          | ("oneof_int32" name) -> ::Integer
          | ("oneof_int64" name) -> ::Integer
          | ("oneof_uint32" name) -> ::Integer
          | ("oneof_uint64" name) -> ::Integer
          | ("oneof_bool" name) -> bool
          | ("oneof_double" name) -> ::Float
          | ("oneof_float" name) -> ::Float
          | ("oneof_string" name) -> ::String
          | ("oneof_bytes" name) -> ::String
          | ("oneof_enum" name) -> (::A::B::C::TestEnum::names | ::Integer)
          | ("oneof_msg" name) -> ::A::B::C::TestMessage?
          | ("nested_message" name) -> ::A::B::C::TestMessage::NestedMessage?

        def []=:
            ("optional_int32" name, (::Integer | ::Float) value) -> void
          | ("optional_int64" name, (::Integer | ::Float) value) -> void
          | ("optional_uint32" name, (::Integer | ::Float) value) -> void
          | ("optional_uint64" name, (::Integer | ::Float) value) -> void
          | ("optional_bool" name, bool value) -> void
          | ("optional_double" name, (::Float | ::Integer) value) -> void
          | ("optional_float" name, (::Float | ::Integer) value) -> void
          | ("optional_string" name, (::String | ::Symbol) value) -> void
          | ("optional_bytes" name, ::String value) -> void
          | ("optional_enum" name, (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float) value) -> void
          | ("optional_msg" name, ::A::B::C::TestMessage? value) -> void
          | ("optional_proto2_submessage" name, ::A::B::C::TestImportedMessage? value) -> void
          | ("repeated_int32" name, (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]) value) -> void
          | ("repeated_int64" name, (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]) value) -> void
          | ("repeated_uint32" name, (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]) value) -> void
          | ("repeated_uint64" name, (::Google::Protobuf::RepeatedField[::Integer, ::Integer | ::Float]) value) -> void
          | ("repeated_bool" name, ::Google::Protobuf::RepeatedField[bool, bool] value) -> void
          | ("repeated_double" name, (::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer]) value) -> void
          | ("repeated_float" name, (::Google::Protobuf::RepeatedField[::Float, ::Float | ::Integer]) value) -> void
          | ("repeated_string" name, (::Google::Protobuf::RepeatedField[::String, ::String | ::Symbol]) value) -> void
          | ("repeated_bytes" name, ::Google::Protobuf::RepeatedField[::String, ::String] value) -> void
          | ("repeated_enum" name, (::Google::Protobuf::RepeatedField[::A::B::C::TestEnum::names | ::Integer, ::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float]) value) -> void
          | ("repeated_msg" name, ::Google::Protobuf::RepeatedField[::A::B::C::TestMessage, ::A::B::C::TestMessage] value) -> void
          | ("required_int32" name, (::Integer | ::Float) value) -> void
          | ("required_int64" name, (::Integer | ::Float) value) -> void
          | ("required_uint32" name, (::Integer | ::Float) value) -> void
          | ("required_uint64" name, (::Integer | ::Float) value) -> void
          | ("required_bool" name, bool value) -> void
          | ("required_double" name, (::Float | ::Integer) value) -> void
          | ("required_float" name, (::Float | ::Integer) value) -> void
          | ("required_string" name, (::String | ::Symbol) value) -> void
          | ("required_bytes" name, ::String value) -> void
          | ("required_enum" name, (::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float) value) -> void
          | ("required_msg" name, ::A::B::C::TestMessage? value) -> void
          | ("oneof_int32" name, ((::Integer | ::Float)?) value) -> void
          | ("oneof_int64" name, ((::Integer | ::Float)?) value) -> void
          | ("oneof_uint32" name, ((::Integer | ::Float)?) value) -> void
          | ("oneof_uint64" name, ((::Integer | ::Float)?) value) -> void
          | ("oneof_bool" name, bool? value) -> void
          | ("oneof_double" name, ((::Float | ::Integer)?) value) -> void
          | ("oneof_float" name, ((::Float | ::Integer)?) value) -> void
          | ("oneof_string" name, ((::String | ::Symbol)?) value) -> void
          | ("oneof_bytes" name, ::String? value) -> void
          | ("oneof_enum" name, ((::A::B::C::TestEnum::names | ::A::B::C::TestEnum::strings | ::Integer | ::Float)?) value) -> void
          | ("oneof_msg" name, ::A::B::C::TestMessage? value) -> void
          | ("nested_message" name, ::A::B::C::TestMessage::NestedMessage? value) -> void
      end

      module TestEnum
        extend ::Google::Protobuf::_EnumModule

        Default: 0

        A: 1

        B: 2

        C: 3

        def self.lookup:
            (0 number) -> :Default
          | (1 number) -> :A
          | (2 number) -> :B
          | (3 number) -> :C
          | (::int number) -> names?
          | ...

        def self.resolve:
            (:Default name) -> 0
          | (:A name) -> 1
          | (:B name) -> 2
          | (:C name) -> 3
          | (::Symbol name) -> numbers?
          | ...

        type names = :Default | :A | :B | :C

        type strings = "Default" | "A" | "B" | "C"

        type numbers = 0 | 1 | 2 | 3
      end
    end
  end
end

module Google
  module Protobuf
    class DescriptorPool
      def lookup:
          ("A.B.C.TestMessage" name) -> (::Google::Protobuf::Descriptor & ::Google::Protobuf::_SpecificDescriptor[singleton(::A::B::C::TestMessage)])
        | ("A.B.C.TestMessage.NestedMessage" name) -> (::Google::Protobuf::Descriptor & ::Google::Protobuf::_SpecificDescriptor[singleton(::A::B::C::TestMessage::NestedMessage)])
        | ("A.B.C.TestEnum" name) -> (::Google::Protobuf::EnumDescriptor & ::Google::Protobuf::_SpecificEnumDescriptor[singleton(::A::B::C::TestEnum)])
        | ...
    end
  end
end
