diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
index 9de3c43..0fd1dd6 100644
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ b/cmd/protoc-gen-go/internal_gengo/main.go
@@ -77,7 +77,6 @@
 	protoifacePackage   goImportPath = protogen.GoImportPath("google.golang.org/protobuf/runtime/protoiface")
 	protoimplPackage    goImportPath = protogen.GoImportPath("google.golang.org/protobuf/runtime/protoimpl")
 	protoreflectPackage goImportPath = protogen.GoImportPath("google.golang.org/protobuf/reflect/protoreflect")
-	prototypePackage    goImportPath = protogen.GoImportPath("google.golang.org/protobuf/reflect/prototype")
 )
 
 type goImportPath interface {
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index fab01f4..b0d3dfb 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -23,7 +23,7 @@
 
 	genFileDescriptor(gen, g, f)
 	if len(f.allEnums) > 0 {
-		g.P("var ", enumTypesVarName(f), " = make([]", prototypePackage.Ident("Enum"), ",", len(f.allEnums), ")")
+		g.P("var ", enumTypesVarName(f), " = make([]", protoimplPackage.Ident("EnumInfo"), ",", len(f.allEnums), ")")
 	}
 	if len(f.allMessages) > 0 {
 		g.P("var ", messageTypesVarName(f), " = make([]", protoimplPackage.Ident("MessageInfo"), ",", len(f.allMessages), ")")
@@ -205,6 +205,9 @@
 	g.P("},")
 	g.P("GoTypes: ", goTypesVarName(f), ",")
 	g.P("DependencyIndexes: ", depIdxsVarName(f), ",")
+	if len(f.allEnums) > 0 {
+		g.P("EnumInfos: ", enumTypesVarName(f), ",")
+	}
 	if len(f.allMessages) > 0 {
 		g.P("MessageInfos: ", messageTypesVarName(f), ",")
 	}
@@ -213,9 +216,6 @@
 	}
 	g.P("}.Build()")
 	g.P(f.GoDescriptorIdent, " = out.File")
-	if len(f.allEnums) > 0 {
-		g.P(enumTypesVarName(f), " = out.Enums")
-	}
 
 	// Set inputs to nil to allow GC to reclaim resources.
 	g.P(rawDescVarName(f), " = nil")
@@ -278,7 +278,7 @@
 
 	// Descriptor method.
 	g.P("func (", enum.GoIdent, ") Descriptor() ", protoreflectPackage.Ident("EnumDescriptor"), " {")
-	g.P("return ", typesVar, "[", idx, "].EnumDescriptor")
+	g.P("return ", typesVar, "[", idx, "].Descriptor()")
 	g.P("}")
 	g.P()
 
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index 85a1519..a9d3d82 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (AnnotationsTestEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_annotations_annotations_proto_enumTypes[0].EnumDescriptor
+	return file_annotations_annotations_proto_enumTypes[0].Descriptor()
 }
 
 func (AnnotationsTestEnum) Type() protoreflect.EnumType {
@@ -144,7 +143,7 @@
 	return file_annotations_annotations_proto_rawDescData
 }
 
-var file_annotations_annotations_proto_enumTypes = make([]prototype.Enum, 1)
+var file_annotations_annotations_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_annotations_annotations_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_annotations_annotations_proto_goTypes = []interface{}{
 	(AnnotationsTestEnum)(0),       // 0: goproto.protoc.annotations.AnnotationsTestEnum
@@ -189,10 +188,10 @@
 		},
 		GoTypes:           file_annotations_annotations_proto_goTypes,
 		DependencyIndexes: file_annotations_annotations_proto_depIdxs,
+		EnumInfos:         file_annotations_annotations_proto_enumTypes,
 		MessageInfos:      file_annotations_annotations_proto_msgTypes,
 	}.Build()
 	File_annotations_annotations_proto = out.File
-	file_annotations_annotations_proto_enumTypes = out.Enums
 	file_annotations_annotations_proto_rawDesc = nil
 	file_annotations_annotations_proto_goTypes = nil
 	file_annotations_annotations_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
index 81982ca..276710e 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
@@ -1 +1 @@
-annotation:{path:5 path:0 source_file:"annotations/annotations.proto" begin:501 end:520} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:537 end:584} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1864 end:1886} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2010 end:2030} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2924 end:2947}
\ No newline at end of file
+annotation:{path:5 path:0 source_file:"annotations/annotations.proto" begin:443 end:462} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:479 end:526} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1804 end:1826} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:1950 end:1970} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2864 end:2887}
\ No newline at end of file
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
index 0dfc577..d831634 100644
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -51,7 +50,7 @@
 }
 
 func (Enum1) Descriptor() protoreflect.EnumDescriptor {
-	return file_comments_comments_proto_enumTypes[0].EnumDescriptor
+	return file_comments_comments_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum1) Type() protoreflect.EnumType {
@@ -393,7 +392,7 @@
 	return file_comments_comments_proto_rawDescData
 }
 
-var file_comments_comments_proto_enumTypes = make([]prototype.Enum, 1)
+var file_comments_comments_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_comments_comments_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 var file_comments_comments_proto_goTypes = []interface{}{
 	(Enum1)(0),                 // 0: goproto.protoc.comments.Enum1
@@ -510,11 +509,11 @@
 		},
 		GoTypes:           file_comments_comments_proto_goTypes,
 		DependencyIndexes: file_comments_comments_proto_depIdxs,
+		EnumInfos:         file_comments_comments_proto_enumTypes,
 		MessageInfos:      file_comments_comments_proto_msgTypes,
 		LegacyExtensions:  file_comments_comments_proto_extDescs,
 	}.Build()
 	File_comments_comments_proto = out.File
-	file_comments_comments_proto_enumTypes = out.Enums
 	file_comments_comments_proto_rawDesc = nil
 	file_comments_comments_proto_goTypes = nil
 	file_comments_comments_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
index f63e7b6..fd53a8f 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -44,7 +43,7 @@
 }
 
 func (DeprecatedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_comments_deprecated_proto_enumTypes[0].EnumDescriptor
+	return file_comments_deprecated_proto_enumTypes[0].Descriptor()
 }
 
 func (DeprecatedEnum) Type() protoreflect.EnumType {
@@ -138,7 +137,7 @@
 	return file_comments_deprecated_proto_rawDescData
 }
 
-var file_comments_deprecated_proto_enumTypes = make([]prototype.Enum, 1)
+var file_comments_deprecated_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_comments_deprecated_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_comments_deprecated_proto_goTypes = []interface{}{
 	(DeprecatedEnum)(0),       // 0: goproto.protoc.comments.DeprecatedEnum
@@ -183,10 +182,10 @@
 		},
 		GoTypes:           file_comments_deprecated_proto_goTypes,
 		DependencyIndexes: file_comments_deprecated_proto_depIdxs,
+		EnumInfos:         file_comments_deprecated_proto_enumTypes,
 		MessageInfos:      file_comments_deprecated_proto_msgTypes,
 	}.Build()
 	File_comments_deprecated_proto = out.File
-	file_comments_deprecated_proto_enumTypes = out.Enums
 	file_comments_deprecated_proto_rawDesc = nil
 	file_comments_deprecated_proto_goTypes = nil
 	file_comments_deprecated_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
index 3dc31cf..bdc3c11 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -11,7 +11,6 @@
 	base "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/base"
 	extra "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/extra"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -45,7 +44,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_extensions_ext_ext_proto_enumTypes[0].EnumDescriptor
+	return file_extensions_ext_ext_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -1160,7 +1159,7 @@
 	return file_extensions_ext_ext_proto_rawDescData
 }
 
-var file_extensions_ext_ext_proto_enumTypes = make([]prototype.Enum, 1)
+var file_extensions_ext_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_extensions_ext_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
 var file_extensions_ext_ext_proto_goTypes = []interface{}{
 	(Enum)(0),                             // 0: goproto.protoc.extension.ext.Enum
@@ -1357,11 +1356,11 @@
 		},
 		GoTypes:           file_extensions_ext_ext_proto_goTypes,
 		DependencyIndexes: file_extensions_ext_ext_proto_depIdxs,
+		EnumInfos:         file_extensions_ext_ext_proto_enumTypes,
 		MessageInfos:      file_extensions_ext_ext_proto_msgTypes,
 		LegacyExtensions:  file_extensions_ext_ext_proto_extDescs,
 	}.Build()
 	File_extensions_ext_ext_proto = out.File
-	file_extensions_ext_ext_proto_enumTypes = out.Enums
 	file_extensions_ext_ext_proto_rawDesc = nil
 	file_extensions_ext_ext_proto_goTypes = nil
 	file_extensions_ext_ext_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
index 5edd050..afadf1f 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
@@ -44,7 +43,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_extensions_proto3_ext3_proto_enumTypes[0].EnumDescriptor
+	return file_extensions_proto3_ext3_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -662,7 +661,7 @@
 	return file_extensions_proto3_ext3_proto_rawDescData
 }
 
-var file_extensions_proto3_ext3_proto_enumTypes = make([]prototype.Enum, 1)
+var file_extensions_proto3_ext3_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_extensions_proto3_ext3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_extensions_proto3_ext3_proto_goTypes = []interface{}{
 	(Enum)(0),                           // 0: goproto.protoc.extension.proto3.Enum
@@ -746,11 +745,11 @@
 		},
 		GoTypes:           file_extensions_proto3_ext3_proto_goTypes,
 		DependencyIndexes: file_extensions_proto3_ext3_proto_depIdxs,
+		EnumInfos:         file_extensions_proto3_ext3_proto_enumTypes,
 		MessageInfos:      file_extensions_proto3_ext3_proto_msgTypes,
 		LegacyExtensions:  file_extensions_proto3_ext3_proto_extDescs,
 	}.Build()
 	File_extensions_proto3_ext3_proto = out.File
-	file_extensions_proto3_ext3_proto_enumTypes = out.Enums
 	file_extensions_proto3_ext3_proto_rawDesc = nil
 	file_extensions_proto3_ext3_proto_goTypes = nil
 	file_extensions_proto3_ext3_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
index ce9598e..bf1aa64 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
@@ -10,7 +10,6 @@
 import (
 	sub2 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub2"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	math "math"
@@ -49,7 +48,7 @@
 }
 
 func (E) Descriptor() protoreflect.EnumDescriptor {
-	return file_import_public_sub_a_proto_enumTypes[0].EnumDescriptor
+	return file_import_public_sub_a_proto_enumTypes[0].Descriptor()
 }
 
 func (E) Type() protoreflect.EnumType {
@@ -102,7 +101,7 @@
 }
 
 func (M_Subenum) Descriptor() protoreflect.EnumDescriptor {
-	return file_import_public_sub_a_proto_enumTypes[1].EnumDescriptor
+	return file_import_public_sub_a_proto_enumTypes[1].Descriptor()
 }
 
 func (M_Subenum) Type() protoreflect.EnumType {
@@ -155,7 +154,7 @@
 }
 
 func (M_Submessage_Submessage_Subenum) Descriptor() protoreflect.EnumDescriptor {
-	return file_import_public_sub_a_proto_enumTypes[2].EnumDescriptor
+	return file_import_public_sub_a_proto_enumTypes[2].Descriptor()
 }
 
 func (M_Submessage_Submessage_Subenum) Type() protoreflect.EnumType {
@@ -465,7 +464,7 @@
 	return file_import_public_sub_a_proto_rawDescData
 }
 
-var file_import_public_sub_a_proto_enumTypes = make([]prototype.Enum, 3)
+var file_import_public_sub_a_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
 var file_import_public_sub_a_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_import_public_sub_a_proto_goTypes = []interface{}{
 	(E)(0),                               // 0: goproto.protoc.import_public.sub.E
@@ -539,11 +538,11 @@
 		},
 		GoTypes:           file_import_public_sub_a_proto_goTypes,
 		DependencyIndexes: file_import_public_sub_a_proto_depIdxs,
+		EnumInfos:         file_import_public_sub_a_proto_enumTypes,
 		MessageInfos:      file_import_public_sub_a_proto_msgTypes,
 		LegacyExtensions:  file_import_public_sub_a_proto_extDescs,
 	}.Build()
 	File_import_public_sub_a_proto = out.File
-	file_import_public_sub_a_proto_enumTypes = out.Enums
 	file_import_public_sub_a_proto_rawDesc = nil
 	file_import_public_sub_a_proto_goTypes = nil
 	file_import_public_sub_a_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
index 867868c..a5fc0b3 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (E1) Descriptor() protoreflect.EnumDescriptor {
-	return file_imports_test_a_1_m1_proto_enumTypes[0].EnumDescriptor
+	return file_imports_test_a_1_m1_proto_enumTypes[0].Descriptor()
 }
 
 func (E1) Type() protoreflect.EnumType {
@@ -162,7 +161,7 @@
 	return file_imports_test_a_1_m1_proto_rawDescData
 }
 
-var file_imports_test_a_1_m1_proto_enumTypes = make([]prototype.Enum, 1)
+var file_imports_test_a_1_m1_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_imports_test_a_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_imports_test_a_1_m1_proto_goTypes = []interface{}{
 	(E1)(0),      // 0: test.a.E1
@@ -221,10 +220,10 @@
 		},
 		GoTypes:           file_imports_test_a_1_m1_proto_goTypes,
 		DependencyIndexes: file_imports_test_a_1_m1_proto_depIdxs,
+		EnumInfos:         file_imports_test_a_1_m1_proto_enumTypes,
 		MessageInfos:      file_imports_test_a_1_m1_proto_msgTypes,
 	}.Build()
 	File_imports_test_a_1_m1_proto = out.File
-	file_imports_test_a_1_m1_proto_enumTypes = out.Enums
 	file_imports_test_a_1_m1_proto_rawDesc = nil
 	file_imports_test_a_1_m1_proto_goTypes = nil
 	file_imports_test_a_1_m1_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
index ec9c6e2..2d2d91a 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_nopackage_nopackage_proto_enumTypes[0].EnumDescriptor
+	return file_nopackage_nopackage_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -149,7 +148,7 @@
 	return file_nopackage_nopackage_proto_rawDescData
 }
 
-var file_nopackage_nopackage_proto_enumTypes = make([]prototype.Enum, 1)
+var file_nopackage_nopackage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_nopackage_nopackage_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_nopackage_nopackage_proto_goTypes = []interface{}{
 	(Enum)(0),       // 0: Enum
@@ -195,10 +194,10 @@
 		},
 		GoTypes:           file_nopackage_nopackage_proto_goTypes,
 		DependencyIndexes: file_nopackage_nopackage_proto_depIdxs,
+		EnumInfos:         file_nopackage_nopackage_proto_enumTypes,
 		MessageInfos:      file_nopackage_nopackage_proto_msgTypes,
 	}.Build()
 	File_nopackage_nopackage_proto = out.File
-	file_nopackage_nopackage_proto_enumTypes = out.Enums
 	file_nopackage_nopackage_proto_rawDesc = nil
 	file_nopackage_nopackage_proto_goTypes = nil
 	file_nopackage_nopackage_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
index 454f8c4..6a48fae 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -48,7 +47,7 @@
 }
 
 func (EnumType1) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[0].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[0].Descriptor()
 }
 
 func (EnumType1) Type() protoreflect.EnumType {
@@ -104,7 +103,7 @@
 }
 
 func (EnumType2) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[1].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[1].Descriptor()
 }
 
 func (EnumType2) Type() protoreflect.EnumType {
@@ -159,7 +158,7 @@
 }
 
 func (EnumContainerMessage1_NestedEnumType1A) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[2].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[2].Descriptor()
 }
 
 func (EnumContainerMessage1_NestedEnumType1A) Type() protoreflect.EnumType {
@@ -212,7 +211,7 @@
 }
 
 func (EnumContainerMessage1_NestedEnumType1B) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[3].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[3].Descriptor()
 }
 
 func (EnumContainerMessage1_NestedEnumType1B) Type() protoreflect.EnumType {
@@ -267,7 +266,7 @@
 }
 
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[4].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[4].Descriptor()
 }
 
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Type() protoreflect.EnumType {
@@ -320,7 +319,7 @@
 }
 
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_enum_proto_enumTypes[5].EnumDescriptor
+	return file_proto2_enum_proto_enumTypes[5].Descriptor()
 }
 
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Type() protoreflect.EnumType {
@@ -491,7 +490,7 @@
 	return file_proto2_enum_proto_rawDescData
 }
 
-var file_proto2_enum_proto_enumTypes = make([]prototype.Enum, 6)
+var file_proto2_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
 var file_proto2_enum_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_proto2_enum_proto_goTypes = []interface{}{
 	(EnumType1)(0), // 0: goproto.protoc.proto2.EnumType1
@@ -556,10 +555,10 @@
 		},
 		GoTypes:           file_proto2_enum_proto_goTypes,
 		DependencyIndexes: file_proto2_enum_proto_depIdxs,
+		EnumInfos:         file_proto2_enum_proto_enumTypes,
 		MessageInfos:      file_proto2_enum_proto_msgTypes,
 	}.Build()
 	File_proto2_enum_proto = out.File
-	file_proto2_enum_proto_enumTypes = out.Enums
 	file_proto2_enum_proto_rawDesc = nil
 	file_proto2_enum_proto_goTypes = nil
 	file_proto2_enum_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
index 58d4925..d8b576b 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	math "math"
 	reflect "reflect"
@@ -46,7 +45,7 @@
 }
 
 func (FieldTestMessage_Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto2_fields_proto_enumTypes[0].EnumDescriptor
+	return file_proto2_fields_proto_enumTypes[0].Descriptor()
 }
 
 func (FieldTestMessage_Enum) Type() protoreflect.EnumType {
@@ -1694,7 +1693,7 @@
 	return file_proto2_fields_proto_rawDescData
 }
 
-var file_proto2_fields_proto_enumTypes = make([]prototype.Enum, 1)
+var file_proto2_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_proto2_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
 var file_proto2_fields_proto_goTypes = []interface{}{
 	(FieldTestMessage_Enum)(0),             // 0: goproto.protoc.proto2.FieldTestMessage.Enum
@@ -1848,10 +1847,10 @@
 		},
 		GoTypes:           file_proto2_fields_proto_goTypes,
 		DependencyIndexes: file_proto2_fields_proto_depIdxs,
+		EnumInfos:         file_proto2_fields_proto_enumTypes,
 		MessageInfos:      file_proto2_fields_proto_msgTypes,
 	}.Build()
 	File_proto2_fields_proto = out.File
-	file_proto2_fields_proto_enumTypes = out.Enums
 	file_proto2_fields_proto_rawDesc = nil
 	file_proto2_fields_proto_goTypes = nil
 	file_proto2_fields_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
index aab7bb4..203815a 100644
--- a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -48,7 +47,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto3_enum_proto_enumTypes[0].EnumDescriptor
+	return file_proto3_enum_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -91,7 +90,7 @@
 	return file_proto3_enum_proto_rawDescData
 }
 
-var file_proto3_enum_proto_enumTypes = make([]prototype.Enum, 1)
+var file_proto3_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_proto3_enum_proto_goTypes = []interface{}{
 	(Enum)(0), // 0: goproto.protoc.proto3.Enum
 }
@@ -120,9 +119,9 @@
 		},
 		GoTypes:           file_proto3_enum_proto_goTypes,
 		DependencyIndexes: file_proto3_enum_proto_depIdxs,
+		EnumInfos:         file_proto3_enum_proto_enumTypes,
 	}.Build()
 	File_proto3_enum_proto = out.File
-	file_proto3_enum_proto_enumTypes = out.Enums
 	file_proto3_enum_proto_rawDesc = nil
 	file_proto3_enum_proto_goTypes = nil
 	file_proto3_enum_proto_depIdxs = nil
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
index 3553582..5f9d77e 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (FieldTestMessage_Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_proto3_fields_proto_enumTypes[0].EnumDescriptor
+	return file_proto3_fields_proto_enumTypes[0].Descriptor()
 }
 
 func (FieldTestMessage_Enum) Type() protoreflect.EnumType {
@@ -587,7 +586,7 @@
 	return file_proto3_fields_proto_rawDescData
 }
 
-var file_proto3_fields_proto_enumTypes = make([]prototype.Enum, 1)
+var file_proto3_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_proto3_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
 var file_proto3_fields_proto_goTypes = []interface{}{
 	(FieldTestMessage_Enum)(0),       // 0: goproto.protoc.proto3.FieldTestMessage.Enum
@@ -657,10 +656,10 @@
 		},
 		GoTypes:           file_proto3_fields_proto_goTypes,
 		DependencyIndexes: file_proto3_fields_proto_depIdxs,
+		EnumInfos:         file_proto3_fields_proto_enumTypes,
 		MessageInfos:      file_proto3_fields_proto_msgTypes,
 	}.Build()
 	File_proto3_fields_proto = out.File
-	file_proto3_fields_proto_enumTypes = out.Enums
 	file_proto3_fields_proto_rawDesc = nil
 	file_proto3_fields_proto_goTypes = nil
 	file_proto3_fields_proto_depIdxs = nil
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
index a0ad1e2..61630d6 100644
--- a/encoding/testprotos/pb2/test.pb.go
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	anypb "google.golang.org/protobuf/types/known/anypb"
@@ -58,7 +57,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb2_test_proto_enumTypes[0].EnumDescriptor
+	return file_pb2_test_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -117,7 +116,7 @@
 }
 
 func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb2_test_proto_enumTypes[1].EnumDescriptor
+	return file_pb2_test_proto_enumTypes[1].Descriptor()
 }
 
 func (Enums_NestedEnum) Type() protoreflect.EnumType {
@@ -2025,7 +2024,7 @@
 	return file_pb2_test_proto_rawDescData
 }
 
-var file_pb2_test_proto_enumTypes = make([]prototype.Enum, 2)
+var file_pb2_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_pb2_test_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
 var file_pb2_test_proto_goTypes = []interface{}{
 	(Enum)(0),                             // 0: pb2.Enum
@@ -2405,11 +2404,11 @@
 		},
 		GoTypes:           file_pb2_test_proto_goTypes,
 		DependencyIndexes: file_pb2_test_proto_depIdxs,
+		EnumInfos:         file_pb2_test_proto_enumTypes,
 		MessageInfos:      file_pb2_test_proto_msgTypes,
 		LegacyExtensions:  file_pb2_test_proto_extDescs,
 	}.Build()
 	File_pb2_test_proto = out.File
-	file_pb2_test_proto_enumTypes = out.Enums
 	file_pb2_test_proto_rawDesc = nil
 	file_pb2_test_proto_goTypes = nil
 	file_pb2_test_proto_depIdxs = nil
diff --git a/encoding/testprotos/pb3/test.pb.go b/encoding/testprotos/pb3/test.pb.go
index 44e9292..1515de9 100644
--- a/encoding/testprotos/pb3/test.pb.go
+++ b/encoding/testprotos/pb3/test.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -53,7 +52,7 @@
 }
 
 func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb3_test_proto_enumTypes[0].EnumDescriptor
+	return file_pb3_test_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum) Type() protoreflect.EnumType {
@@ -105,7 +104,7 @@
 }
 
 func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb3_test_proto_enumTypes[1].EnumDescriptor
+	return file_pb3_test_proto_enumTypes[1].Descriptor()
 }
 
 func (Enums_NestedEnum) Type() protoreflect.EnumType {
@@ -753,7 +752,7 @@
 	return file_pb3_test_proto_rawDescData
 }
 
-var file_pb3_test_proto_enumTypes = make([]prototype.Enum, 2)
+var file_pb3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_pb3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
 var file_pb3_test_proto_goTypes = []interface{}{
 	(Enum)(0),             // 0: pb3.Enum
@@ -901,10 +900,10 @@
 		},
 		GoTypes:           file_pb3_test_proto_goTypes,
 		DependencyIndexes: file_pb3_test_proto_depIdxs,
+		EnumInfos:         file_pb3_test_proto_enumTypes,
 		MessageInfos:      file_pb3_test_proto_msgTypes,
 	}.Build()
 	File_pb3_test_proto = out.File
-	file_pb3_test_proto_enumTypes = out.Enums
 	file_pb3_test_proto_rawDesc = nil
 	file_pb3_test_proto_goTypes = nil
 	file_pb3_test_proto_depIdxs = nil
diff --git a/internal/filetype/build.go b/internal/filetype/build.go
index 15c8f27..8d0e7bd 100644
--- a/internal/filetype/build.go
+++ b/internal/filetype/build.go
@@ -99,6 +99,9 @@
 	// Requirement: len(MessageInfos) == len(Build.Messages)
 	MessageInfos []pimpl.MessageInfo
 
+	// EnumInfos is a list of enum infos in "flattened ordering".
+	EnumInfos []EnumInfo
+
 	// LegacyExtensions is a list of legacy extensions in "flattened ordering".
 	// If provided, the pointer to the v1 ExtensionDesc will be stored into the
 	// associated v2 ExtensionType and accessible via a pseudo-internal API.
@@ -116,14 +119,6 @@
 
 func (tb Builder) Build() (out struct {
 	File pref.FileDescriptor
-
-	// Enums is all enum types in "flattened ordering".
-	Enums []Enum
-	// Messages is all message types in "flattened ordering".
-	// It includes a stub message type for map entries.
-	Messages []Message
-	// Extensions is all extension types in "flattened ordering".
-	Extensions []Extension
 }) {
 	// Replace the resolver with one that resolves dependencies by index,
 	// which is faster and more reliable than relying on the global registry.
@@ -146,16 +141,17 @@
 
 	// Process enums.
 	enumGoTypes := tb.GoTypes[:len(fbOut.Enums)]
+	if len(tb.EnumInfos) != len(fbOut.Enums) {
+		panic("mismatching enum lengths")
+	}
 	if len(fbOut.Enums) > 0 {
-		out.Enums = make([]Enum, len(fbOut.Enums))
 		for i := range fbOut.Enums {
-			out.Enums[i] = Enum{
-				EnumDescriptor: &fbOut.Enums[i],
-				NewEnum:        enumMaker(reflect.TypeOf(enumGoTypes[i])),
+			tb.EnumInfos[i] = EnumInfo{
+				desc:   &fbOut.Enums[i],
+				goType: reflect.TypeOf(enumGoTypes[i]),
 			}
-
 			// Register enum types.
-			if err := tb.TypeRegistry.Register(&out.Enums[i]); err != nil {
+			if err := tb.TypeRegistry.Register(&tb.EnumInfos[i]); err != nil {
 				panic(err)
 			}
 		}
@@ -167,23 +163,23 @@
 		panic("mismatching message lengths")
 	}
 	if len(fbOut.Messages) > 0 {
-		out.Messages = make([]Message, len(fbOut.Messages))
+		messages := make([]Message, len(fbOut.Messages))
 		for i := range fbOut.Messages {
 			if messageGoTypes[i] == nil {
 				continue // skip map entry
 			}
-			out.Messages[i] = Message{
+			messages[i] = Message{
 				MessageDescriptor: &fbOut.Messages[i],
 				NewMessage:        messageMaker(reflect.TypeOf(messageGoTypes[i])),
 			}
 
 			if tb.MessageInfos != nil {
 				tb.MessageInfos[i].GoType = reflect.TypeOf(messageGoTypes[i])
-				tb.MessageInfos[i].PBType = &out.Messages[i]
+				tb.MessageInfos[i].PBType = &messages[i]
 			}
 
 			// Register message types.
-			if err := tb.TypeRegistry.Register(&out.Messages[i]); err != nil {
+			if err := tb.TypeRegistry.Register(&messages[i]); err != nil {
 				panic(err)
 			}
 		}
@@ -222,7 +218,7 @@
 	}
 	if len(fbOut.Extensions) > 0 {
 		var depIdx int32
-		out.Extensions = make([]Extension, len(fbOut.Extensions))
+		extensions := make([]Extension, len(fbOut.Extensions))
 		for i := range fbOut.Extensions {
 			// For enum and message kinds, determine the referent Go type so
 			// that we can construct their constructors.
@@ -241,19 +237,23 @@
 				goType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind]
 			}
 
-			out.Extensions[i] = Extension{
+			extensions[i] = Extension{
+				desc:   &fbOut.Extensions[i],
+				goType: goType,
+			}
+			extensions[i].tdesc = extensionTypeDescriptor{
 				ExtensionDescriptor: &fbOut.Extensions[i],
-				goType:              goType,
+				typ:                 &extensions[i],
 			}
 
 			// Keep v1 and v2 extensions in sync.
 			if tb.LegacyExtensions != nil {
-				out.Extensions[i].legacyDesc = &tb.LegacyExtensions[i]
-				tb.LegacyExtensions[i].Type = &out.Extensions[i]
+				extensions[i].legacyDesc = &tb.LegacyExtensions[i]
+				tb.LegacyExtensions[i].Type = &extensions[i]
 			}
 
 			// Register extension types.
-			if err := tb.TypeRegistry.Register(&out.Extensions[i]); err != nil {
+			if err := tb.TypeRegistry.Register(&extensions[i]); err != nil {
 				panic(err)
 			}
 		}
@@ -316,14 +316,19 @@
 	}
 }
 
-func enumMaker(t reflect.Type) func(pref.EnumNumber) pref.Enum {
-	return func(n pref.EnumNumber) pref.Enum {
-		v := reflect.New(t).Elem()
-		v.SetInt(int64(n))
-		return v.Interface().(pref.Enum)
-	}
+type EnumInfo struct {
+	desc   pref.EnumDescriptor
+	goType reflect.Type
 }
 
+func (t *EnumInfo) New(n pref.EnumNumber) pref.Enum {
+	v := reflect.New(t.goType)
+	v.SetInt(int64(n))
+	return v.Interface().(pref.Enum)
+}
+func (t *EnumInfo) GoType() reflect.Type            { return t.goType }
+func (t *EnumInfo) Descriptor() pref.EnumDescriptor { return t.desc }
+
 func messageMaker(t reflect.Type) func() pref.Message {
 	return func() pref.Message {
 		return reflect.New(t.Elem()).Interface().(pref.ProtoMessage).ProtoReflect()
@@ -331,12 +336,12 @@
 }
 
 type (
-	Enum    = ptype.Enum
 	Message = ptype.Message
 )
 
 type Extension struct {
-	pref.ExtensionDescriptor
+	desc       pref.ExtensionDescriptor
+	tdesc      extensionTypeDescriptor
 	legacyDesc *piface.ExtensionDescV1
 
 	once   sync.Once
@@ -356,7 +361,7 @@
 	t.lazyInit()
 	return t.goType
 }
-func (t *Extension) Descriptor() pref.ExtensionTypeDescriptor { return (*extDesc)(t) }
+func (t *Extension) Descriptor() pref.ExtensionTypeDescriptor { return &t.tdesc }
 
 // ProtoLegacyExtensionDesc is a pseudo-internal API for allowing the v1 code
 // to be able to retrieve a v1 ExtensionDesc.
@@ -369,15 +374,18 @@
 
 func (t *Extension) lazyInit() pimpl.Converter {
 	t.once.Do(func() {
-		if t.ExtensionDescriptor.Cardinality() == pref.Repeated {
+		if t.desc.Cardinality() == pref.Repeated {
 			t.goType = reflect.PtrTo(reflect.SliceOf(t.goType))
 		}
-		t.conv = pimpl.NewConverter(t.goType, t.ExtensionDescriptor)
+		t.conv = pimpl.NewConverter(t.goType, t.desc)
 	})
 	return t.conv
 }
 
-type extDesc Extension
+type extensionTypeDescriptor struct {
+	pref.ExtensionDescriptor
+	typ pref.ExtensionType
+}
 
-func (t *extDesc) Type() pref.ExtensionType             { return (*Extension)(t) }
-func (t *extDesc) Descriptor() pref.ExtensionDescriptor { return t.ExtensionDescriptor }
+func (t *extensionTypeDescriptor) Type() pref.ExtensionType             { return t.typ }
+func (t *extensionTypeDescriptor) Descriptor() pref.ExtensionDescriptor { return t.ExtensionDescriptor }
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go
index 320fbd1..823525f 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go
@@ -5,7 +5,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -41,7 +40,7 @@
 }
 
 func (Enum720) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[0].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum720) Type() protoreflect.EnumType {
@@ -643,7 +642,7 @@
 }
 
 func (Enum3476) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[1].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[1].Descriptor()
 }
 
 func (Enum3476) Type() protoreflect.EnumType {
@@ -729,7 +728,7 @@
 }
 
 func (Enum3805) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[2].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[2].Descriptor()
 }
 
 func (Enum3805) Type() protoreflect.EnumType {
@@ -839,7 +838,7 @@
 }
 
 func (Enum3783) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[3].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[3].Descriptor()
 }
 
 func (Enum3783) Type() protoreflect.EnumType {
@@ -943,7 +942,7 @@
 }
 
 func (Enum3851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[4].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[4].Descriptor()
 }
 
 func (Enum3851) Type() protoreflect.EnumType {
@@ -999,7 +998,7 @@
 }
 
 func (UnusedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[5].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[5].Descriptor()
 }
 
 func (UnusedEnum) Type() protoreflect.EnumType {
@@ -1064,7 +1063,7 @@
 }
 
 func (Enum4146) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[6].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[6].Descriptor()
 }
 
 func (Enum4146) Type() protoreflect.EnumType {
@@ -1120,7 +1119,7 @@
 }
 
 func (Enum4160) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[7].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[7].Descriptor()
 }
 
 func (Enum4160) Type() protoreflect.EnumType {
@@ -1191,7 +1190,7 @@
 }
 
 func (Enum4152) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[8].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[8].Descriptor()
 }
 
 func (Enum4152) Type() protoreflect.EnumType {
@@ -1307,7 +1306,7 @@
 }
 
 func (Enum6025) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[9].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[9].Descriptor()
 }
 
 func (Enum6025) Type() protoreflect.EnumType {
@@ -1402,7 +1401,7 @@
 }
 
 func (Enum6065) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[10].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[10].Descriptor()
 }
 
 func (Enum6065) Type() protoreflect.EnumType {
@@ -1476,7 +1475,7 @@
 }
 
 func (Enum6579) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[11].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[11].Descriptor()
 }
 
 func (Enum6579) Type() protoreflect.EnumType {
@@ -1628,7 +1627,7 @@
 }
 
 func (Enum6588) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[12].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[12].Descriptor()
 }
 
 func (Enum6588) Type() protoreflect.EnumType {
@@ -1687,7 +1686,7 @@
 }
 
 func (Enum6769) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[13].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[13].Descriptor()
 }
 
 func (Enum6769) Type() protoreflect.EnumType {
@@ -1758,7 +1757,7 @@
 }
 
 func (Enum6774) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[14].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[14].Descriptor()
 }
 
 func (Enum6774) Type() protoreflect.EnumType {
@@ -1826,7 +1825,7 @@
 }
 
 func (Enum6782) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[15].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[15].Descriptor()
 }
 
 func (Enum6782) Type() protoreflect.EnumType {
@@ -1888,7 +1887,7 @@
 }
 
 func (Enum6858) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[16].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[16].Descriptor()
 }
 
 func (Enum6858) Type() protoreflect.EnumType {
@@ -1956,7 +1955,7 @@
 }
 
 func (Enum6815) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[17].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[17].Descriptor()
 }
 
 func (Enum6815) Type() protoreflect.EnumType {
@@ -2018,7 +2017,7 @@
 }
 
 func (Enum6822) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[18].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[18].Descriptor()
 }
 
 func (Enum6822) Type() protoreflect.EnumType {
@@ -2077,7 +2076,7 @@
 }
 
 func (Enum7654) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[19].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[19].Descriptor()
 }
 
 func (Enum7654) Type() protoreflect.EnumType {
@@ -2136,7 +2135,7 @@
 }
 
 func (Enum8292) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[20].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[20].Descriptor()
 }
 
 func (Enum8292) Type() protoreflect.EnumType {
@@ -2195,7 +2194,7 @@
 }
 
 func (Enum8450) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[21].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[21].Descriptor()
 }
 
 func (Enum8450) Type() protoreflect.EnumType {
@@ -2260,7 +2259,7 @@
 }
 
 func (Enum8900) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[22].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[22].Descriptor()
 }
 
 func (Enum8900) Type() protoreflect.EnumType {
@@ -2325,7 +2324,7 @@
 }
 
 func (Enum8945) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[23].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[23].Descriptor()
 }
 
 func (Enum8945) Type() protoreflect.EnumType {
@@ -2399,7 +2398,7 @@
 }
 
 func (Enum8951) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[24].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[24].Descriptor()
 }
 
 func (Enum8951) Type() protoreflect.EnumType {
@@ -2698,7 +2697,7 @@
 }
 
 func (Enum9243) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[25].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[25].Descriptor()
 }
 
 func (Enum9243) Type() protoreflect.EnumType {
@@ -2775,7 +2774,7 @@
 }
 
 func (Enum10157) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[26].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[26].Descriptor()
 }
 
 func (Enum10157) Type() protoreflect.EnumType {
@@ -2852,7 +2851,7 @@
 }
 
 func (Enum10167) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[27].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[27].Descriptor()
 }
 
 func (Enum10167) Type() protoreflect.EnumType {
@@ -2950,7 +2949,7 @@
 }
 
 func (Enum8862) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[28].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[28].Descriptor()
 }
 
 func (Enum8862) Type() protoreflect.EnumType {
@@ -3027,7 +3026,7 @@
 }
 
 func (Enum10325) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[29].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[29].Descriptor()
 }
 
 func (Enum10325) Type() protoreflect.EnumType {
@@ -3080,7 +3079,7 @@
 }
 
 func (Enum10335) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[30].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[30].Descriptor()
 }
 
 func (Enum10335) Type() protoreflect.EnumType {
@@ -3136,7 +3135,7 @@
 }
 
 func (Enum10337) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[31].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[31].Descriptor()
 }
 
 func (Enum10337) Type() protoreflect.EnumType {
@@ -3240,7 +3239,7 @@
 }
 
 func (Enum10392) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[32].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[32].Descriptor()
 }
 
 func (Enum10392) Type() protoreflect.EnumType {
@@ -4370,7 +4369,7 @@
 }
 
 func (Enum11107) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[33].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[33].Descriptor()
 }
 
 func (Enum11107) Type() protoreflect.EnumType {
@@ -4993,7 +4992,7 @@
 }
 
 func (Enum11541) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[34].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[34].Descriptor()
 }
 
 func (Enum11541) Type() protoreflect.EnumType {
@@ -5115,7 +5114,7 @@
 }
 
 func (Enum11468) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[35].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[35].Descriptor()
 }
 
 func (Enum11468) Type() protoreflect.EnumType {
@@ -5417,7 +5416,7 @@
 }
 
 func (Enum11022) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[36].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[36].Descriptor()
 }
 
 func (Enum11022) Type() protoreflect.EnumType {
@@ -5476,7 +5475,7 @@
 }
 
 func (Enum12670) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[37].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[37].Descriptor()
 }
 
 func (Enum12670) Type() protoreflect.EnumType {
@@ -5544,7 +5543,7 @@
 }
 
 func (Enum12871) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[38].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[38].Descriptor()
 }
 
 func (Enum12871) Type() protoreflect.EnumType {
@@ -5603,7 +5602,7 @@
 }
 
 func (Enum13092) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[39].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[39].Descriptor()
 }
 
 func (Enum13092) Type() protoreflect.EnumType {
@@ -5665,7 +5664,7 @@
 }
 
 func (Enum13146) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[40].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[40].Descriptor()
 }
 
 func (Enum13146) Type() protoreflect.EnumType {
@@ -6801,7 +6800,7 @@
 }
 
 func (Enum16042) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[41].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[41].Descriptor()
 }
 
 func (Enum16042) Type() protoreflect.EnumType {
@@ -6881,7 +6880,7 @@
 }
 
 func (Enum16553) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[42].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[42].Descriptor()
 }
 
 func (Enum16553) Type() protoreflect.EnumType {
@@ -6940,7 +6939,7 @@
 }
 
 func (Enum16728) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[43].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[43].Descriptor()
 }
 
 func (Enum16728) Type() protoreflect.EnumType {
@@ -7005,7 +7004,7 @@
 }
 
 func (Enum16732) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[44].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[44].Descriptor()
 }
 
 func (Enum16732) Type() protoreflect.EnumType {
@@ -7076,7 +7075,7 @@
 }
 
 func (Enum16738) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[45].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[45].Descriptor()
 }
 
 func (Enum16738) Type() protoreflect.EnumType {
@@ -7195,7 +7194,7 @@
 }
 
 func (Enum16698) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[46].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[46].Descriptor()
 }
 
 func (Enum16698) Type() protoreflect.EnumType {
@@ -7263,7 +7262,7 @@
 }
 
 func (Enum16819) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[47].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[47].Descriptor()
 }
 
 func (Enum16819) Type() protoreflect.EnumType {
@@ -7355,7 +7354,7 @@
 }
 
 func (Enum16925) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[48].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[48].Descriptor()
 }
 
 func (Enum16925) Type() protoreflect.EnumType {
@@ -7411,7 +7410,7 @@
 }
 
 func (Enum22854) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[49].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[49].Descriptor()
 }
 
 func (Enum22854) Type() protoreflect.EnumType {
@@ -7473,7 +7472,7 @@
 }
 
 func (Enum24361) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[50].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[50].Descriptor()
 }
 
 func (Enum24361) Type() protoreflect.EnumType {
@@ -7619,7 +7618,7 @@
 }
 
 func (Enum16891) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[51].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[51].Descriptor()
 }
 
 func (Enum16891) Type() protoreflect.EnumType {
@@ -7684,7 +7683,7 @@
 }
 
 func (Enum27361) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[52].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[52].Descriptor()
 }
 
 func (Enum27361) Type() protoreflect.EnumType {
@@ -7755,7 +7754,7 @@
 }
 
 func (Enum33960) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[53].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[53].Descriptor()
 }
 
 func (Enum33960) Type() protoreflect.EnumType {
@@ -7808,7 +7807,7 @@
 }
 
 func (Enum34388) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[54].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[54].Descriptor()
 }
 
 func (Enum34388) Type() protoreflect.EnumType {
@@ -7873,7 +7872,7 @@
 }
 
 func (Enum35477) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[55].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[55].Descriptor()
 }
 
 func (Enum35477) Type() protoreflect.EnumType {
@@ -7953,7 +7952,7 @@
 }
 
 func (Enum35507) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[56].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[56].Descriptor()
 }
 
 func (Enum35507) Type() protoreflect.EnumType {
@@ -8027,7 +8026,7 @@
 }
 
 func (Enum36860) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[57].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[57].Descriptor()
 }
 
 func (Enum36860) Type() protoreflect.EnumType {
@@ -8083,7 +8082,7 @@
 }
 
 func (Enum36890) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[58].EnumDescriptor
+	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[58].Descriptor()
 }
 
 func (Enum36890) Type() protoreflect.EnumType {
@@ -10472,7 +10471,7 @@
 	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescData
 }
 
-var file_datasets_google_message3_benchmark_message3_8_proto_enumTypes = make([]prototype.Enum, 59)
+var file_datasets_google_message3_benchmark_message3_8_proto_enumTypes = make([]protoimpl.EnumInfo, 59)
 var file_datasets_google_message3_benchmark_message3_8_proto_goTypes = []interface{}{
 	(Enum720)(0),    // 0: benchmarks.google_message3.Enum720
 	(Enum3476)(0),   // 1: benchmarks.google_message3.Enum3476
@@ -10559,9 +10558,9 @@
 		},
 		GoTypes:           file_datasets_google_message3_benchmark_message3_8_proto_goTypes,
 		DependencyIndexes: file_datasets_google_message3_benchmark_message3_8_proto_depIdxs,
+		EnumInfos:         file_datasets_google_message3_benchmark_message3_8_proto_enumTypes,
 	}.Build()
 	File_datasets_google_message3_benchmark_message3_8_proto = out.File
-	file_datasets_google_message3_benchmark_message3_8_proto_enumTypes = out.Enums
 	file_datasets_google_message3_benchmark_message3_8_proto_rawDesc = nil
 	file_datasets_google_message3_benchmark_message3_8_proto_goTypes = nil
 	file_datasets_google_message3_benchmark_message3_8_proto_depIdxs = nil
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go
index 2d2e75f..692f206 100644
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go
@@ -5,7 +5,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -41,7 +40,7 @@
 }
 
 func (UnusedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[0].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[0].Descriptor()
 }
 
 func (UnusedEnum) Type() protoreflect.EnumType {
@@ -115,7 +114,7 @@
 }
 
 func (Enum2593) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[1].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[1].Descriptor()
 }
 
 func (Enum2593) Type() protoreflect.EnumType {
@@ -174,7 +173,7 @@
 }
 
 func (Enum2834) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[2].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[2].Descriptor()
 }
 
 func (Enum2834) Type() protoreflect.EnumType {
@@ -269,7 +268,7 @@
 }
 
 func (Enum2806) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[3].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[3].Descriptor()
 }
 
 func (Enum2806) Type() protoreflect.EnumType {
@@ -682,7 +681,7 @@
 }
 
 func (Enum2851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[4].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[4].Descriptor()
 }
 
 func (Enum2851) Type() protoreflect.EnumType {
@@ -768,7 +767,7 @@
 }
 
 func (Enum2602) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[5].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[5].Descriptor()
 }
 
 func (Enum2602) Type() protoreflect.EnumType {
@@ -902,7 +901,7 @@
 }
 
 func (Enum3071) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[6].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[6].Descriptor()
 }
 
 func (Enum3071) Type() protoreflect.EnumType {
@@ -988,7 +987,7 @@
 }
 
 func (Enum3805) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[7].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[7].Descriptor()
 }
 
 func (Enum3805) Type() protoreflect.EnumType {
@@ -1098,7 +1097,7 @@
 }
 
 func (Enum3783) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[8].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[8].Descriptor()
 }
 
 func (Enum3783) Type() protoreflect.EnumType {
@@ -1202,7 +1201,7 @@
 }
 
 func (Enum3851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[9].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[9].Descriptor()
 }
 
 func (Enum3851) Type() protoreflect.EnumType {
@@ -1261,7 +1260,7 @@
 }
 
 func (Enum5862) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[10].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[10].Descriptor()
 }
 
 func (Enum5862) Type() protoreflect.EnumType {
@@ -1323,7 +1322,7 @@
 }
 
 func (Enum5868) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[11].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[11].Descriptor()
 }
 
 func (Enum5868) Type() protoreflect.EnumType {
@@ -1382,7 +1381,7 @@
 }
 
 func (Enum5873) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[12].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[12].Descriptor()
 }
 
 func (Enum5873) Type() protoreflect.EnumType {
@@ -1438,7 +1437,7 @@
 }
 
 func (Enum5904) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[13].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[13].Descriptor()
 }
 
 func (Enum5904) Type() protoreflect.EnumType {
@@ -1494,7 +1493,7 @@
 }
 
 func (Enum5909) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[14].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[14].Descriptor()
 }
 
 func (Enum5909) Type() protoreflect.EnumType {
@@ -1550,7 +1549,7 @@
 }
 
 func (Enum5912) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[15].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[15].Descriptor()
 }
 
 func (Enum5912) Type() protoreflect.EnumType {
@@ -1612,7 +1611,7 @@
 }
 
 func (Enum5915) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[16].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[16].Descriptor()
 }
 
 func (Enum5915) Type() protoreflect.EnumType {
@@ -1668,7 +1667,7 @@
 }
 
 func (Enum5920) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[17].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[17].Descriptor()
 }
 
 func (Enum5920) Type() protoreflect.EnumType {
@@ -1730,7 +1729,7 @@
 }
 
 func (Enum5923) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[18].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[18].Descriptor()
 }
 
 func (Enum5923) Type() protoreflect.EnumType {
@@ -1786,7 +1785,7 @@
 }
 
 func (Enum5928) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[19].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[19].Descriptor()
 }
 
 func (Enum5928) Type() protoreflect.EnumType {
@@ -1845,7 +1844,7 @@
 }
 
 func (Enum5931) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[20].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[20].Descriptor()
 }
 
 func (Enum5931) Type() protoreflect.EnumType {
@@ -1904,7 +1903,7 @@
 }
 
 func (Enum5935) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[21].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[21].Descriptor()
 }
 
 func (Enum5935) Type() protoreflect.EnumType {
@@ -1972,7 +1971,7 @@
 }
 
 func (Enum5939) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[22].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[22].Descriptor()
 }
 
 func (Enum5939) Type() protoreflect.EnumType {
@@ -2052,7 +2051,7 @@
 }
 
 func (Enum5946) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[23].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[23].Descriptor()
 }
 
 func (Enum5946) Type() protoreflect.EnumType {
@@ -2114,7 +2113,7 @@
 }
 
 func (Enum5957) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[24].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[24].Descriptor()
 }
 
 func (Enum5957) Type() protoreflect.EnumType {
@@ -2170,7 +2169,7 @@
 }
 
 func (Enum5962) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[25].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[25].Descriptor()
 }
 
 func (Enum5962) Type() protoreflect.EnumType {
@@ -2286,7 +2285,7 @@
 }
 
 func (Enum6025) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[26].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[26].Descriptor()
 }
 
 func (Enum6025) Type() protoreflect.EnumType {
@@ -2378,7 +2377,7 @@
 }
 
 func (Enum6111) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[27].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[27].Descriptor()
 }
 
 func (Enum6111) Type() protoreflect.EnumType {
@@ -2473,7 +2472,7 @@
 }
 
 func (Enum6065) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[28].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[28].Descriptor()
 }
 
 func (Enum6065) Type() protoreflect.EnumType {
@@ -2529,7 +2528,7 @@
 }
 
 func (Enum6130) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[29].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[29].Descriptor()
 }
 
 func (Enum6130) Type() protoreflect.EnumType {
@@ -2603,7 +2602,7 @@
 }
 
 func (Enum6579) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[30].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[30].Descriptor()
 }
 
 func (Enum6579) Type() protoreflect.EnumType {
@@ -2755,7 +2754,7 @@
 }
 
 func (Enum6588) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[31].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[31].Descriptor()
 }
 
 func (Enum6588) Type() protoreflect.EnumType {
@@ -2817,7 +2816,7 @@
 }
 
 func (Enum7288) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[32].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[32].Descriptor()
 }
 
 func (Enum7288) Type() protoreflect.EnumType {
@@ -2891,7 +2890,7 @@
 }
 
 func (Enum7512) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[33].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[33].Descriptor()
 }
 
 func (Enum7512) Type() protoreflect.EnumType {
@@ -2956,7 +2955,7 @@
 }
 
 func (Enum7922) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[34].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[34].Descriptor()
 }
 
 func (Enum7922) Type() protoreflect.EnumType {
@@ -3558,7 +3557,7 @@
 }
 
 func (Enum3476) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[35].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[35].Descriptor()
 }
 
 func (Enum3476) Type() protoreflect.EnumType {
@@ -3635,7 +3634,7 @@
 }
 
 func (Enum10325) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[36].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[36].Descriptor()
 }
 
 func (Enum10325) Type() protoreflect.EnumType {
@@ -3688,7 +3687,7 @@
 }
 
 func (Enum10335) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[37].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[37].Descriptor()
 }
 
 func (Enum10335) Type() protoreflect.EnumType {
@@ -3744,7 +3743,7 @@
 }
 
 func (Enum10337) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[38].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[38].Descriptor()
 }
 
 func (Enum10337) Type() protoreflect.EnumType {
@@ -3806,7 +3805,7 @@
 }
 
 func (Enum11901) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[39].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[39].Descriptor()
 }
 
 func (Enum11901) Type() protoreflect.EnumType {
@@ -3868,7 +3867,7 @@
 }
 
 func (Enum12735) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[40].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[40].Descriptor()
 }
 
 func (Enum12735) Type() protoreflect.EnumType {
@@ -3936,7 +3935,7 @@
 }
 
 func (Enum12871) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[41].EnumDescriptor
+	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[41].Descriptor()
 }
 
 func (Enum12871) Type() protoreflect.EnumType {
@@ -4802,7 +4801,7 @@
 	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescData
 }
 
-var file_datasets_google_message4_benchmark_message4_3_proto_enumTypes = make([]prototype.Enum, 42)
+var file_datasets_google_message4_benchmark_message4_3_proto_enumTypes = make([]protoimpl.EnumInfo, 42)
 var file_datasets_google_message4_benchmark_message4_3_proto_goTypes = []interface{}{
 	(UnusedEnum)(0), // 0: benchmarks.google_message4.UnusedEnum
 	(Enum2593)(0),   // 1: benchmarks.google_message4.Enum2593
@@ -4872,9 +4871,9 @@
 		},
 		GoTypes:           file_datasets_google_message4_benchmark_message4_3_proto_goTypes,
 		DependencyIndexes: file_datasets_google_message4_benchmark_message4_3_proto_depIdxs,
+		EnumInfos:         file_datasets_google_message4_benchmark_message4_3_proto_enumTypes,
 	}.Build()
 	File_datasets_google_message4_benchmark_message4_3_proto = out.File
-	file_datasets_google_message4_benchmark_message4_3_proto_enumTypes = out.Enums
 	file_datasets_google_message4_benchmark_message4_3_proto_rawDesc = nil
 	file_datasets_google_message4_benchmark_message4_3_proto_goTypes = nil
 	file_datasets_google_message4_benchmark_message4_3_proto_depIdxs = nil
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
index b1e4da8..ba2f837 100644
--- a/internal/testprotos/conformance/conformance.pb.go
+++ b/internal/testprotos/conformance/conformance.pb.go
@@ -35,7 +35,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -80,7 +79,7 @@
 }
 
 func (WireFormat) Descriptor() protoreflect.EnumDescriptor {
-	return file_conformance_conformance_proto_enumTypes[0].EnumDescriptor
+	return file_conformance_conformance_proto_enumTypes[0].Descriptor()
 }
 
 func (WireFormat) Type() protoreflect.EnumType {
@@ -146,7 +145,7 @@
 }
 
 func (TestCategory) Descriptor() protoreflect.EnumDescriptor {
-	return file_conformance_conformance_proto_enumTypes[1].EnumDescriptor
+	return file_conformance_conformance_proto_enumTypes[1].Descriptor()
 }
 
 func (TestCategory) Type() protoreflect.EnumType {
@@ -688,7 +687,7 @@
 	return file_conformance_conformance_proto_rawDescData
 }
 
-var file_conformance_conformance_proto_enumTypes = make([]prototype.Enum, 2)
+var file_conformance_conformance_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_conformance_conformance_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_conformance_conformance_proto_goTypes = []interface{}{
 	(WireFormat)(0),             // 0: conformance.WireFormat
@@ -792,10 +791,10 @@
 		},
 		GoTypes:           file_conformance_conformance_proto_goTypes,
 		DependencyIndexes: file_conformance_conformance_proto_depIdxs,
+		EnumInfos:         file_conformance_conformance_proto_enumTypes,
 		MessageInfos:      file_conformance_conformance_proto_msgTypes,
 	}.Build()
 	File_conformance_conformance_proto = out.File
-	file_conformance_conformance_proto_enumTypes = out.Enums
 	file_conformance_conformance_proto_rawDesc = nil
 	file_conformance_conformance_proto_goTypes = nil
 	file_conformance_conformance_proto_depIdxs = nil
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index f8a233a..cfb75d2 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -40,7 +40,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -80,7 +79,7 @@
 }
 
 func (ForeignEnumProto2) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto2_proto_enumTypes[0].EnumDescriptor
+	return file_google_protobuf_test_messages_proto2_proto_enumTypes[0].Descriptor()
 }
 
 func (ForeignEnumProto2) Type() protoreflect.EnumType {
@@ -142,7 +141,7 @@
 }
 
 func (TestAllTypesProto2_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto2_proto_enumTypes[1].EnumDescriptor
+	return file_google_protobuf_test_messages_proto2_proto_enumTypes[1].Descriptor()
 }
 
 func (TestAllTypesProto2_NestedEnum) Type() protoreflect.EnumType {
@@ -1881,7 +1880,7 @@
 	return file_google_protobuf_test_messages_proto2_proto_rawDescData
 }
 
-var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]prototype.Enum, 2)
+var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
 var file_google_protobuf_test_messages_proto2_proto_goTypes = []interface{}{
 	(ForeignEnumProto2)(0),                   // 0: protobuf_test_messages.proto2.ForeignEnumProto2
@@ -2080,11 +2079,11 @@
 		},
 		GoTypes:           file_google_protobuf_test_messages_proto2_proto_goTypes,
 		DependencyIndexes: file_google_protobuf_test_messages_proto2_proto_depIdxs,
+		EnumInfos:         file_google_protobuf_test_messages_proto2_proto_enumTypes,
 		MessageInfos:      file_google_protobuf_test_messages_proto2_proto_msgTypes,
 		LegacyExtensions:  file_google_protobuf_test_messages_proto2_proto_extDescs,
 	}.Build()
 	File_google_protobuf_test_messages_proto2_proto = out.File
-	file_google_protobuf_test_messages_proto2_proto_enumTypes = out.Enums
 	file_google_protobuf_test_messages_proto2_proto_rawDesc = nil
 	file_google_protobuf_test_messages_proto2_proto_goTypes = nil
 	file_google_protobuf_test_messages_proto2_proto_depIdxs = nil
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
index c583158..89c33c0 100644
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto3.pb.go
@@ -42,7 +42,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	anypb "google.golang.org/protobuf/types/known/anypb"
 	durationpb "google.golang.org/protobuf/types/known/durationpb"
@@ -87,7 +86,7 @@
 }
 
 func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[0].EnumDescriptor
+	return file_google_protobuf_test_messages_proto3_proto_enumTypes[0].Descriptor()
 }
 
 func (ForeignEnum) Type() protoreflect.EnumType {
@@ -139,7 +138,7 @@
 }
 
 func (TestAllTypesProto3_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[1].EnumDescriptor
+	return file_google_protobuf_test_messages_proto3_proto_enumTypes[1].Descriptor()
 }
 
 func (TestAllTypesProto3_NestedEnum) Type() protoreflect.EnumType {
@@ -197,7 +196,7 @@
 }
 
 func (TestAllTypesProto3_AliasedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[2].EnumDescriptor
+	return file_google_protobuf_test_messages_proto3_proto_enumTypes[2].Descriptor()
 }
 
 func (TestAllTypesProto3_AliasedEnum) Type() protoreflect.EnumType {
@@ -2071,7 +2070,7 @@
 	return file_google_protobuf_test_messages_proto3_proto_rawDescData
 }
 
-var file_google_protobuf_test_messages_proto3_proto_enumTypes = make([]prototype.Enum, 3)
+var file_google_protobuf_test_messages_proto3_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
 var file_google_protobuf_test_messages_proto3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
 var file_google_protobuf_test_messages_proto3_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                         // 0: protobuf_test_messages.proto3.ForeignEnum
@@ -2257,10 +2256,10 @@
 		},
 		GoTypes:           file_google_protobuf_test_messages_proto3_proto_goTypes,
 		DependencyIndexes: file_google_protobuf_test_messages_proto3_proto_depIdxs,
+		EnumInfos:         file_google_protobuf_test_messages_proto3_proto_enumTypes,
 		MessageInfos:      file_google_protobuf_test_messages_proto3_proto_msgTypes,
 	}.Build()
 	File_google_protobuf_test_messages_proto3_proto = out.File
-	file_google_protobuf_test_messages_proto3_proto_enumTypes = out.Enums
 	file_google_protobuf_test_messages_proto3_proto_rawDesc = nil
 	file_google_protobuf_test_messages_proto3_proto_goTypes = nil
 	file_google_protobuf_test_messages_proto3_proto_depIdxs = nil
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 5e04009..c506cff 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -49,7 +48,7 @@
 }
 
 func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_test_proto_enumTypes[0].EnumDescriptor
+	return file_test_test_proto_enumTypes[0].Descriptor()
 }
 
 func (ForeignEnum) Type() protoreflect.EnumType {
@@ -102,7 +101,7 @@
 }
 
 func (TestReservedEnumFields) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_test_proto_enumTypes[1].EnumDescriptor
+	return file_test_test_proto_enumTypes[1].Descriptor()
 }
 
 func (TestReservedEnumFields) Type() protoreflect.EnumType {
@@ -164,7 +163,7 @@
 }
 
 func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_test_proto_enumTypes[2].EnumDescriptor
+	return file_test_test_proto_enumTypes[2].Descriptor()
 }
 
 func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
@@ -219,7 +218,7 @@
 }
 
 func (TestDeprecatedMessage_DeprecatedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_test_proto_enumTypes[3].EnumDescriptor
+	return file_test_test_proto_enumTypes[3].Descriptor()
 }
 
 func (TestDeprecatedMessage_DeprecatedEnum) Type() protoreflect.EnumType {
@@ -4360,7 +4359,7 @@
 	return file_test_test_proto_rawDescData
 }
 
-var file_test_test_proto_enumTypes = make([]prototype.Enum, 4)
+var file_test_test_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
 var file_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
 var file_test_test_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                          // 0: goproto.proto.test.ForeignEnum
@@ -4884,11 +4883,11 @@
 		},
 		GoTypes:           file_test_test_proto_goTypes,
 		DependencyIndexes: file_test_test_proto_depIdxs,
+		EnumInfos:         file_test_test_proto_enumTypes,
 		MessageInfos:      file_test_test_proto_msgTypes,
 		LegacyExtensions:  file_test_test_proto_extDescs,
 	}.Build()
 	File_test_test_proto = out.File
-	file_test_test_proto_enumTypes = out.Enums
 	file_test_test_proto_rawDesc = nil
 	file_test_test_proto_goTypes = nil
 	file_test_test_proto_depIdxs = nil
diff --git a/internal/testprotos/test/test_import.pb.go b/internal/testprotos/test/test_import.pb.go
index d1cdcb5..56b1791 100644
--- a/internal/testprotos/test/test_import.pb.go
+++ b/internal/testprotos/test/test_import.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_test_import_proto_enumTypes[0].EnumDescriptor
+	return file_test_test_import_proto_enumTypes[0].Descriptor()
 }
 
 func (ImportEnum) Type() protoreflect.EnumType {
@@ -128,7 +127,7 @@
 	return file_test_test_import_proto_rawDescData
 }
 
-var file_test_test_import_proto_enumTypes = make([]prototype.Enum, 1)
+var file_test_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_test_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test_test_import_proto_goTypes = []interface{}{
 	(ImportEnum)(0),       // 0: goproto.proto.test.ImportEnum
@@ -173,10 +172,10 @@
 		},
 		GoTypes:           file_test_test_import_proto_goTypes,
 		DependencyIndexes: file_test_test_import_proto_depIdxs,
+		EnumInfos:         file_test_test_import_proto_enumTypes,
 		MessageInfos:      file_test_test_import_proto_msgTypes,
 	}.Build()
 	File_test_test_import_proto = out.File
-	file_test_test_import_proto_enumTypes = out.Enums
 	file_test_test_import_proto_rawDesc = nil
 	file_test_test_import_proto_goTypes = nil
 	file_test_test_import_proto_depIdxs = nil
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
index b52ebf0..c6a2877 100644
--- a/internal/testprotos/test3/test.pb.go
+++ b/internal/testprotos/test3/test.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -51,7 +50,7 @@
 }
 
 func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test3_test_proto_enumTypes[0].EnumDescriptor
+	return file_test3_test_proto_enumTypes[0].Descriptor()
 }
 
 func (ForeignEnum) Type() protoreflect.EnumType {
@@ -103,7 +102,7 @@
 }
 
 func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test3_test_proto_enumTypes[1].EnumDescriptor
+	return file_test3_test_proto_enumTypes[1].Descriptor()
 }
 
 func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
@@ -1270,7 +1269,7 @@
 	return file_test3_test_proto_rawDescData
 }
 
-var file_test3_test_proto_enumTypes = make([]prototype.Enum, 2)
+var file_test3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_test3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
 var file_test3_test_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                   // 0: goproto.proto.test3.ForeignEnum
@@ -1407,10 +1406,10 @@
 		},
 		GoTypes:           file_test3_test_proto_goTypes,
 		DependencyIndexes: file_test3_test_proto_depIdxs,
+		EnumInfos:         file_test3_test_proto_enumTypes,
 		MessageInfos:      file_test3_test_proto_msgTypes,
 	}.Build()
 	File_test3_test_proto = out.File
-	file_test3_test_proto_enumTypes = out.Enums
 	file_test3_test_proto_rawDesc = nil
 	file_test3_test_proto_goTypes = nil
 	file_test3_test_proto_depIdxs = nil
diff --git a/internal/testprotos/test3/test_import.pb.go b/internal/testprotos/test3/test_import.pb.go
index 3c24da6..b928f16 100644
--- a/internal/testprotos/test3/test_import.pb.go
+++ b/internal/testprotos/test3/test_import.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -42,7 +41,7 @@
 }
 
 func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_test3_test_import_proto_enumTypes[0].EnumDescriptor
+	return file_test3_test_import_proto_enumTypes[0].Descriptor()
 }
 
 func (ImportEnum) Type() protoreflect.EnumType {
@@ -118,7 +117,7 @@
 	return file_test3_test_import_proto_rawDescData
 }
 
-var file_test3_test_import_proto_enumTypes = make([]prototype.Enum, 1)
+var file_test3_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_test3_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test3_test_import_proto_goTypes = []interface{}{
 	(ImportEnum)(0),       // 0: goproto.proto.test3.ImportEnum
@@ -163,10 +162,10 @@
 		},
 		GoTypes:           file_test3_test_import_proto_goTypes,
 		DependencyIndexes: file_test3_test_import_proto_depIdxs,
+		EnumInfos:         file_test3_test_import_proto_enumTypes,
 		MessageInfos:      file_test3_test_import_proto_msgTypes,
 	}.Build()
 	File_test3_test_import_proto = out.File
-	file_test3_test_import_proto_enumTypes = out.Enums
 	file_test3_test_import_proto_rawDesc = nil
 	file_test3_test_import_proto_goTypes = nil
 	file_test3_test_import_proto_depIdxs = nil
diff --git a/reflect/protoregistry/testprotos/test.pb.go b/reflect/protoregistry/testprotos/test.pb.go
index 8fa3cda..1f04065 100644
--- a/reflect/protoregistry/testprotos/test.pb.go
+++ b/reflect/protoregistry/testprotos/test.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -45,7 +44,7 @@
 }
 
 func (Enum1) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_proto_enumTypes[0].EnumDescriptor
+	return file_test_proto_enumTypes[0].Descriptor()
 }
 
 func (Enum1) Type() protoreflect.EnumType {
@@ -98,7 +97,7 @@
 }
 
 func (Enum2) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_proto_enumTypes[1].EnumDescriptor
+	return file_test_proto_enumTypes[1].Descriptor()
 }
 
 func (Enum2) Type() protoreflect.EnumType {
@@ -151,7 +150,7 @@
 }
 
 func (Enum3) Descriptor() protoreflect.EnumDescriptor {
-	return file_test_proto_enumTypes[2].EnumDescriptor
+	return file_test_proto_enumTypes[2].Descriptor()
 }
 
 func (Enum3) Type() protoreflect.EnumType {
@@ -453,7 +452,7 @@
 	return file_test_proto_rawDescData
 }
 
-var file_test_proto_enumTypes = make([]prototype.Enum, 3)
+var file_test_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
 var file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_test_proto_goTypes = []interface{}{
 	(Enum1)(0),       // 0: testprotos.Enum1
@@ -551,11 +550,11 @@
 		},
 		GoTypes:           file_test_proto_goTypes,
 		DependencyIndexes: file_test_proto_depIdxs,
+		EnumInfos:         file_test_proto_enumTypes,
 		MessageInfos:      file_test_proto_msgTypes,
 		LegacyExtensions:  file_test_proto_extDescs,
 	}.Build()
 	File_test_proto = out.File
-	file_test_proto_enumTypes = out.Enums
 	file_test_proto_rawDesc = nil
 	file_test_proto_goTypes = nil
 	file_test_proto_depIdxs = nil
diff --git a/runtime/protoimpl/impl.go b/runtime/protoimpl/impl.go
index b419ff6..10ce301 100644
--- a/runtime/protoimpl/impl.go
+++ b/runtime/protoimpl/impl.go
@@ -23,6 +23,7 @@
 type (
 	DescBuilder      = filedesc.Builder
 	TypeBuilder      = filetype.Builder
+	EnumInfo         = filetype.EnumInfo
 	Pointer          = impl.Pointer
 	MessageInfo      = impl.MessageInfo
 	MessageState     = impl.MessageState
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index d45ab2e..380b4cc 100644
--- a/types/descriptorpb/descriptor.pb.go
+++ b/types/descriptorpb/descriptor.pb.go
@@ -43,7 +43,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -139,7 +138,7 @@
 }
 
 func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[0].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor()
 }
 
 func (FieldDescriptorProto_Type) Type() protoreflect.EnumType {
@@ -199,7 +198,7 @@
 }
 
 func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[1].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()
 }
 
 func (FieldDescriptorProto_Label) Type() protoreflect.EnumType {
@@ -260,7 +259,7 @@
 }
 
 func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[2].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()
 }
 
 func (FileOptions_OptimizeMode) Type() protoreflect.EnumType {
@@ -320,7 +319,7 @@
 }
 
 func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[3].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()
 }
 
 func (FieldOptions_CType) Type() protoreflect.EnumType {
@@ -382,7 +381,7 @@
 }
 
 func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[4].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()
 }
 
 func (FieldOptions_JSType) Type() protoreflect.EnumType {
@@ -444,7 +443,7 @@
 }
 
 func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[5].EnumDescriptor
+	return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()
 }
 
 func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {
@@ -3414,7 +3413,7 @@
 	return file_google_protobuf_descriptor_proto_rawDescData
 }
 
-var file_google_protobuf_descriptor_proto_enumTypes = make([]prototype.Enum, 6)
+var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
 var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
 var file_google_protobuf_descriptor_proto_goTypes = []interface{}{
 	(FieldDescriptorProto_Type)(0),                // 0: google.protobuf.FieldDescriptorProto.Type
@@ -3863,10 +3862,10 @@
 		},
 		GoTypes:           file_google_protobuf_descriptor_proto_goTypes,
 		DependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs,
+		EnumInfos:         file_google_protobuf_descriptor_proto_enumTypes,
 		MessageInfos:      file_google_protobuf_descriptor_proto_msgTypes,
 	}.Build()
 	File_google_protobuf_descriptor_proto = out.File
-	file_google_protobuf_descriptor_proto_enumTypes = out.Enums
 	file_google_protobuf_descriptor_proto_rawDesc = nil
 	file_google_protobuf_descriptor_proto_goTypes = nil
 	file_google_protobuf_descriptor_proto_depIdxs = nil
diff --git a/types/known/structpb/struct.pb.go b/types/known/structpb/struct.pb.go
index 2c881e4..2596396 100644
--- a/types/known/structpb/struct.pb.go
+++ b/types/known/structpb/struct.pb.go
@@ -35,7 +35,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -73,7 +72,7 @@
 }
 
 func (NullValue) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_struct_proto_enumTypes[0].EnumDescriptor
+	return file_google_protobuf_struct_proto_enumTypes[0].Descriptor()
 }
 
 func (NullValue) Type() protoreflect.EnumType {
@@ -395,7 +394,7 @@
 	return file_google_protobuf_struct_proto_rawDescData
 }
 
-var file_google_protobuf_struct_proto_enumTypes = make([]prototype.Enum, 1)
+var file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_google_protobuf_struct_proto_goTypes = []interface{}{
 	(NullValue)(0),    // 0: google.protobuf.NullValue
@@ -481,10 +480,10 @@
 		},
 		GoTypes:           file_google_protobuf_struct_proto_goTypes,
 		DependencyIndexes: file_google_protobuf_struct_proto_depIdxs,
+		EnumInfos:         file_google_protobuf_struct_proto_enumTypes,
 		MessageInfos:      file_google_protobuf_struct_proto_msgTypes,
 	}.Build()
 	File_google_protobuf_struct_proto = out.File
-	file_google_protobuf_struct_proto_enumTypes = out.Enums
 	file_google_protobuf_struct_proto_rawDesc = nil
 	file_google_protobuf_struct_proto_goTypes = nil
 	file_google_protobuf_struct_proto_depIdxs = nil
diff --git a/types/known/typepb/type.pb.go b/types/known/typepb/type.pb.go
index 67282c6..44afbc7 100644
--- a/types/known/typepb/type.pb.go
+++ b/types/known/typepb/type.pb.go
@@ -35,7 +35,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	prototype "google.golang.org/protobuf/reflect/prototype"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	anypb "google.golang.org/protobuf/types/known/anypb"
 	sourcecontextpb "google.golang.org/protobuf/types/known/sourcecontextpb"
@@ -76,7 +75,7 @@
 }
 
 func (Syntax) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[0].EnumDescriptor
+	return file_google_protobuf_type_proto_enumTypes[0].Descriptor()
 }
 
 func (Syntax) Type() protoreflect.EnumType {
@@ -193,7 +192,7 @@
 }
 
 func (Field_Kind) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[1].EnumDescriptor
+	return file_google_protobuf_type_proto_enumTypes[1].Descriptor()
 }
 
 func (Field_Kind) Type() protoreflect.EnumType {
@@ -250,7 +249,7 @@
 }
 
 func (Field_Cardinality) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[2].EnumDescriptor
+	return file_google_protobuf_type_proto_enumTypes[2].Descriptor()
 }
 
 func (Field_Cardinality) Type() protoreflect.EnumType {
@@ -816,7 +815,7 @@
 	return file_google_protobuf_type_proto_rawDescData
 }
 
-var file_google_protobuf_type_proto_enumTypes = make([]prototype.Enum, 3)
+var file_google_protobuf_type_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
 var file_google_protobuf_type_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
 var file_google_protobuf_type_proto_goTypes = []interface{}{
 	(Syntax)(0),                           // 0: google.protobuf.Syntax
@@ -930,10 +929,10 @@
 		},
 		GoTypes:           file_google_protobuf_type_proto_goTypes,
 		DependencyIndexes: file_google_protobuf_type_proto_depIdxs,
+		EnumInfos:         file_google_protobuf_type_proto_enumTypes,
 		MessageInfos:      file_google_protobuf_type_proto_msgTypes,
 	}.Build()
 	File_google_protobuf_type_proto = out.File
-	file_google_protobuf_type_proto_enumTypes = out.Enums
 	file_google_protobuf_type_proto_rawDesc = nil
 	file_google_protobuf_type_proto_goTypes = nil
 	file_google_protobuf_type_proto_depIdxs = nil
