diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
index 6338c44..2c74041 100644
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ b/cmd/protoc-gen-go/internal_gengo/main.go
@@ -527,25 +527,6 @@
 		g.P()
 		f.needRawDesc = true
 	}
-
-	// ExtensionRangeArray method.
-	extRanges := m.Desc.ExtensionRanges()
-	if m.genExtRangeMethod && extRanges.Len() > 0 {
-		protoExtRange := protoifacePackage.Ident("ExtensionRangeV1")
-		extRangeVar := "extRange_" + m.GoIdent.GoName
-		g.P("var ", extRangeVar, " = []", protoExtRange, " {")
-		for i := 0; i < extRanges.Len(); i++ {
-			r := extRanges.Get(i)
-			g.P("{Start:", r[0], ", End:", r[1]-1 /* inclusive */, "},")
-		}
-		g.P("}")
-		g.P()
-		g.P("// Deprecated: Use ", m.GoIdent, ".ProtoReflect.Descriptor.ExtensionRanges instead.")
-		g.P("func (*", m.GoIdent, ") ExtensionRangeArray() []", protoExtRange, " {")
-		g.P("return ", extRangeVar)
-		g.P("}")
-		g.P()
-	}
 }
 
 func genMessageGetterMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
index 22f29c6..5b3fcf4 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"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -124,15 +123,6 @@
 	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_Message1 = []protoiface.ExtensionRangeV1{
-	{Start: 100, End: 536870911},
-}
-
-// Deprecated: Use Message1.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message1) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message1
-}
-
 func (x *Message1) GetField1A() string {
 	if x != nil && x.Field1A != nil {
 		return *x.Field1A
diff --git a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
index f245996..4e412ab 100644
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -56,16 +55,6 @@
 	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_BaseMessage = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 9},
-	{Start: 16, End: 536870911},
-}
-
-// Deprecated: Use BaseMessage.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*BaseMessage) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_BaseMessage
-}
-
 func (x *BaseMessage) GetField() string {
 	if x != nil && x.Field != nil {
 		return *x.Field
@@ -112,15 +101,6 @@
 	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP(), []int{1}
 }
 
-var extRange_MessageSetWireFormatMessage = []protoiface.ExtensionRangeV1{
-	{Start: 100, End: 2147483646},
-}
-
-// Deprecated: Use MessageSetWireFormatMessage.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*MessageSetWireFormatMessage) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_MessageSetWireFormatMessage
-}
-
 var File_cmd_protoc_gen_go_testdata_extensions_base_base_proto protoreflect.FileDescriptor
 
 var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc = []byte{
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 3c79fbc..c712715 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"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -290,15 +289,6 @@
 	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{4}
 }
 
-var extRange_Extendable = []protoiface.ExtensionRangeV1{
-	{Start: 1, End: 536870911},
-}
-
-// Deprecated: Use Extendable.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Extendable) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Extendable
-}
-
 // Message set wire format.
 type MessageSetWireFormatExtension struct {
 	state         protoimpl.MessageState
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 21f5eb4..d0897db 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"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	math "math"
 	reflect "reflect"
@@ -240,15 +239,6 @@
 	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_M = []protoiface.ExtensionRangeV1{
-	{Start: 100, End: 536870911},
-}
-
-// Deprecated: Use M.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*M) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_M
-}
-
 func (x *M) GetM2() *M2 {
 	if x != nil {
 		return x.M2
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go
index 977fa61..3d866ee 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -2191,15 +2190,6 @@
 	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{20}
 }
 
-var extRange_Message16507 = []protoiface.ExtensionRangeV1{
-	{Start: 21, End: 21},
-}
-
-// Deprecated: Use Message16507.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message16507) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message16507
-}
-
 func (x *Message16507) GetField16510() bool {
 	if x != nil && x.Field16510 != nil {
 		return *x.Field16510
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go
index 131f7a6..f1f4fcc 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -3189,15 +3188,6 @@
 	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{34}
 }
 
-var extRange_Message16727 = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use Message16727.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message16727) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message16727
-}
-
 func (x *Message16727) GetField16782() Enum16728 {
 	if x != nil && x.Field16782 != nil {
 		return *x.Field16782
@@ -3897,711 +3887,6 @@
 	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{39}
 }
 
-var extRange_Message16945 = []protoiface.ExtensionRangeV1{
-	{Start: 17, End: 17},
-	{Start: 21, End: 21},
-	{Start: 25, End: 25},
-	{Start: 27, End: 27},
-	{Start: 29, End: 29},
-	{Start: 30, End: 30},
-	{Start: 31, End: 31},
-	{Start: 32, End: 32},
-	{Start: 33, End: 33},
-	{Start: 34, End: 34},
-	{Start: 35, End: 35},
-	{Start: 36, End: 36},
-	{Start: 39, End: 39},
-	{Start: 40, End: 40},
-	{Start: 41, End: 41},
-	{Start: 42, End: 42},
-	{Start: 43, End: 43},
-	{Start: 44, End: 44},
-	{Start: 45, End: 45},
-	{Start: 46, End: 46},
-	{Start: 47, End: 47},
-	{Start: 49, End: 49},
-	{Start: 50, End: 50},
-	{Start: 52, End: 52},
-	{Start: 53, End: 53},
-	{Start: 56, End: 56},
-	{Start: 57, End: 57},
-	{Start: 60, End: 60},
-	{Start: 61, End: 61},
-	{Start: 63, End: 63},
-	{Start: 64, End: 64},
-	{Start: 65, End: 65},
-	{Start: 66, End: 66},
-	{Start: 73, End: 73},
-	{Start: 74, End: 74},
-	{Start: 75, End: 75},
-	{Start: 76, End: 76},
-	{Start: 77, End: 77},
-	{Start: 78, End: 78},
-	{Start: 79, End: 79},
-	{Start: 80, End: 80},
-	{Start: 82, End: 82},
-	{Start: 83, End: 83},
-	{Start: 84, End: 84},
-	{Start: 86, End: 86},
-	{Start: 87, End: 87},
-	{Start: 88, End: 88},
-	{Start: 89, End: 89},
-	{Start: 90, End: 90},
-	{Start: 91, End: 91},
-	{Start: 92, End: 92},
-	{Start: 93, End: 93},
-	{Start: 94, End: 94},
-	{Start: 103, End: 103},
-	{Start: 104, End: 104},
-	{Start: 105, End: 105},
-	{Start: 106, End: 106},
-	{Start: 107, End: 107},
-	{Start: 108, End: 108},
-	{Start: 109, End: 109},
-	{Start: 110, End: 110},
-	{Start: 111, End: 111},
-	{Start: 112, End: 112},
-	{Start: 113, End: 113},
-	{Start: 114, End: 114},
-	{Start: 115, End: 115},
-	{Start: 116, End: 116},
-	{Start: 117, End: 117},
-	{Start: 118, End: 118},
-	{Start: 119, End: 119},
-	{Start: 120, End: 120},
-	{Start: 121, End: 121},
-	{Start: 122, End: 122},
-	{Start: 123, End: 123},
-	{Start: 124, End: 124},
-	{Start: 125, End: 125},
-	{Start: 127, End: 127},
-	{Start: 128, End: 128},
-	{Start: 129, End: 129},
-	{Start: 132, End: 132},
-	{Start: 134, End: 134},
-	{Start: 135, End: 135},
-	{Start: 137, End: 137},
-	{Start: 140, End: 140},
-	{Start: 141, End: 141},
-	{Start: 144, End: 144},
-	{Start: 145, End: 145},
-	{Start: 146, End: 146},
-	{Start: 147, End: 147},
-	{Start: 148, End: 148},
-	{Start: 149, End: 149},
-	{Start: 150, End: 150},
-	{Start: 151, End: 151},
-	{Start: 154, End: 154},
-	{Start: 155, End: 155},
-	{Start: 157, End: 157},
-	{Start: 158, End: 158},
-	{Start: 159, End: 159},
-	{Start: 160, End: 160},
-	{Start: 161, End: 161},
-	{Start: 162, End: 162},
-	{Start: 163, End: 163},
-	{Start: 164, End: 164},
-	{Start: 165, End: 165},
-	{Start: 166, End: 166},
-	{Start: 167, End: 167},
-	{Start: 176, End: 176},
-	{Start: 177, End: 177},
-	{Start: 178, End: 178},
-	{Start: 179, End: 179},
-	{Start: 180, End: 180},
-	{Start: 181, End: 181},
-	{Start: 182, End: 182},
-	{Start: 184, End: 184},
-	{Start: 185, End: 185},
-	{Start: 187, End: 187},
-	{Start: 188, End: 188},
-	{Start: 199, End: 199},
-	{Start: 200, End: 200},
-	{Start: 201, End: 201},
-	{Start: 202, End: 202},
-	{Start: 203, End: 203},
-	{Start: 207, End: 207},
-	{Start: 208, End: 208},
-	{Start: 209, End: 209},
-	{Start: 210, End: 210},
-	{Start: 214, End: 214},
-	{Start: 215, End: 215},
-	{Start: 216, End: 216},
-	{Start: 217, End: 217},
-	{Start: 218, End: 218},
-	{Start: 219, End: 219},
-	{Start: 220, End: 220},
-	{Start: 221, End: 221},
-	{Start: 222, End: 222},
-	{Start: 223, End: 223},
-	{Start: 224, End: 224},
-	{Start: 225, End: 225},
-	{Start: 226, End: 226},
-	{Start: 227, End: 227},
-	{Start: 228, End: 228},
-	{Start: 229, End: 229},
-	{Start: 230, End: 230},
-	{Start: 231, End: 231},
-	{Start: 232, End: 232},
-	{Start: 233, End: 233},
-	{Start: 234, End: 234},
-	{Start: 235, End: 235},
-	{Start: 236, End: 236},
-	{Start: 237, End: 237},
-	{Start: 238, End: 238},
-	{Start: 239, End: 239},
-	{Start: 240, End: 240},
-	{Start: 241, End: 241},
-	{Start: 242, End: 242},
-	{Start: 243, End: 243},
-	{Start: 244, End: 244},
-	{Start: 245, End: 245},
-	{Start: 246, End: 246},
-	{Start: 247, End: 247},
-	{Start: 248, End: 248},
-	{Start: 249, End: 249},
-	{Start: 250, End: 250},
-	{Start: 251, End: 251},
-	{Start: 252, End: 252},
-	{Start: 253, End: 253},
-	{Start: 254, End: 254},
-	{Start: 255, End: 255},
-	{Start: 256, End: 256},
-	{Start: 257, End: 257},
-	{Start: 258, End: 258},
-	{Start: 259, End: 259},
-	{Start: 261, End: 261},
-	{Start: 262, End: 262},
-	{Start: 263, End: 263},
-	{Start: 264, End: 264},
-	{Start: 265, End: 265},
-	{Start: 266, End: 266},
-	{Start: 267, End: 267},
-	{Start: 268, End: 268},
-	{Start: 269, End: 269},
-	{Start: 270, End: 270},
-	{Start: 271, End: 271},
-	{Start: 272, End: 272},
-	{Start: 273, End: 273},
-	{Start: 275, End: 275},
-	{Start: 276, End: 276},
-	{Start: 277, End: 277},
-	{Start: 278, End: 278},
-	{Start: 279, End: 279},
-	{Start: 280, End: 280},
-	{Start: 281, End: 281},
-	{Start: 282, End: 282},
-	{Start: 283, End: 283},
-	{Start: 284, End: 284},
-	{Start: 285, End: 285},
-	{Start: 286, End: 286},
-	{Start: 290, End: 290},
-	{Start: 291, End: 291},
-	{Start: 292, End: 292},
-	{Start: 293, End: 293},
-	{Start: 294, End: 294},
-	{Start: 295, End: 295},
-	{Start: 296, End: 296},
-	{Start: 297, End: 297},
-	{Start: 298, End: 298},
-	{Start: 299, End: 299},
-	{Start: 300, End: 300},
-	{Start: 301, End: 301},
-	{Start: 302, End: 302},
-	{Start: 303, End: 303},
-	{Start: 304, End: 304},
-	{Start: 305, End: 305},
-	{Start: 306, End: 306},
-	{Start: 307, End: 307},
-	{Start: 308, End: 308},
-	{Start: 309, End: 309},
-	{Start: 310, End: 310},
-	{Start: 311, End: 311},
-	{Start: 312, End: 312},
-	{Start: 313, End: 313},
-	{Start: 314, End: 314},
-	{Start: 315, End: 315},
-	{Start: 316, End: 316},
-	{Start: 317, End: 317},
-	{Start: 318, End: 318},
-	{Start: 319, End: 319},
-	{Start: 320, End: 320},
-	{Start: 321, End: 321},
-	{Start: 322, End: 322},
-	{Start: 323, End: 323},
-	{Start: 324, End: 324},
-	{Start: 325, End: 325},
-	{Start: 326, End: 326},
-	{Start: 327, End: 327},
-	{Start: 328, End: 328},
-	{Start: 329, End: 329},
-	{Start: 330, End: 330},
-	{Start: 331, End: 331},
-	{Start: 332, End: 332},
-	{Start: 333, End: 333},
-	{Start: 334, End: 334},
-	{Start: 335, End: 335},
-	{Start: 336, End: 336},
-	{Start: 337, End: 337},
-	{Start: 338, End: 338},
-	{Start: 339, End: 339},
-	{Start: 340, End: 340},
-	{Start: 341, End: 341},
-	{Start: 342, End: 342},
-	{Start: 343, End: 343},
-	{Start: 344, End: 344},
-	{Start: 345, End: 345},
-	{Start: 346, End: 346},
-	{Start: 347, End: 347},
-	{Start: 348, End: 348},
-	{Start: 349, End: 349},
-	{Start: 350, End: 350},
-	{Start: 351, End: 351},
-	{Start: 352, End: 352},
-	{Start: 353, End: 353},
-	{Start: 354, End: 354},
-	{Start: 355, End: 355},
-	{Start: 356, End: 356},
-	{Start: 357, End: 357},
-	{Start: 358, End: 358},
-	{Start: 359, End: 359},
-	{Start: 360, End: 360},
-	{Start: 361, End: 361},
-	{Start: 362, End: 362},
-	{Start: 363, End: 363},
-	{Start: 364, End: 364},
-	{Start: 365, End: 365},
-	{Start: 366, End: 366},
-	{Start: 367, End: 367},
-	{Start: 368, End: 368},
-	{Start: 369, End: 369},
-	{Start: 370, End: 370},
-	{Start: 371, End: 371},
-	{Start: 372, End: 372},
-	{Start: 373, End: 373},
-	{Start: 374, End: 374},
-	{Start: 375, End: 375},
-	{Start: 376, End: 376},
-	{Start: 377, End: 377},
-	{Start: 378, End: 378},
-	{Start: 379, End: 379},
-	{Start: 380, End: 380},
-	{Start: 381, End: 381},
-	{Start: 382, End: 382},
-	{Start: 383, End: 383},
-	{Start: 384, End: 384},
-	{Start: 385, End: 385},
-	{Start: 386, End: 386},
-	{Start: 387, End: 387},
-	{Start: 388, End: 388},
-	{Start: 389, End: 389},
-	{Start: 390, End: 390},
-	{Start: 391, End: 391},
-	{Start: 392, End: 392},
-	{Start: 393, End: 393},
-	{Start: 394, End: 394},
-	{Start: 395, End: 395},
-	{Start: 396, End: 396},
-	{Start: 397, End: 397},
-	{Start: 398, End: 398},
-	{Start: 399, End: 399},
-	{Start: 400, End: 400},
-	{Start: 401, End: 401},
-	{Start: 402, End: 402},
-	{Start: 403, End: 403},
-	{Start: 404, End: 404},
-	{Start: 405, End: 405},
-	{Start: 406, End: 406},
-	{Start: 407, End: 407},
-	{Start: 408, End: 408},
-	{Start: 409, End: 409},
-	{Start: 410, End: 410},
-	{Start: 411, End: 411},
-	{Start: 412, End: 412},
-	{Start: 413, End: 413},
-	{Start: 414, End: 414},
-	{Start: 415, End: 415},
-	{Start: 416, End: 416},
-	{Start: 417, End: 417},
-	{Start: 418, End: 418},
-	{Start: 419, End: 419},
-	{Start: 420, End: 420},
-	{Start: 421, End: 421},
-	{Start: 422, End: 422},
-	{Start: 423, End: 423},
-	{Start: 424, End: 424},
-	{Start: 425, End: 425},
-	{Start: 426, End: 426},
-	{Start: 427, End: 427},
-	{Start: 428, End: 428},
-	{Start: 429, End: 429},
-	{Start: 430, End: 430},
-	{Start: 431, End: 431},
-	{Start: 432, End: 432},
-	{Start: 433, End: 433},
-	{Start: 434, End: 434},
-	{Start: 435, End: 435},
-	{Start: 436, End: 436},
-	{Start: 437, End: 437},
-	{Start: 438, End: 438},
-	{Start: 439, End: 439},
-	{Start: 440, End: 440},
-	{Start: 441, End: 441},
-	{Start: 442, End: 442},
-	{Start: 443, End: 443},
-	{Start: 444, End: 444},
-	{Start: 445, End: 445},
-	{Start: 446, End: 446},
-	{Start: 447, End: 447},
-	{Start: 448, End: 448},
-	{Start: 449, End: 449},
-	{Start: 450, End: 450},
-	{Start: 451, End: 451},
-	{Start: 452, End: 452},
-	{Start: 453, End: 453},
-	{Start: 454, End: 454},
-	{Start: 455, End: 455},
-	{Start: 456, End: 456},
-	{Start: 457, End: 457},
-	{Start: 458, End: 458},
-	{Start: 459, End: 459},
-	{Start: 460, End: 460},
-	{Start: 461, End: 461},
-	{Start: 462, End: 462},
-	{Start: 463, End: 463},
-	{Start: 464, End: 464},
-	{Start: 465, End: 465},
-	{Start: 466, End: 466},
-	{Start: 467, End: 467},
-	{Start: 468, End: 468},
-	{Start: 469, End: 469},
-	{Start: 470, End: 470},
-	{Start: 471, End: 471},
-	{Start: 472, End: 472},
-	{Start: 473, End: 473},
-	{Start: 474, End: 474},
-	{Start: 509, End: 509},
-	{Start: 511, End: 511},
-	{Start: 512, End: 512},
-	{Start: 513, End: 513},
-	{Start: 514, End: 514},
-	{Start: 515, End: 515},
-	{Start: 516, End: 516},
-	{Start: 517, End: 517},
-	{Start: 518, End: 518},
-	{Start: 519, End: 519},
-	{Start: 520, End: 520},
-	{Start: 521, End: 521},
-	{Start: 522, End: 522},
-	{Start: 523, End: 523},
-	{Start: 524, End: 524},
-	{Start: 525, End: 525},
-	{Start: 526, End: 526},
-	{Start: 527, End: 527},
-	{Start: 528, End: 528},
-	{Start: 529, End: 529},
-	{Start: 530, End: 530},
-	{Start: 531, End: 531},
-	{Start: 532, End: 532},
-	{Start: 533, End: 533},
-	{Start: 534, End: 534},
-	{Start: 535, End: 535},
-	{Start: 536, End: 536},
-	{Start: 537, End: 537},
-	{Start: 538, End: 538},
-	{Start: 539, End: 539},
-	{Start: 540, End: 540},
-	{Start: 541, End: 541},
-	{Start: 542, End: 542},
-	{Start: 543, End: 543},
-	{Start: 544, End: 544},
-	{Start: 545, End: 545},
-	{Start: 546, End: 546},
-	{Start: 547, End: 547},
-	{Start: 548, End: 548},
-	{Start: 549, End: 549},
-	{Start: 550, End: 550},
-	{Start: 551, End: 551},
-	{Start: 552, End: 552},
-	{Start: 553, End: 553},
-	{Start: 554, End: 554},
-	{Start: 555, End: 555},
-	{Start: 556, End: 556},
-	{Start: 557, End: 557},
-	{Start: 558, End: 558},
-	{Start: 559, End: 559},
-	{Start: 560, End: 560},
-	{Start: 561, End: 561},
-	{Start: 562, End: 562},
-	{Start: 563, End: 563},
-	{Start: 564, End: 564},
-	{Start: 565, End: 565},
-	{Start: 566, End: 566},
-	{Start: 567, End: 567},
-	{Start: 568, End: 568},
-	{Start: 569, End: 569},
-	{Start: 570, End: 570},
-	{Start: 571, End: 571},
-	{Start: 572, End: 572},
-	{Start: 573, End: 573},
-	{Start: 574, End: 574},
-	{Start: 575, End: 575},
-	{Start: 576, End: 576},
-	{Start: 577, End: 577},
-	{Start: 578, End: 578},
-	{Start: 579, End: 579},
-	{Start: 580, End: 580},
-	{Start: 581, End: 581},
-	{Start: 582, End: 582},
-	{Start: 583, End: 583},
-	{Start: 584, End: 584},
-	{Start: 585, End: 585},
-	{Start: 586, End: 586},
-	{Start: 587, End: 587},
-	{Start: 588, End: 588},
-	{Start: 589, End: 589},
-	{Start: 590, End: 590},
-	{Start: 604, End: 604},
-	{Start: 605, End: 605},
-	{Start: 606, End: 606},
-	{Start: 607, End: 607},
-	{Start: 608, End: 608},
-	{Start: 609, End: 609},
-	{Start: 610, End: 610},
-	{Start: 611, End: 611},
-	{Start: 612, End: 612},
-	{Start: 613, End: 613},
-	{Start: 614, End: 614},
-	{Start: 615, End: 615},
-	{Start: 616, End: 616},
-	{Start: 617, End: 617},
-	{Start: 618, End: 618},
-	{Start: 619, End: 619},
-	{Start: 620, End: 620},
-	{Start: 621, End: 621},
-	{Start: 622, End: 622},
-	{Start: 623, End: 623},
-	{Start: 624, End: 624},
-	{Start: 625, End: 625},
-	{Start: 626, End: 626},
-	{Start: 627, End: 627},
-	{Start: 628, End: 628},
-	{Start: 629, End: 629},
-	{Start: 813, End: 813},
-	{Start: 814, End: 814},
-	{Start: 815, End: 815},
-	{Start: 816, End: 816},
-	{Start: 817, End: 817},
-	{Start: 818, End: 818},
-	{Start: 819, End: 819},
-	{Start: 820, End: 820},
-	{Start: 821, End: 821},
-	{Start: 822, End: 822},
-	{Start: 823, End: 823},
-	{Start: 824, End: 824},
-	{Start: 827, End: 827},
-	{Start: 828, End: 828},
-	{Start: 829, End: 829},
-	{Start: 830, End: 830},
-	{Start: 831, End: 831},
-	{Start: 832, End: 832},
-	{Start: 833, End: 833},
-	{Start: 834, End: 834},
-	{Start: 835, End: 835},
-	{Start: 836, End: 836},
-	{Start: 837, End: 837},
-	{Start: 838, End: 838},
-	{Start: 839, End: 839},
-	{Start: 840, End: 840},
-	{Start: 841, End: 841},
-	{Start: 842, End: 842},
-	{Start: 843, End: 843},
-	{Start: 844, End: 844},
-	{Start: 845, End: 845},
-	{Start: 846, End: 846},
-	{Start: 847, End: 847},
-	{Start: 848, End: 848},
-	{Start: 849, End: 849},
-	{Start: 850, End: 850},
-	{Start: 851, End: 851},
-	{Start: 852, End: 852},
-	{Start: 853, End: 853},
-	{Start: 854, End: 854},
-	{Start: 855, End: 855},
-	{Start: 856, End: 856},
-	{Start: 857, End: 857},
-	{Start: 858, End: 858},
-	{Start: 859, End: 859},
-	{Start: 860, End: 860},
-	{Start: 861, End: 861},
-	{Start: 862, End: 862},
-	{Start: 863, End: 863},
-	{Start: 864, End: 864},
-	{Start: 865, End: 865},
-	{Start: 866, End: 866},
-	{Start: 867, End: 867},
-	{Start: 868, End: 868},
-	{Start: 869, End: 869},
-	{Start: 870, End: 870},
-	{Start: 871, End: 871},
-	{Start: 880, End: 880},
-	{Start: 881, End: 881},
-	{Start: 882, End: 882},
-	{Start: 883, End: 883},
-	{Start: 884, End: 884},
-	{Start: 885, End: 885},
-	{Start: 886, End: 886},
-	{Start: 887, End: 887},
-	{Start: 888, End: 888},
-	{Start: 890, End: 890},
-	{Start: 891, End: 891},
-	{Start: 892, End: 892},
-	{Start: 912, End: 912},
-	{Start: 914, End: 914},
-	{Start: 915, End: 915},
-	{Start: 916, End: 916},
-	{Start: 917, End: 917},
-	{Start: 918, End: 918},
-	{Start: 919, End: 919},
-	{Start: 920, End: 920},
-	{Start: 921, End: 921},
-	{Start: 922, End: 922},
-	{Start: 923, End: 923},
-	{Start: 924, End: 924},
-	{Start: 925, End: 925},
-	{Start: 926, End: 926},
-	{Start: 927, End: 927},
-	{Start: 928, End: 928},
-	{Start: 929, End: 929},
-	{Start: 930, End: 930},
-	{Start: 931, End: 931},
-	{Start: 932, End: 932},
-	{Start: 933, End: 933},
-	{Start: 934, End: 934},
-	{Start: 935, End: 935},
-	{Start: 936, End: 936},
-	{Start: 937, End: 937},
-	{Start: 938, End: 938},
-	{Start: 939, End: 939},
-	{Start: 940, End: 940},
-	{Start: 941, End: 941},
-	{Start: 942, End: 942},
-	{Start: 943, End: 943},
-	{Start: 944, End: 944},
-	{Start: 945, End: 945},
-	{Start: 946, End: 946},
-	{Start: 947, End: 947},
-	{Start: 949, End: 949},
-	{Start: 950, End: 950},
-	{Start: 951, End: 951},
-	{Start: 952, End: 952},
-	{Start: 954, End: 954},
-	{Start: 955, End: 955},
-	{Start: 956, End: 956},
-	{Start: 957, End: 957},
-	{Start: 958, End: 958},
-	{Start: 959, End: 959},
-	{Start: 960, End: 960},
-	{Start: 961, End: 961},
-	{Start: 962, End: 962},
-	{Start: 963, End: 963},
-	{Start: 964, End: 964},
-	{Start: 965, End: 965},
-	{Start: 966, End: 966},
-	{Start: 967, End: 967},
-	{Start: 968, End: 968},
-	{Start: 969, End: 969},
-	{Start: 970, End: 970},
-	{Start: 971, End: 971},
-	{Start: 972, End: 972},
-	{Start: 973, End: 973},
-	{Start: 974, End: 974},
-	{Start: 975, End: 975},
-	{Start: 976, End: 976},
-	{Start: 977, End: 977},
-	{Start: 978, End: 978},
-	{Start: 979, End: 979},
-	{Start: 980, End: 980},
-	{Start: 981, End: 981},
-	{Start: 982, End: 982},
-	{Start: 983, End: 983},
-	{Start: 984, End: 984},
-	{Start: 985, End: 985},
-	{Start: 987, End: 987},
-	{Start: 988, End: 988},
-	{Start: 1000, End: 1000},
-	{Start: 1001, End: 1001},
-	{Start: 1002, End: 1002},
-	{Start: 1003, End: 1003},
-	{Start: 1004, End: 1004},
-	{Start: 1005, End: 1005},
-	{Start: 1006, End: 1006},
-	{Start: 1007, End: 1007},
-	{Start: 1008, End: 1008},
-	{Start: 1009, End: 1009},
-	{Start: 1010, End: 1010},
-	{Start: 1011, End: 1011},
-	{Start: 1012, End: 1012},
-	{Start: 1013, End: 1013},
-	{Start: 1014, End: 1014},
-	{Start: 1015, End: 1015},
-	{Start: 1016, End: 1016},
-	{Start: 1017, End: 1017},
-	{Start: 1018, End: 1018},
-	{Start: 1019, End: 1019},
-	{Start: 1020, End: 1020},
-	{Start: 1021, End: 1021},
-	{Start: 1022, End: 1022},
-	{Start: 1023, End: 1023},
-	{Start: 1024, End: 1024},
-	{Start: 1025, End: 1025},
-	{Start: 1026, End: 1026},
-	{Start: 1027, End: 1027},
-	{Start: 1028, End: 1028},
-	{Start: 1029, End: 1029},
-	{Start: 1030, End: 1030},
-	{Start: 1031, End: 1031},
-	{Start: 1032, End: 1032},
-	{Start: 1033, End: 1033},
-	{Start: 1034, End: 1034},
-	{Start: 1035, End: 1035},
-	{Start: 1036, End: 1036},
-	{Start: 1037, End: 1037},
-	{Start: 1038, End: 1038},
-	{Start: 1039, End: 1039},
-	{Start: 1040, End: 1040},
-	{Start: 1041, End: 1041},
-	{Start: 1042, End: 1042},
-	{Start: 1043, End: 1043},
-	{Start: 1044, End: 1044},
-	{Start: 1045, End: 1045},
-	{Start: 1046, End: 1046},
-	{Start: 1047, End: 1047},
-	{Start: 1048, End: 1048},
-	{Start: 1049, End: 1049},
-	{Start: 1050, End: 1050},
-	{Start: 1051, End: 1051},
-	{Start: 1052, End: 1052},
-	{Start: 1053, End: 1053},
-	{Start: 1054, End: 1054},
-	{Start: 1055, End: 1055},
-	{Start: 1056, End: 1056},
-	{Start: 1057, End: 1057},
-	{Start: 1058, End: 1058},
-	{Start: 1079, End: 1079},
-	{Start: 1080, End: 1080},
-	{Start: 1081, End: 1081},
-	{Start: 1082, End: 1082},
-	{Start: 1083, End: 1083},
-	{Start: 1084, End: 1084},
-	{Start: 1085, End: 1085},
-}
-
-// Deprecated: Use Message16945.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message16945) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message16945
-}
-
 func (x *Message16945) GetField16946() string {
 	if x != nil && x.Field16946 != nil {
 		return *x.Field16946
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go
index 99ed73f..fa70b20 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -1798,17 +1797,6 @@
 	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{16}
 }
 
-var extRange_Message11874 = []protoiface.ExtensionRangeV1{
-	{Start: 1, End: 1},
-	{Start: 2, End: 2},
-	{Start: 5, End: 5},
-}
-
-// Deprecated: Use Message11874.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message11874) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message11874
-}
-
 func (x *Message11874) GetField11888() *Message10391 {
 	if x != nil {
 		return x.Field11888
@@ -2497,18 +2485,6 @@
 	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{21}
 }
 
-var extRange_Message18283 = []protoiface.ExtensionRangeV1{
-	{Start: 116, End: 116},
-	{Start: 118, End: 118},
-	{Start: 130, End: 130},
-	{Start: 165, End: 165},
-}
-
-// Deprecated: Use Message18283.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message18283) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message18283
-}
-
 func (x *Message18283) GetField18478() *UnusedEmptyMessage {
 	if x != nil {
 		return x.Field18478
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go
index b23548a..7c8d69b 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -700,18 +699,6 @@
 	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{7}
 }
 
-var extRange_Message730 = []protoiface.ExtensionRangeV1{
-	{Start: 25, End: 25},
-	{Start: 29, End: 29},
-	{Start: 34, End: 34},
-	{Start: 15, End: 15},
-}
-
-// Deprecated: Use Message730.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message730) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message730
-}
-
 func (x *Message730) GetField897() string {
 	if x != nil && x.Field897 != nil {
 		return *x.Field897
@@ -1812,16 +1799,6 @@
 	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{15}
 }
 
-var extRange_Message11873 = []protoiface.ExtensionRangeV1{
-	{Start: 9, End: 9},
-	{Start: 10, End: 10},
-}
-
-// Deprecated: Use Message11873.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message11873) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message11873
-}
-
 func (x *Message11873) GetField11876() string {
 	if x != nil && x.Field11876 != nil {
 		return *x.Field11876
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go
index 789650c..e0250c0 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -394,17 +393,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{6}
 }
 
-var extRange_Message728 = []protoiface.ExtensionRangeV1{
-	{Start: 10, End: 10},
-	{Start: 11, End: 11},
-	{Start: 12, End: 12},
-}
-
-// Deprecated: Use Message728.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message728) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message728
-}
-
 func (x *Message728) GetField887() string {
 	if x != nil && x.Field887 != nil {
 		return *x.Field887
@@ -639,16 +627,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{8}
 }
 
-var extRange_Message697 = []protoiface.ExtensionRangeV1{
-	{Start: 28, End: 28},
-	{Start: 26, End: 26},
-}
-
-// Deprecated: Use Message697.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message697) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message697
-}
-
 func (x *Message697) GetField743() string {
 	if x != nil && x.Field743 != nil {
 		return *x.Field743
@@ -940,15 +918,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{9}
 }
 
-var extRange_Message0 = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 2147483646},
-}
-
-// Deprecated: Use Message0.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message0) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message0
-}
-
 type Message6578 struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1219,15 +1188,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{14}
 }
 
-var extRange_Message10573 = []protoiface.ExtensionRangeV1{
-	{Start: 10000, End: 536870911},
-}
-
-// Deprecated: Use Message10573.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message10573) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message10573
-}
-
 func (x *Message10573) GetField10580() []*Message10576 {
 	if x != nil {
 		return x.Field10580
@@ -1494,16 +1454,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{17}
 }
 
-var extRange_Message10155 = []protoiface.ExtensionRangeV1{
-	{Start: 57, End: 57},
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use Message10155.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message10155) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message10155
-}
-
 func (x *Message10155) GetField10195() int32 {
 	if x != nil && x.Field10195 != nil {
 		return *x.Field10195
@@ -2505,15 +2455,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{22}
 }
 
-var extRange_Message13145 = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use Message13145.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message13145) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message13145
-}
-
 func (x *Message13145) GetField13155() Enum13146 {
 	if x != nil && x.Field13155 != nil {
 		return *x.Field13155
@@ -2886,15 +2827,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{30}
 }
 
-var extRange_Message8301 = []protoiface.ExtensionRangeV1{
-	{Start: 64, End: 536870911},
-}
-
-// Deprecated: Use Message8301.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message8301) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message8301
-}
-
 func (x *Message8301) GetField8328() string {
 	if x != nil && x.Field8328 != nil {
 		return *x.Field8328
@@ -3071,15 +3003,6 @@
 	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{32}
 }
 
-var extRange_Message8302 = []protoiface.ExtensionRangeV1{
-	{Start: 64, End: 536870911},
-}
-
-// Deprecated: Use Message8302.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message8302) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message8302
-}
-
 func (x *Message8302) GetField8339() string {
 	if x != nil && x.Field8339 != nil {
 		return *x.Field8339
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go
index f0f9740..efcfe86 100644
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -737,19 +736,6 @@
 	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{3}
 }
 
-var extRange_Message9182 = []protoiface.ExtensionRangeV1{
-	{Start: 3, End: 6},
-	{Start: 9, End: 15},
-	{Start: 23, End: 23},
-	{Start: 24, End: 24},
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use Message9182.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message9182) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message9182
-}
-
 func (x *Message9182) GetField9205() string {
 	if x != nil && x.Field9205 != nil {
 		return *x.Field9205
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go
index 4d6ef26..deba28c 100644
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -2619,15 +2618,6 @@
 	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{27}
 }
 
-var extRange_Message3069 = []protoiface.ExtensionRangeV1{
-	{Start: 10000, End: 536870911},
-}
-
-// Deprecated: Use Message3069.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message3069) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message3069
-}
-
 func (x *Message3069) GetField3374() *Message3061 {
 	if x != nil {
 		return x.Field3374
@@ -3966,15 +3956,6 @@
 	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{38}
 }
 
-var extRange_Message0 = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 2147483646},
-}
-
-// Deprecated: Use Message0.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message0) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message0
-}
-
 type Message971 struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go
index c57dd68..25d247a 100644
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go
+++ b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go
@@ -37,7 +37,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -1434,20 +1433,6 @@
 	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{9}
 }
 
-var extRange_Message12776 = []protoiface.ExtensionRangeV1{
-	{Start: 2, End: 2},
-	{Start: 3, End: 3},
-	{Start: 4, End: 4},
-	{Start: 5, End: 5},
-	{Start: 7, End: 7},
-	{Start: 9, End: 9},
-}
-
-// Deprecated: Use Message12776.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message12776) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message12776
-}
-
 func (x *Message12776) GetField12786() string {
 	if x != nil && x.Field12786 != nil {
 		return *x.Field12786
@@ -2675,15 +2660,6 @@
 	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{23}
 }
 
-var extRange_Message6109 = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use Message6109.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message6109) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message6109
-}
-
 func (x *Message6109) GetField6140() string {
 	if x != nil && x.Field6140 != nil {
 		return *x.Field6140
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index 051bf28..78298d7 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -42,7 +42,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -343,15 +342,6 @@
 	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_TestAllTypesProto2 = []protoiface.ExtensionRangeV1{
-	{Start: 120, End: 200},
-}
-
-// Deprecated: Use TestAllTypesProto2.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*TestAllTypesProto2) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_TestAllTypesProto2
-}
-
 func (x *TestAllTypesProto2) GetOptionalInt32() int32 {
 	if x != nil && x.OptionalInt32 != nil {
 		return *x.OptionalInt32
@@ -1528,15 +1518,6 @@
 	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 21}
 }
 
-var extRange_TestAllTypesProto2_MessageSetCorrect = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 2147483646},
-}
-
-// Deprecated: Use TestAllTypesProto2_MessageSetCorrect.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*TestAllTypesProto2_MessageSetCorrect) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_TestAllTypesProto2_MessageSetCorrect
-}
-
 type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/internal/testprotos/messageset/messagesetpb/message_set.pb.go b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
index d1c22b8..2769be5 100644
--- a/internal/testprotos/messageset/messagesetpb/message_set.pb.go
+++ b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
@@ -9,7 +9,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -54,15 +53,6 @@
 	return file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_MessageSet = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 2147483646},
-}
-
-// Deprecated: Use MessageSet.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*MessageSet) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_MessageSet
-}
-
 type MessageSetContainer struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/internal/testprotos/order/order.pb.go b/internal/testprotos/order/order.pb.go
index 07fa658..0d7482b 100644
--- a/internal/testprotos/order/order.pb.go
+++ b/internal/testprotos/order/order.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -63,15 +62,6 @@
 	return file_internal_testprotos_order_order_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_Message = []protoiface.ExtensionRangeV1{
-	{Start: 30, End: 40},
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message
-}
-
 func (x *Message) GetField_2() string {
 	if x != nil && x.Field_2 != nil {
 		return *x.Field_2
diff --git a/internal/testprotos/registry/test.pb.go b/internal/testprotos/registry/test.pb.go
index 533cd3c..c2613c7 100644
--- a/internal/testprotos/registry/test.pb.go
+++ b/internal/testprotos/registry/test.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -215,15 +214,6 @@
 	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_Message1 = []protoiface.ExtensionRangeV1{
-	{Start: 10, End: 536870911},
-}
-
-// Deprecated: Use Message1.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Message1) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Message1
-}
-
 type Message2 struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 2541f7f..22b3697 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -10,7 +10,6 @@
 import (
 	proto "google.golang.org/protobuf/proto"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -1327,15 +1326,6 @@
 	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{4}
 }
 
-var extRange_TestAllExtensions = []protoiface.ExtensionRangeV1{
-	{Start: 1, End: 536870911},
-}
-
-// Deprecated: Use TestAllExtensions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*TestAllExtensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_TestAllExtensions
-}
-
 type OptionalGroup struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2099,15 +2089,6 @@
 	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
 }
 
-var extRange_TestPackedExtensions = []protoiface.ExtensionRangeV1{
-	{Start: 1, End: 536870911},
-}
-
-// Deprecated: Use TestPackedExtensions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*TestPackedExtensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_TestPackedExtensions
-}
-
 type TestUnpackedExtensions struct {
 	state           protoimpl.MessageState
 	sizeCache       protoimpl.SizeCache
@@ -2147,15 +2128,6 @@
 	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
 }
 
-var extRange_TestUnpackedExtensions = []protoiface.ExtensionRangeV1{
-	{Start: 1, End: 536870911},
-}
-
-// Deprecated: Use TestUnpackedExtensions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*TestUnpackedExtensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_TestUnpackedExtensions
-}
-
 // Test that RPC services work.
 type FooRequest struct {
 	state         protoimpl.MessageState
diff --git a/internal/testprotos/textpb2/test.pb.go b/internal/testprotos/textpb2/test.pb.go
index 65d351b..62fb554 100644
--- a/internal/testprotos/textpb2/test.pb.go
+++ b/internal/testprotos/textpb2/test.pb.go
@@ -11,7 +11,6 @@
 
 import (
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	anypb "google.golang.org/protobuf/types/known/anypb"
 	durationpb "google.golang.org/protobuf/types/known/durationpb"
@@ -994,15 +993,6 @@
 	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{10}
 }
 
-var extRange_Extensions = []protoiface.ExtensionRangeV1{
-	{Start: 20, End: 100},
-}
-
-// Deprecated: Use Extensions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*Extensions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_Extensions
-}
-
 func (x *Extensions) GetOptString() string {
 	if x != nil && x.OptString != nil {
 		return *x.OptString
@@ -1101,15 +1091,6 @@
 	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{12}
 }
 
-var extRange_MessageSet = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 2147483646},
-}
-
-// Deprecated: Use MessageSet.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*MessageSet) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_MessageSet
-}
-
 type MessageSetExtension struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1196,15 +1177,6 @@
 	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{14}
 }
 
-var extRange_FakeMessageSet = []protoiface.ExtensionRangeV1{
-	{Start: 4, End: 536870911},
-}
-
-// Deprecated: Use FakeMessageSet.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*FakeMessageSet) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_FakeMessageSet
-}
-
 type FakeMessageSetExtension struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index f77239f..abe4ab5 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"
-	protoiface "google.golang.org/protobuf/runtime/protoiface"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
 	sync "sync"
@@ -829,15 +828,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}
 }
 
-var extRange_ExtensionRangeOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*ExtensionRangeOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_ExtensionRangeOptions
-}
-
 func (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {
 	if x != nil {
 		return x.UninterpretedOption
@@ -1520,15 +1510,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}
 }
 
-var extRange_FileOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use FileOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*FileOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_FileOptions
-}
-
 func (x *FileOptions) GetJavaPackage() string {
 	if x != nil && x.JavaPackage != nil {
 		return *x.JavaPackage
@@ -1776,15 +1757,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}
 }
 
-var extRange_MessageOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use MessageOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*MessageOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_MessageOptions
-}
-
 func (x *MessageOptions) GetMessageSetWireFormat() bool {
 	if x != nil && x.MessageSetWireFormat != nil {
 		return *x.MessageSetWireFormat
@@ -1930,15 +1902,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}
 }
 
-var extRange_FieldOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use FieldOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*FieldOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_FieldOptions
-}
-
 func (x *FieldOptions) GetCtype() FieldOptions_CType {
 	if x != nil && x.Ctype != nil {
 		return *x.Ctype
@@ -2030,15 +1993,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}
 }
 
-var extRange_OneofOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use OneofOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*OneofOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_OneofOptions
-}
-
 func (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
 	if x != nil {
 		return x.UninterpretedOption
@@ -2101,15 +2055,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}
 }
 
-var extRange_EnumOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use EnumOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*EnumOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_EnumOptions
-}
-
 func (x *EnumOptions) GetAllowAlias() bool {
 	if x != nil && x.AllowAlias != nil {
 		return *x.AllowAlias
@@ -2183,15 +2128,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}
 }
 
-var extRange_EnumValueOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*EnumValueOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_EnumValueOptions
-}
-
 func (x *EnumValueOptions) GetDeprecated() bool {
 	if x != nil && x.Deprecated != nil {
 		return *x.Deprecated
@@ -2258,15 +2194,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}
 }
 
-var extRange_ServiceOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*ServiceOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_ServiceOptions
-}
-
 func (x *ServiceOptions) GetDeprecated() bool {
 	if x != nil && x.Deprecated != nil {
 		return *x.Deprecated
@@ -2335,15 +2262,6 @@
 	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}
 }
 
-var extRange_MethodOptions = []protoiface.ExtensionRangeV1{
-	{Start: 1000, End: 536870911},
-}
-
-// Deprecated: Use MethodOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
-func (*MethodOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return extRange_MethodOptions
-}
-
 func (x *MethodOptions) GetDeprecated() bool {
 	if x != nil && x.Deprecated != nil {
 		return *x.Deprecated
