// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto

//go:build protoopaque

package testeditions_hybrid

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	_ "google.golang.org/protobuf/types/gofeaturespb"
	reflect "reflect"
	unsafe "unsafe"
)

type TestAllExtensions struct {
	state           protoimpl.MessageState `protogen:"opaque.v1"`
	extensionFields protoimpl.ExtensionFields
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestAllExtensions) Reset() {
	*x = TestAllExtensions{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllExtensions) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllExtensions) ProtoMessage() {}

func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

type TestAllExtensions_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 TestAllExtensions_builder) Build() *TestAllExtensions {
	m0 := &TestAllExtensions{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

type OptionalGroup struct {
	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
	xxx_hidden_A                     int32                            `protobuf:"varint,17,opt,name=a"`
	xxx_hidden_SameFieldNumber       int32                            `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber"`
	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage"`
	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
	XXX_presence                     [1]uint32
	unknownFields                    protoimpl.UnknownFields
	sizeCache                        protoimpl.SizeCache
}

func (x *OptionalGroup) Reset() {
	*x = OptionalGroup{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *OptionalGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OptionalGroup) ProtoMessage() {}

func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (x *OptionalGroup) GetA() int32 {
	if x != nil {
		return x.xxx_hidden_A
	}
	return 0
}

func (x *OptionalGroup) GetSameFieldNumber() int32 {
	if x != nil {
		return x.xxx_hidden_SameFieldNumber
	}
	return 0
}

func (x *OptionalGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
	if x != nil {
		return x.xxx_hidden_OptionalNestedMessage
	}
	return nil
}

func (x *OptionalGroup) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3)
}

func (x *OptionalGroup) SetSameFieldNumber(v int32) {
	x.xxx_hidden_SameFieldNumber = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 1, 3)
}

func (x *OptionalGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
	x.xxx_hidden_OptionalNestedMessage = v
}

func (x *OptionalGroup) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *OptionalGroup) HasSameFieldNumber() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 1)
}

func (x *OptionalGroup) HasOptionalNestedMessage() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_OptionalNestedMessage != nil
}

func (x *OptionalGroup) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *OptionalGroup) ClearSameFieldNumber() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 1)
	x.xxx_hidden_SameFieldNumber = 0
}

func (x *OptionalGroup) ClearOptionalNestedMessage() {
	x.xxx_hidden_OptionalNestedMessage = nil
}

type OptionalGroup_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A                     *int32
	SameFieldNumber       *int32
	OptionalNestedMessage *TestAllExtensions_NestedMessage
}

func (b0 OptionalGroup_builder) Build() *OptionalGroup {
	m0 := &OptionalGroup{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3)
		x.xxx_hidden_A = *b.A
	}
	if b.SameFieldNumber != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 1, 3)
		x.xxx_hidden_SameFieldNumber = *b.SameFieldNumber
	}
	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

type RepeatedGroup struct {
	state                            protoimpl.MessageState           `protogen:"opaque.v1"`
	xxx_hidden_A                     int32                            `protobuf:"varint,47,opt,name=a"`
	xxx_hidden_OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage"`
	XXX_raceDetectHookData           protoimpl.RaceDetectHookData
	XXX_presence                     [1]uint32
	unknownFields                    protoimpl.UnknownFields
	sizeCache                        protoimpl.SizeCache
}

func (x *RepeatedGroup) Reset() {
	*x = RepeatedGroup{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RepeatedGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RepeatedGroup) ProtoMessage() {}

func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (x *RepeatedGroup) GetA() int32 {
	if x != nil {
		return x.xxx_hidden_A
	}
	return 0
}

func (x *RepeatedGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
	if x != nil {
		return x.xxx_hidden_OptionalNestedMessage
	}
	return nil
}

func (x *RepeatedGroup) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
}

func (x *RepeatedGroup) SetOptionalNestedMessage(v *TestAllExtensions_NestedMessage) {
	x.xxx_hidden_OptionalNestedMessage = v
}

func (x *RepeatedGroup) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *RepeatedGroup) HasOptionalNestedMessage() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_OptionalNestedMessage != nil
}

func (x *RepeatedGroup) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *RepeatedGroup) ClearOptionalNestedMessage() {
	x.xxx_hidden_OptionalNestedMessage = nil
}

type RepeatedGroup_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A                     *int32
	OptionalNestedMessage *TestAllExtensions_NestedMessage
}

func (b0 RepeatedGroup_builder) Build() *RepeatedGroup {
	m0 := &RepeatedGroup{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
		x.xxx_hidden_A = *b.A
	}
	x.xxx_hidden_OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

type TestFeatureResolution struct {
	state           protoimpl.MessageState `protogen:"opaque.v1"`
	extensionFields protoimpl.ExtensionFields
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TestFeatureResolution) Reset() {
	*x = TestFeatureResolution{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestFeatureResolution) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestFeatureResolution) ProtoMessage() {}

func (x *TestFeatureResolution) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

type TestFeatureResolution_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 TestFeatureResolution_builder) Build() *TestFeatureResolution {
	m0 := &TestFeatureResolution{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

type RepeatedFieldEncoding struct {
	state         protoimpl.MessageState `protogen:"opaque.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RepeatedFieldEncoding) Reset() {
	*x = RepeatedFieldEncoding{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RepeatedFieldEncoding) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RepeatedFieldEncoding) ProtoMessage() {}

func (x *RepeatedFieldEncoding) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

type RepeatedFieldEncoding_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

}

func (b0 RepeatedFieldEncoding_builder) Build() *RepeatedFieldEncoding {
	m0 := &RepeatedFieldEncoding{}
	b, x := &b0, m0
	_, _ = b, x
	return m0
}

type TestAllExtensions_NestedMessage struct {
	state                  protoimpl.MessageState `protogen:"opaque.v1"`
	xxx_hidden_A           int32                  `protobuf:"varint,1,opt,name=a"`
	xxx_hidden_Corecursive *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive"`
	XXX_raceDetectHookData protoimpl.RaceDetectHookData
	XXX_presence           [1]uint32
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *TestAllExtensions_NestedMessage) Reset() {
	*x = TestAllExtensions_NestedMessage{}
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TestAllExtensions_NestedMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestAllExtensions_NestedMessage) ProtoMessage() {}

func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
	mi := &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (x *TestAllExtensions_NestedMessage) GetA() int32 {
	if x != nil {
		return x.xxx_hidden_A
	}
	return 0
}

func (x *TestAllExtensions_NestedMessage) GetCorecursive() *TestAllExtensions {
	if x != nil {
		return x.xxx_hidden_Corecursive
	}
	return nil
}

func (x *TestAllExtensions_NestedMessage) SetA(v int32) {
	x.xxx_hidden_A = v
	protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 2)
}

func (x *TestAllExtensions_NestedMessage) SetCorecursive(v *TestAllExtensions) {
	x.xxx_hidden_Corecursive = v
}

func (x *TestAllExtensions_NestedMessage) HasA() bool {
	if x == nil {
		return false
	}
	return protoimpl.X.Present(&(x.XXX_presence[0]), 0)
}

func (x *TestAllExtensions_NestedMessage) HasCorecursive() bool {
	if x == nil {
		return false
	}
	return x.xxx_hidden_Corecursive != nil
}

func (x *TestAllExtensions_NestedMessage) ClearA() {
	protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0)
	x.xxx_hidden_A = 0
}

func (x *TestAllExtensions_NestedMessage) ClearCorecursive() {
	x.xxx_hidden_Corecursive = nil
}

type TestAllExtensions_NestedMessage_builder struct {
	_ [0]func() // Prevents comparability and use of unkeyed literals for the builder.

	A           *int32
	Corecursive *TestAllExtensions
}

func (b0 TestAllExtensions_NestedMessage_builder) Build() *TestAllExtensions_NestedMessage {
	m0 := &TestAllExtensions_NestedMessage{}
	b, x := &b0, m0
	_, _ = b, x
	if b.A != nil {
		protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 2)
		x.xxx_hidden_A = *b.A
	}
	x.xxx_hidden_Corecursive = b.Corecursive
	return m0
}

var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         1,
		Name:          "hybrid.goproto.proto.testeditions.optional_int32",
		Tag:           "varint,1,opt,name=optional_int32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         2,
		Name:          "hybrid.goproto.proto.testeditions.optional_int64",
		Tag:           "varint,2,opt,name=optional_int64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         3,
		Name:          "hybrid.goproto.proto.testeditions.optional_uint32",
		Tag:           "varint,3,opt,name=optional_uint32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         4,
		Name:          "hybrid.goproto.proto.testeditions.optional_uint64",
		Tag:           "varint,4,opt,name=optional_uint64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         5,
		Name:          "hybrid.goproto.proto.testeditions.optional_sint32",
		Tag:           "zigzag32,5,opt,name=optional_sint32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         6,
		Name:          "hybrid.goproto.proto.testeditions.optional_sint64",
		Tag:           "zigzag64,6,opt,name=optional_sint64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         7,
		Name:          "hybrid.goproto.proto.testeditions.optional_fixed32",
		Tag:           "fixed32,7,opt,name=optional_fixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         8,
		Name:          "hybrid.goproto.proto.testeditions.optional_fixed64",
		Tag:           "fixed64,8,opt,name=optional_fixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         9,
		Name:          "hybrid.goproto.proto.testeditions.optional_sfixed32",
		Tag:           "fixed32,9,opt,name=optional_sfixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         10,
		Name:          "hybrid.goproto.proto.testeditions.optional_sfixed64",
		Tag:           "fixed64,10,opt,name=optional_sfixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         11,
		Name:          "hybrid.goproto.proto.testeditions.optional_float",
		Tag:           "fixed32,11,opt,name=optional_float",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         12,
		Name:          "hybrid.goproto.proto.testeditions.optional_double",
		Tag:           "fixed64,12,opt,name=optional_double",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         13,
		Name:          "hybrid.goproto.proto.testeditions.optional_bool",
		Tag:           "varint,13,opt,name=optional_bool",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         14,
		Name:          "hybrid.goproto.proto.testeditions.optional_string",
		Tag:           "bytes,14,opt,name=optional_string",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         15,
		Name:          "hybrid.goproto.proto.testeditions.optional_bytes",
		Tag:           "bytes,15,opt,name=optional_bytes",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*OptionalGroup)(nil),
		Field:         16,
		Name:          "hybrid.goproto.proto.testeditions.optionalgroup",
		Tag:           "group,16,opt,name=OptionalGroup",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
		Field:         18,
		Name:          "hybrid.goproto.proto.testeditions.optional_nested_message",
		Tag:           "bytes,18,opt,name=optional_nested_message",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
		Field:         21,
		Name:          "hybrid.goproto.proto.testeditions.optional_nested_enum",
		Tag:           "varint,21,opt,name=optional_nested_enum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         31,
		Name:          "hybrid.goproto.proto.testeditions.repeated_int32",
		Tag:           "varint,31,rep,name=repeated_int32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         32,
		Name:          "hybrid.goproto.proto.testeditions.repeated_int64",
		Tag:           "varint,32,rep,name=repeated_int64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         33,
		Name:          "hybrid.goproto.proto.testeditions.repeated_uint32",
		Tag:           "varint,33,rep,name=repeated_uint32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         34,
		Name:          "hybrid.goproto.proto.testeditions.repeated_uint64",
		Tag:           "varint,34,rep,name=repeated_uint64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         35,
		Name:          "hybrid.goproto.proto.testeditions.repeated_sint32",
		Tag:           "zigzag32,35,rep,name=repeated_sint32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         36,
		Name:          "hybrid.goproto.proto.testeditions.repeated_sint64",
		Tag:           "zigzag64,36,rep,name=repeated_sint64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint32)(nil),
		Field:         37,
		Name:          "hybrid.goproto.proto.testeditions.repeated_fixed32",
		Tag:           "fixed32,37,rep,name=repeated_fixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]uint64)(nil),
		Field:         38,
		Name:          "hybrid.goproto.proto.testeditions.repeated_fixed64",
		Tag:           "fixed64,38,rep,name=repeated_fixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         39,
		Name:          "hybrid.goproto.proto.testeditions.repeated_sfixed32",
		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]int64)(nil),
		Field:         40,
		Name:          "hybrid.goproto.proto.testeditions.repeated_sfixed64",
		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float32)(nil),
		Field:         41,
		Name:          "hybrid.goproto.proto.testeditions.repeated_float",
		Tag:           "fixed32,41,rep,name=repeated_float",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]float64)(nil),
		Field:         42,
		Name:          "hybrid.goproto.proto.testeditions.repeated_double",
		Tag:           "fixed64,42,rep,name=repeated_double",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]bool)(nil),
		Field:         43,
		Name:          "hybrid.goproto.proto.testeditions.repeated_bool",
		Tag:           "varint,43,rep,name=repeated_bool",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]string)(nil),
		Field:         44,
		Name:          "hybrid.goproto.proto.testeditions.repeated_string",
		Tag:           "bytes,44,rep,name=repeated_string",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([][]byte)(nil),
		Field:         45,
		Name:          "hybrid.goproto.proto.testeditions.repeated_bytes",
		Tag:           "bytes,45,rep,name=repeated_bytes",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*RepeatedGroup)(nil),
		Field:         46,
		Name:          "hybrid.goproto.proto.testeditions.repeatedgroup",
		Tag:           "group,46,rep,name=RepeatedGroup",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
		Field:         48,
		Name:          "hybrid.goproto.proto.testeditions.repeated_nested_message",
		Tag:           "bytes,48,rep,name=repeated_nested_message",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
		Field:         51,
		Name:          "hybrid.goproto.proto.testeditions.repeated_nested_enum",
		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=hybrid.goproto.proto.testeditions.TestAllTypes_NestedEnum",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         81,
		Name:          "hybrid.goproto.proto.testeditions.default_int32",
		Tag:           "varint,81,opt,name=default_int32,def=81",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         82,
		Name:          "hybrid.goproto.proto.testeditions.default_int64",
		Tag:           "varint,82,opt,name=default_int64,def=82",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         83,
		Name:          "hybrid.goproto.proto.testeditions.default_uint32",
		Tag:           "varint,83,opt,name=default_uint32,def=83",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         84,
		Name:          "hybrid.goproto.proto.testeditions.default_uint64",
		Tag:           "varint,84,opt,name=default_uint64,def=84",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         85,
		Name:          "hybrid.goproto.proto.testeditions.default_sint32",
		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         86,
		Name:          "hybrid.goproto.proto.testeditions.default_sint64",
		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint32)(nil),
		Field:         87,
		Name:          "hybrid.goproto.proto.testeditions.default_fixed32",
		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*uint64)(nil),
		Field:         88,
		Name:          "hybrid.goproto.proto.testeditions.default_fixed64",
		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int32)(nil),
		Field:         89,
		Name:          "hybrid.goproto.proto.testeditions.default_sfixed32",
		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*int64)(nil),
		Field:         80,
		Name:          "hybrid.goproto.proto.testeditions.default_sfixed64",
		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float32)(nil),
		Field:         91,
		Name:          "hybrid.goproto.proto.testeditions.default_float",
		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*float64)(nil),
		Field:         92,
		Name:          "hybrid.goproto.proto.testeditions.default_double",
		Tag:           "fixed64,92,opt,name=default_double,def=92000",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         93,
		Name:          "hybrid.goproto.proto.testeditions.default_bool",
		Tag:           "varint,93,opt,name=default_bool,def=1",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*string)(nil),
		Field:         94,
		Name:          "hybrid.goproto.proto.testeditions.default_string",
		Tag:           "bytes,94,opt,name=default_string,def=hello",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]byte)(nil),
		Field:         95,
		Name:          "hybrid.goproto.proto.testeditions.default_bytes",
		Tag:           "bytes,95,opt,name=default_bytes,def=world",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: (*TestRequired)(nil),
		Field:         1000,
		Name:          "hybrid.goproto.proto.testeditions.single",
		Tag:           "bytes,1000,opt,name=single",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestAllExtensions)(nil),
		ExtensionType: ([]*TestRequired)(nil),
		Field:         1001,
		Name:          "hybrid.goproto.proto.testeditions.multi",
		Tag:           "bytes,1001,rep,name=multi",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         2,
		Name:          "hybrid.goproto.proto.testeditions.global_expanded_extension",
		Tag:           "varint,2,rep,name=global_expanded_extension",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         3,
		Name:          "hybrid.goproto.proto.testeditions.global_packed_extension_overriden",
		Tag:           "varint,3,rep,packed,name=global_packed_extension_overriden",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         4,
		Name:          "hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension",
		Tag:           "varint,4,rep,name=message_expanded_extension",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
	{
		ExtendedType:  (*TestFeatureResolution)(nil),
		ExtensionType: ([]int32)(nil),
		Field:         5,
		Name:          "hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden",
		Tag:           "varint,5,rep,packed,name=message_packed_extension_overriden",
		Filename:      "internal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto",
	},
}

// Extension fields to TestAllExtensions.
var (
	// optional int32 optional_int32 = 1;
	E_OptionalInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[0]
	// optional int64 optional_int64 = 2;
	E_OptionalInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[1]
	// optional uint32 optional_uint32 = 3;
	E_OptionalUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[2]
	// optional uint64 optional_uint64 = 4;
	E_OptionalUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[3]
	// optional sint32 optional_sint32 = 5;
	E_OptionalSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[4]
	// optional sint64 optional_sint64 = 6;
	E_OptionalSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[5]
	// optional fixed32 optional_fixed32 = 7;
	E_OptionalFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[6]
	// optional fixed64 optional_fixed64 = 8;
	E_OptionalFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[7]
	// optional sfixed32 optional_sfixed32 = 9;
	E_OptionalSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[8]
	// optional sfixed64 optional_sfixed64 = 10;
	E_OptionalSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[9]
	// optional float optional_float = 11;
	E_OptionalFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[10]
	// optional double optional_double = 12;
	E_OptionalDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[11]
	// optional bool optional_bool = 13;
	E_OptionalBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[12]
	// optional string optional_string = 14;
	E_OptionalString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[13]
	// optional bytes optional_bytes = 15;
	E_OptionalBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[14]
	// optional hybrid.goproto.proto.testeditions.OptionalGroup optionalgroup = 16;
	E_Optionalgroup = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[15]
	// optional hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage optional_nested_message = 18;
	E_OptionalNestedMessage = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[16]
	// optional hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum optional_nested_enum = 21;
	E_OptionalNestedEnum = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[17]
	// repeated int32 repeated_int32 = 31;
	E_RepeatedInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[18]
	// repeated int64 repeated_int64 = 32;
	E_RepeatedInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[19]
	// repeated uint32 repeated_uint32 = 33;
	E_RepeatedUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[20]
	// repeated uint64 repeated_uint64 = 34;
	E_RepeatedUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[21]
	// repeated sint32 repeated_sint32 = 35;
	E_RepeatedSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[22]
	// repeated sint64 repeated_sint64 = 36;
	E_RepeatedSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[23]
	// repeated fixed32 repeated_fixed32 = 37;
	E_RepeatedFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[24]
	// repeated fixed64 repeated_fixed64 = 38;
	E_RepeatedFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[25]
	// repeated sfixed32 repeated_sfixed32 = 39;
	E_RepeatedSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[26]
	// repeated sfixed64 repeated_sfixed64 = 40;
	E_RepeatedSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[27]
	// repeated float repeated_float = 41;
	E_RepeatedFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[28]
	// repeated double repeated_double = 42;
	E_RepeatedDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[29]
	// repeated bool repeated_bool = 43;
	E_RepeatedBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[30]
	// repeated string repeated_string = 44;
	E_RepeatedString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[31]
	// repeated bytes repeated_bytes = 45;
	E_RepeatedBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[32]
	// repeated hybrid.goproto.proto.testeditions.RepeatedGroup repeatedgroup = 46;
	E_Repeatedgroup = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[33]
	// repeated hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage repeated_nested_message = 48;
	E_RepeatedNestedMessage = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[34]
	// repeated hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum repeated_nested_enum = 51;
	E_RepeatedNestedEnum = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[35]
	// optional int32 default_int32 = 81;
	E_DefaultInt32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[36]
	// optional int64 default_int64 = 82;
	E_DefaultInt64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[37]
	// optional uint32 default_uint32 = 83;
	E_DefaultUint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[38]
	// optional uint64 default_uint64 = 84;
	E_DefaultUint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[39]
	// optional sint32 default_sint32 = 85;
	E_DefaultSint32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[40]
	// optional sint64 default_sint64 = 86;
	E_DefaultSint64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[41]
	// optional fixed32 default_fixed32 = 87;
	E_DefaultFixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[42]
	// optional fixed64 default_fixed64 = 88;
	E_DefaultFixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[43]
	// optional sfixed32 default_sfixed32 = 89;
	E_DefaultSfixed32 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[44]
	// optional sfixed64 default_sfixed64 = 80;
	E_DefaultSfixed64 = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[45]
	// optional float default_float = 91;
	E_DefaultFloat = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[46]
	// optional double default_double = 92;
	E_DefaultDouble = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[47]
	// optional bool default_bool = 93;
	E_DefaultBool = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[48]
	// optional string default_string = 94;
	E_DefaultString = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[49]
	// optional bytes default_bytes = 95;
	E_DefaultBytes = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[50]
	// optional hybrid.goproto.proto.testeditions.TestRequired single = 1000;
	E_Single = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[51]
	// repeated hybrid.goproto.proto.testeditions.TestRequired multi = 1001;
	E_Multi = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[52]
)

// Extension fields to TestFeatureResolution.
var (
	// repeated int32 global_expanded_extension = 2;
	E_GlobalExpandedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[53]
	// repeated int32 global_packed_extension_overriden = 3;
	E_GlobalPackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[54]
	// repeated int32 message_expanded_extension = 4;
	E_RepeatedFieldEncoding_MessageExpandedExtension = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[55]
	// repeated int32 message_packed_extension_overriden = 5;
	E_RepeatedFieldEncoding_MessagePackedExtensionOverriden = &file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes[56]
)

var File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto protoreflect.FileDescriptor

const file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc = "\nPinternal/testprotos/testeditions/testeditions_hybrid/test_extension.hybrid.proto!hybrid.goproto.proto.testeditionsFinternal/testprotos/testeditions/testeditions_hybrid/test.hybrid.proto!google/protobuf/go_features.proto\"\x94\nTestAllExtensionsu\n\rNestedMessage\na (RaV\ncorecursive (24.hybrid.goproto.proto.testeditions.TestAllExtensionsRcorecursive*\x80\x80\x80\x80\"\xc6\n\rOptionalGroup\na (Ra*\nsame_field_number (RsameFieldNumber{\noptional_nested_message\xe8 (2B.hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage\"\x9a\n\rRepeatedGroup\na/ (Ra{\noptional_nested_message\xe9 (2B.hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage\"!\nTestFeatureResolution*\x80\x80\x80\x80\"\x9e\nRepeatedFieldEncoding2v\nmessage_expanded_extension8.hybrid.goproto.proto.testeditions.TestFeatureResolution (RmessageExpandedExtension2\x8c\n\"message_packed_extension_overriden8.hybrid.goproto.proto.testeditions.TestFeatureResolution (B\xaaRmessagePackedExtensionOverriden:[\noptional_int324.hybrid.goproto.proto.testeditions.TestAllExtensions (R\roptionalInt32:[\noptional_int644.hybrid.goproto.proto.testeditions.TestAllExtensions (R\roptionalInt64:]\noptional_uint324.hybrid.goproto.proto.testeditions.TestAllExtensions (\rRoptionalUint32:]\noptional_uint644.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalUint64:]\noptional_sint324.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalSint32:]\noptional_sint644.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalSint64:_\noptional_fixed324.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalFixed32:_\noptional_fixed644.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalFixed64:a\noptional_sfixed324.hybrid.goproto.proto.testeditions.TestAllExtensions	 (RoptionalSfixed32:a\noptional_sfixed644.hybrid.goproto.proto.testeditions.TestAllExtensions\n (RoptionalSfixed64:[\noptional_float4.hybrid.goproto.proto.testeditions.TestAllExtensions (R\roptionalFloat:]\noptional_double4.hybrid.goproto.proto.testeditions.TestAllExtensions (RoptionalDouble:Y\n\roptional_bool4.hybrid.goproto.proto.testeditions.TestAllExtensions\r (RoptionalBool:]\noptional_string4.hybrid.goproto.proto.testeditions.TestAllExtensions (	RoptionalString:[\noptional_bytes4.hybrid.goproto.proto.testeditions.TestAllExtensions (R\roptionalBytes:\x93\n\roptionalgroup4.hybrid.goproto.proto.testeditions.TestAllExtensions (20.hybrid.goproto.proto.testeditions.OptionalGroupB\xaa(R\roptionalgroup:\xb0\noptional_nested_message4.hybrid.goproto.proto.testeditions.TestAllExtensions (2B.hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessageRoptionalNestedMessage:\xa2\noptional_nested_enum4.hybrid.goproto.proto.testeditions.TestAllExtensions (2:.hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnumRoptionalNestedEnum:[\nrepeated_int324.hybrid.goproto.proto.testeditions.TestAllExtensions (R\rrepeatedInt32:[\nrepeated_int644.hybrid.goproto.proto.testeditions.TestAllExtensions  (R\rrepeatedInt64:]\nrepeated_uint324.hybrid.goproto.proto.testeditions.TestAllExtensions! (\rRrepeatedUint32:]\nrepeated_uint644.hybrid.goproto.proto.testeditions.TestAllExtensions\" (RrepeatedUint64:]\nrepeated_sint324.hybrid.goproto.proto.testeditions.TestAllExtensions# (RrepeatedSint32:]\nrepeated_sint644.hybrid.goproto.proto.testeditions.TestAllExtensions$ (RrepeatedSint64:_\nrepeated_fixed324.hybrid.goproto.proto.testeditions.TestAllExtensions% (RrepeatedFixed32:_\nrepeated_fixed644.hybrid.goproto.proto.testeditions.TestAllExtensions& (RrepeatedFixed64:a\nrepeated_sfixed324.hybrid.goproto.proto.testeditions.TestAllExtensions' (RrepeatedSfixed32:a\nrepeated_sfixed644.hybrid.goproto.proto.testeditions.TestAllExtensions( (RrepeatedSfixed64:[\nrepeated_float4.hybrid.goproto.proto.testeditions.TestAllExtensions) (R\rrepeatedFloat:]\nrepeated_double4.hybrid.goproto.proto.testeditions.TestAllExtensions* (RrepeatedDouble:Y\n\rrepeated_bool4.hybrid.goproto.proto.testeditions.TestAllExtensions+ (RrepeatedBool:]\nrepeated_string4.hybrid.goproto.proto.testeditions.TestAllExtensions, (	RrepeatedString:[\nrepeated_bytes4.hybrid.goproto.proto.testeditions.TestAllExtensions- (R\rrepeatedBytes:\x93\n\rrepeatedgroup4.hybrid.goproto.proto.testeditions.TestAllExtensions. (20.hybrid.goproto.proto.testeditions.RepeatedGroupB\xaa(R\rrepeatedgroup:\xb0\nrepeated_nested_message4.hybrid.goproto.proto.testeditions.TestAllExtensions0 (2B.hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessageRrepeatedNestedMessage:\xa2\nrepeated_nested_enum4.hybrid.goproto.proto.testeditions.TestAllExtensions3 (2:.hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnumRrepeatedNestedEnum:]\n\rdefault_int324.hybrid.goproto.proto.testeditions.TestAllExtensionsQ (:81RdefaultInt32:]\n\rdefault_int644.hybrid.goproto.proto.testeditions.TestAllExtensionsR (:82RdefaultInt64:_\ndefault_uint324.hybrid.goproto.proto.testeditions.TestAllExtensionsS (\r:83R\rdefaultUint32:_\ndefault_uint644.hybrid.goproto.proto.testeditions.TestAllExtensionsT (:84R\rdefaultUint64:`\ndefault_sint324.hybrid.goproto.proto.testeditions.TestAllExtensionsU (:-85R\rdefaultSint32:_\ndefault_sint644.hybrid.goproto.proto.testeditions.TestAllExtensionsV (:86R\rdefaultSint64:a\ndefault_fixed324.hybrid.goproto.proto.testeditions.TestAllExtensionsW (:87RdefaultFixed32:a\ndefault_fixed644.hybrid.goproto.proto.testeditions.TestAllExtensionsX (:88RdefaultFixed64:c\ndefault_sfixed324.hybrid.goproto.proto.testeditions.TestAllExtensionsY (:89RdefaultSfixed32:d\ndefault_sfixed644.hybrid.goproto.proto.testeditions.TestAllExtensionsP (:-90RdefaultSfixed64:_\n\rdefault_float4.hybrid.goproto.proto.testeditions.TestAllExtensions[ (:91.5RdefaultFloat:b\ndefault_double4.hybrid.goproto.proto.testeditions.TestAllExtensions\\ (:92000R\rdefaultDouble:]\ndefault_bool4.hybrid.goproto.proto.testeditions.TestAllExtensions] (:trueRdefaultBool:b\ndefault_string4.hybrid.goproto.proto.testeditions.TestAllExtensions^ (	:helloR\rdefaultString:`\n\rdefault_bytes4.hybrid.goproto.proto.testeditions.TestAllExtensions_ (:worldRdefaultBytes:~\nsingle4.hybrid.goproto.proto.testeditions.TestAllExtensions\xe8 (2/.hybrid.goproto.proto.testeditions.TestRequiredRsingle:|\nmulti4.hybrid.goproto.proto.testeditions.TestAllExtensions\xe9 (2/.hybrid.goproto.proto.testeditions.TestRequiredRmulti:t\nglobal_expanded_extension8.hybrid.goproto.proto.testeditions.TestFeatureResolution (RglobalExpandedExtension:\x8a\n!global_packed_extension_overriden8.hybrid.goproto.proto.testeditions.TestFeatureResolution (B\xaaRglobalPackedExtensionOverridenB]ZOgoogle.golang.org/protobuf/internal/testprotos/testeditions/testeditions_hybrid\x92	\xd2> beditionsp\xe8"

var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes = []any{
	(*TestAllExtensions)(nil),               // 0: hybrid.goproto.proto.testeditions.TestAllExtensions
	(*OptionalGroup)(nil),                   // 1: hybrid.goproto.proto.testeditions.OptionalGroup
	(*RepeatedGroup)(nil),                   // 2: hybrid.goproto.proto.testeditions.RepeatedGroup
	(*TestFeatureResolution)(nil),           // 3: hybrid.goproto.proto.testeditions.TestFeatureResolution
	(*RepeatedFieldEncoding)(nil),           // 4: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding
	(*TestAllExtensions_NestedMessage)(nil), // 5: hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	(TestAllTypes_NestedEnum)(0),            // 6: hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
	(*TestRequired)(nil),                    // 7: hybrid.goproto.proto.testeditions.TestRequired
}
var file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs = []int32{
	5,  // 0: hybrid.goproto.proto.testeditions.OptionalGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	5,  // 1: hybrid.goproto.proto.testeditions.RepeatedGroup.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	0,  // 2: hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage.corecursive:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 3: hybrid.goproto.proto.testeditions.optional_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 4: hybrid.goproto.proto.testeditions.optional_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 5: hybrid.goproto.proto.testeditions.optional_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 6: hybrid.goproto.proto.testeditions.optional_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 7: hybrid.goproto.proto.testeditions.optional_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 8: hybrid.goproto.proto.testeditions.optional_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 9: hybrid.goproto.proto.testeditions.optional_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 10: hybrid.goproto.proto.testeditions.optional_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 11: hybrid.goproto.proto.testeditions.optional_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 12: hybrid.goproto.proto.testeditions.optional_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 13: hybrid.goproto.proto.testeditions.optional_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 14: hybrid.goproto.proto.testeditions.optional_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 15: hybrid.goproto.proto.testeditions.optional_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 16: hybrid.goproto.proto.testeditions.optional_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 17: hybrid.goproto.proto.testeditions.optional_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 18: hybrid.goproto.proto.testeditions.optionalgroup:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 19: hybrid.goproto.proto.testeditions.optional_nested_message:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 20: hybrid.goproto.proto.testeditions.optional_nested_enum:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 21: hybrid.goproto.proto.testeditions.repeated_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 22: hybrid.goproto.proto.testeditions.repeated_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 23: hybrid.goproto.proto.testeditions.repeated_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 24: hybrid.goproto.proto.testeditions.repeated_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 25: hybrid.goproto.proto.testeditions.repeated_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 26: hybrid.goproto.proto.testeditions.repeated_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 27: hybrid.goproto.proto.testeditions.repeated_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 28: hybrid.goproto.proto.testeditions.repeated_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 29: hybrid.goproto.proto.testeditions.repeated_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 30: hybrid.goproto.proto.testeditions.repeated_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 31: hybrid.goproto.proto.testeditions.repeated_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 32: hybrid.goproto.proto.testeditions.repeated_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 33: hybrid.goproto.proto.testeditions.repeated_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 34: hybrid.goproto.proto.testeditions.repeated_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 35: hybrid.goproto.proto.testeditions.repeated_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 36: hybrid.goproto.proto.testeditions.repeatedgroup:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 37: hybrid.goproto.proto.testeditions.repeated_nested_message:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 38: hybrid.goproto.proto.testeditions.repeated_nested_enum:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 39: hybrid.goproto.proto.testeditions.default_int32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 40: hybrid.goproto.proto.testeditions.default_int64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 41: hybrid.goproto.proto.testeditions.default_uint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 42: hybrid.goproto.proto.testeditions.default_uint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 43: hybrid.goproto.proto.testeditions.default_sint32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 44: hybrid.goproto.proto.testeditions.default_sint64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 45: hybrid.goproto.proto.testeditions.default_fixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 46: hybrid.goproto.proto.testeditions.default_fixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 47: hybrid.goproto.proto.testeditions.default_sfixed32:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 48: hybrid.goproto.proto.testeditions.default_sfixed64:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 49: hybrid.goproto.proto.testeditions.default_float:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 50: hybrid.goproto.proto.testeditions.default_double:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 51: hybrid.goproto.proto.testeditions.default_bool:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 52: hybrid.goproto.proto.testeditions.default_string:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 53: hybrid.goproto.proto.testeditions.default_bytes:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 54: hybrid.goproto.proto.testeditions.single:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	0,  // 55: hybrid.goproto.proto.testeditions.multi:extendee -> hybrid.goproto.proto.testeditions.TestAllExtensions
	3,  // 56: hybrid.goproto.proto.testeditions.global_expanded_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
	3,  // 57: hybrid.goproto.proto.testeditions.global_packed_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
	3,  // 58: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_expanded_extension:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
	3,  // 59: hybrid.goproto.proto.testeditions.RepeatedFieldEncoding.message_packed_extension_overriden:extendee -> hybrid.goproto.proto.testeditions.TestFeatureResolution
	1,  // 60: hybrid.goproto.proto.testeditions.optionalgroup:type_name -> hybrid.goproto.proto.testeditions.OptionalGroup
	5,  // 61: hybrid.goproto.proto.testeditions.optional_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	6,  // 62: hybrid.goproto.proto.testeditions.optional_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
	2,  // 63: hybrid.goproto.proto.testeditions.repeatedgroup:type_name -> hybrid.goproto.proto.testeditions.RepeatedGroup
	5,  // 64: hybrid.goproto.proto.testeditions.repeated_nested_message:type_name -> hybrid.goproto.proto.testeditions.TestAllExtensions.NestedMessage
	6,  // 65: hybrid.goproto.proto.testeditions.repeated_nested_enum:type_name -> hybrid.goproto.proto.testeditions.TestAllTypes.NestedEnum
	7,  // 66: hybrid.goproto.proto.testeditions.single:type_name -> hybrid.goproto.proto.testeditions.TestRequired
	7,  // 67: hybrid.goproto.proto.testeditions.multi:type_name -> hybrid.goproto.proto.testeditions.TestRequired
	68, // [68:68] is the sub-list for method output_type
	68, // [68:68] is the sub-list for method input_type
	60, // [60:68] is the sub-list for extension type_name
	3,  // [3:60] is the sub-list for extension extendee
	0,  // [0:3] is the sub-list for field type_name
}

func init() {
	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_init()
}
func file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_init() {
	if File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto != nil {
		return
	}
	file_internal_testprotos_testeditions_testeditions_hybrid_test_hybrid_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc), len(file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   6,
			NumExtensions: 57,
			NumServices:   0,
		},
		GoTypes:           file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes,
		DependencyIndexes: file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs,
		MessageInfos:      file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_msgTypes,
		ExtensionInfos:    file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_extTypes,
	}.Build()
	File_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto = out.File
	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_goTypes = nil
	file_internal_testprotos_testeditions_testeditions_hybrid_test_extension_hybrid_proto_depIdxs = nil
}
