cmd/protoc-gen-go, internal/filetype: clean up EnumType construction

Drop the dependency from generated files on prototype.Enum: Generated
code should only depend on runtime/proto{iface,impl}.

Drop the Enums, Messages, and Extensions returns form
filetype.Builder.Build. Of these, only Enums was used by generated code.
Change the generated init function to pass the builder a slice of values
to fill in (as is done for messages and extensions).

Remove the filetype dependency on prototype in preparation for
eventually dropping the prototype package entirely.

Change-Id: I28a3420f5dfcc13fed531a64ef07b9afddfd9d55
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189200
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
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