// 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:"hybrid.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:"hybrid.v1"`
	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	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 && x.A != nil {
		return *x.A
	}
	return 0
}

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

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

func (x *OptionalGroup) SetA(v int32) {
	x.A = &v
}

func (x *OptionalGroup) SetSameFieldNumber(v int32) {
	x.SameFieldNumber = &v
}

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

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

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

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

func (x *OptionalGroup) ClearA() {
	x.A = nil
}

func (x *OptionalGroup) ClearSameFieldNumber() {
	x.SameFieldNumber = nil
}

func (x *OptionalGroup) ClearOptionalNestedMessage() {
	x.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
	x.A = b.A
	x.SameFieldNumber = b.SameFieldNumber
	x.OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

type RepeatedGroup struct {
	state                 protoimpl.MessageState           `protogen:"hybrid.v1"`
	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
	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 && x.A != nil {
		return *x.A
	}
	return 0
}

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

func (x *RepeatedGroup) SetA(v int32) {
	x.A = &v
}

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

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

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

func (x *RepeatedGroup) ClearA() {
	x.A = nil
}

func (x *RepeatedGroup) ClearOptionalNestedMessage() {
	x.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
	x.A = b.A
	x.OptionalNestedMessage = b.OptionalNestedMessage
	return m0
}

type TestFeatureResolution struct {
	state           protoimpl.MessageState `protogen:"hybrid.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:"hybrid.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:"hybrid.v1"`
	A             *int32                 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
	Corecursive   *TestAllExtensions     `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
	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 && x.A != nil {
		return *x.A
	}
	return 0
}

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

func (x *TestAllExtensions_NestedMessage) SetA(v int32) {
	x.A = &v
}

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

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

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

func (x *TestAllExtensions_NestedMessage) ClearA() {
	x.A = nil
}

func (x *TestAllExtensions_NestedMessage) ClearCorecursive() {
	x.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
	x.A = b.A
	x.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
}
