cmd/protoc-gen-go: lazily GZIP-encode the raw descriptor

This reduces the init-time cost slightly since the GZIP'd
raw descriptor is constructed lazily on demand.

Change-Id: I482c6a2201b8786e425d7dee5612fdfd60ab1500
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/169917
Reviewed-by: Herbie Ong <herbie@google.com>
diff --git a/cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go b/cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go
index 39887ad..12279d6 100644
--- a/cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go
+++ b/cmd/protoc-gen-go-grpc/testdata/grpc/deprecation.pb.go
@@ -7,10 +7,14 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
-var xxx_File_grpc_deprecation_proto_rawdesc = []byte{
-	// 245 bytes of the wire-encoded FileDescriptorProto
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
+var File_grpc_deprecation_proto protoreflect.FileDescriptor
+
+var xxx_File_grpc_deprecation_proto_rawDesc = []byte{
 	0x0a, 0x16, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69,
 	0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x1a, 0x0f, 0x67,
@@ -29,11 +33,17 @@
 	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_grpc_deprecation_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_grpc_deprecation_proto_rawdesc)
+var (
+	xxx_File_grpc_deprecation_proto_rawDesc_once sync.Once
+	xxx_File_grpc_deprecation_proto_rawDesc_data = xxx_File_grpc_deprecation_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_grpc_deprecation_proto protoreflect.FileDescriptor
+func xxx_File_grpc_deprecation_proto_rawDescGZIP() []byte {
+	xxx_File_grpc_deprecation_proto_rawDesc_once.Do(func() {
+		xxx_File_grpc_deprecation_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_grpc_deprecation_proto_rawDesc_data)
+	})
+	return xxx_File_grpc_deprecation_proto_rawDesc_data
+}
 
 var xxx_File_grpc_deprecation_proto_goTypes = []interface{}{
 	(*Request)(nil),  // 0: goproto.protoc.grpc.Request
@@ -51,12 +61,13 @@
 	}
 	xxx_File_grpc_grpc_proto_init()
 	File_grpc_deprecation_proto = protoimpl.FileBuilder{
-		RawDescriptor:     xxx_File_grpc_deprecation_proto_rawdesc,
+		RawDescriptor:     xxx_File_grpc_deprecation_proto_rawDesc,
 		GoTypes:           xxx_File_grpc_deprecation_proto_goTypes,
 		DependencyIndexes: xxx_File_grpc_deprecation_proto_depIdxs,
 		FilesRegistry:     protoregistry.GlobalFiles,
 		TypesRegistry:     protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_grpc_deprecation_proto_rawDesc = nil
 	xxx_File_grpc_deprecation_proto_goTypes = nil
 	xxx_File_grpc_deprecation_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go b/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
index 4367cbd..c438dfa 100644
--- a/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
+++ b/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Request struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,7 +27,7 @@
 
 // Deprecated: Use Request.ProtoReflect.Type instead.
 func (*Request) Descriptor() ([]byte, []int) {
-	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_grpc_grpc_proto_rawDescGZIP(), []int{0}
 }
 
 type Response struct {
@@ -42,11 +45,12 @@
 
 // Deprecated: Use Response.ProtoReflect.Type instead.
 func (*Response) Descriptor() ([]byte, []int) {
-	return xxx_File_grpc_grpc_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_grpc_grpc_proto_rawDescGZIP(), []int{1}
 }
 
-var xxx_File_grpc_grpc_proto_rawdesc = []byte{
-	// 466 bytes of the wire-encoded FileDescriptorProto
+var File_grpc_grpc_proto protoreflect.FileDescriptor
+
+var xxx_File_grpc_grpc_proto_rawDesc = []byte{
 	0x0a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x63, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
@@ -79,11 +83,17 @@
 	0x6f, 0x33,
 }
 
-var xxx_File_grpc_grpc_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_grpc_grpc_proto_rawdesc)
+var (
+	xxx_File_grpc_grpc_proto_rawDesc_once sync.Once
+	xxx_File_grpc_grpc_proto_rawDesc_data = xxx_File_grpc_grpc_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_grpc_grpc_proto protoreflect.FileDescriptor
+func xxx_File_grpc_grpc_proto_rawDescGZIP() []byte {
+	xxx_File_grpc_grpc_proto_rawDesc_once.Do(func() {
+		xxx_File_grpc_grpc_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_grpc_grpc_proto_rawDesc_data)
+	})
+	return xxx_File_grpc_grpc_proto_rawDesc_data
+}
 
 var xxx_File_grpc_grpc_proto_messageTypes = make([]protoimpl.MessageType, 2)
 var xxx_File_grpc_grpc_proto_goTypes = []interface{}{
@@ -107,13 +117,14 @@
 		return
 	}
 	File_grpc_grpc_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_grpc_grpc_proto_rawdesc,
+		RawDescriptor:      xxx_File_grpc_grpc_proto_rawDesc,
 		GoTypes:            xxx_File_grpc_grpc_proto_goTypes,
 		DependencyIndexes:  xxx_File_grpc_grpc_proto_depIdxs,
 		MessageOutputTypes: xxx_File_grpc_grpc_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_grpc_grpc_proto_rawDesc = nil
 	xxx_File_grpc_grpc_proto_goTypes = nil
 	xxx_File_grpc_grpc_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
index f831241..95d7072 100644
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ b/cmd/protoc-gen-go/internal_gengo/main.go
@@ -18,14 +18,19 @@
 
 	"github.com/golang/protobuf/v2/internal/encoding/tag"
 	"github.com/golang/protobuf/v2/internal/fieldnum"
-	"github.com/golang/protobuf/v2/proto"
 	"github.com/golang/protobuf/v2/protogen"
 	"github.com/golang/protobuf/v2/reflect/protoreflect"
 
 	descriptorpb "github.com/golang/protobuf/v2/types/descriptor"
 )
 
+// minimumVersion is minimum version of the v2 proto package that is required.
+// This is incremented every time the generated code relies on some property
+// in the proto package that was introduced in a later version.
+const minimumVersion = 0
+
 const (
+	syncPackage          = protogen.GoImportPath("sync")
 	mathPackage          = protogen.GoImportPath("math")
 	protoifacePackage    = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoiface")
 	protoimplPackage     = protogen.GoImportPath("github.com/golang/protobuf/v2/runtime/protoimpl")
@@ -37,10 +42,6 @@
 type fileInfo struct {
 	*protogen.File
 
-	// vars containing the raw wire-encoded and compressed FileDescriptorProto.
-	descriptorRawVar  string
-	descriptorGzipVar string
-
 	allEnums         []*protogen.Enum
 	allEnumsByPtr    map[*protogen.Enum]int // value is index into allEnums
 	allMessages      []*protogen.Message
@@ -82,10 +83,6 @@
 		}
 	}
 
-	// Determine the name of the var holding the file descriptor.
-	f.descriptorRawVar = "xxx_" + f.GoDescriptorIdent.GoName + "_rawdesc"
-	f.descriptorGzipVar = f.descriptorRawVar + "_gzipped"
-
 	g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
 	if f.Proto.GetOptions().GetDeprecated() {
 		g.P("// ", f.Desc.Path(), " is a deprecated file.")
@@ -101,6 +98,10 @@
 	g.P("package ", f.GoPackageName)
 	g.P()
 
+	// Emit a static check that enforces a minimum version of the proto package.
+	g.P("const _ = ", protoimplPackage.Ident("EnforceVersion"), "(", protoimplPackage.Ident("Version"), " - ", minimumVersion, ")")
+	g.P()
+
 	for i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {
 		genImport(gen, g, f, imps.Get(i))
 	}
@@ -112,7 +113,6 @@
 	}
 	genExtensions(gen, g, f)
 
-	genFileDescriptor(gen, g, f)
 	genReflectFileDescriptor(gen, g, f)
 
 	return g
@@ -206,52 +206,6 @@
 	g.P()
 }
 
-func genFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	// TODO: Replace this with v2 Clone.
-	descProto := new(descriptorpb.FileDescriptorProto)
-	b, err := proto.Marshal(f.Proto)
-	if err != nil {
-		gen.Error(err)
-		return
-	}
-	if err := proto.Unmarshal(b, descProto); err != nil {
-		gen.Error(err)
-		return
-	}
-
-	// Trim the source_code_info from the descriptor.
-	descProto.SourceCodeInfo = nil
-	b, err = proto.MarshalOptions{Deterministic: true}.Marshal(descProto)
-	if err != nil {
-		gen.Error(err)
-		return
-	}
-
-	g.P("var ", f.descriptorRawVar, " = []byte{")
-	g.P("// ", len(b), " bytes of the wire-encoded FileDescriptorProto")
-	for len(b) > 0 {
-		n := 16
-		if n > len(b) {
-			n = len(b)
-		}
-
-		s := ""
-		for _, c := range b[:n] {
-			s += fmt.Sprintf("0x%02x,", c)
-		}
-		g.P(s)
-
-		b = b[n:]
-	}
-	g.P("}")
-	g.P()
-
-	// TODO: Modify CompressGZIP to lazy encode? Currently, the GZIP'd form
-	// is eagerly registered in v1, preventing any benefit from lazy encoding.
-	g.P("var ", f.descriptorGzipVar, " = ", protoimplPackage.Ident("X"), ".CompressGZIP(", f.descriptorRawVar, ")")
-	g.P()
-}
-
 func genEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, enum *protogen.Enum) {
 	g.PrintLeadingComments(enum.Location)
 	g.Annotate(enum.GoIdent.GoName, enum.Location)
@@ -324,7 +278,7 @@
 	}
 	g.P("// Deprecated: Use ", enum.GoIdent, ".Type instead.")
 	g.P("func (", enum.GoIdent, ") EnumDescriptor() ([]byte, []int) {")
-	g.P("return ", f.descriptorGzipVar, ", []int{", strings.Join(indexes, ","), "}")
+	g.P("return ", rawDescVarName(f), "GZIP(), []int{", strings.Join(indexes, ","), "}")
 	g.P("}")
 	g.P()
 
@@ -431,7 +385,7 @@
 	}
 	g.P("// Deprecated: Use ", message.GoIdent, ".ProtoReflect.Type instead.")
 	g.P("func (*", message.GoIdent, ") Descriptor() ([]byte, []int) {")
-	g.P("return ", f.descriptorGzipVar, ", []int{", strings.Join(indexes, ","), "}")
+	g.P("return ", rawDescVarName(f), "GZIP(), []int{", strings.Join(indexes, ","), "}")
 	g.P("}")
 	g.P()
 
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index cf02078..69b5acd 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -9,30 +9,20 @@
 	"math"
 	"strings"
 
+	"github.com/golang/protobuf/v2/proto"
 	"github.com/golang/protobuf/v2/protogen"
 	"github.com/golang/protobuf/v2/reflect/protoreflect"
+
+	descriptorpb "github.com/golang/protobuf/v2/types/descriptor"
 )
 
-// TODO: Remove special-casing for descriptor proto.
-func isDescriptor(f *protogen.File) bool {
-	return f.Desc.Path() == "google/protobuf/descriptor.proto" && f.Desc.Package() == "google.protobuf"
-}
-
-// minimumVersion is minimum version of the v2 proto package that is required.
-// This is incremented every time the generated code relies on some property
-// in the proto package that was introduced in a later version.
-const minimumVersion = 0
-
 // TODO: Add support for proto options.
 
 func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	// Emit a static check that enforces a minimum version of the proto package.
-	// TODO: This should appear higher up in the Go source file.
-	g.P("const _ = ", protoimplPackage.Ident("EnforceVersion"), "(", protoimplPackage.Ident("Version"), " - ", minimumVersion, ")")
-
 	g.P("var ", f.GoDescriptorIdent, " ", protoreflectPackage.Ident("FileDescriptor"))
 	g.P()
 
+	genFileDescriptor(gen, g, f)
 	if len(f.allEnums) > 0 {
 		g.P("var ", enumTypesVarName(f), " = make([]", protoreflectPackage.Ident("EnumType"), ",", len(f.allEnums), ")")
 	}
@@ -154,7 +144,7 @@
 	}
 
 	g.P(f.GoDescriptorIdent, " = ", protoimplPackage.Ident("FileBuilder"), "{")
-	g.P("RawDescriptor: ", f.descriptorRawVar, ",")
+	g.P("RawDescriptor: ", rawDescVarName(f), ",")
 	g.P("GoTypes: ", goTypesVarName(f), ",")
 	g.P("DependencyIndexes: ", depIdxsVarName(f), ",")
 	if len(f.allExtensions) > 0 {
@@ -186,11 +176,69 @@
 		}
 	}
 
-	g.P(goTypesVarName(f), " = nil") // allow GC to reclaim resource
-	g.P(depIdxsVarName(f), " = nil") // allow GC to reclaim resource
+	// Set inputs to nil to allow GC to reclaim resources.
+	g.P(rawDescVarName(f), " = nil")
+	g.P(goTypesVarName(f), " = nil")
+	g.P(depIdxsVarName(f), " = nil")
 	g.P("}")
 }
 
+func genFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
+	// TODO: Replace this with v2 Clone.
+	descProto := new(descriptorpb.FileDescriptorProto)
+	b, err := proto.Marshal(f.Proto)
+	if err != nil {
+		gen.Error(err)
+		return
+	}
+	if err := proto.Unmarshal(b, descProto); err != nil {
+		gen.Error(err)
+		return
+	}
+
+	// Trim the source_code_info from the descriptor.
+	descProto.SourceCodeInfo = nil
+	b, err = proto.MarshalOptions{Deterministic: true}.Marshal(descProto)
+	if err != nil {
+		gen.Error(err)
+		return
+	}
+
+	g.P("var ", rawDescVarName(f), " = []byte{")
+	for len(b) > 0 {
+		n := 16
+		if n > len(b) {
+			n = len(b)
+		}
+
+		s := ""
+		for _, c := range b[:n] {
+			s += fmt.Sprintf("0x%02x,", c)
+		}
+		g.P(s)
+
+		b = b[n:]
+	}
+	g.P("}")
+	g.P()
+
+	onceVar := rawDescVarName(f) + "_once"
+	dataVar := rawDescVarName(f) + "_data"
+	g.P("var (")
+	g.P(onceVar, " ", syncPackage.Ident("Once"))
+	g.P(dataVar, " = ", rawDescVarName(f))
+	g.P(")")
+	g.P()
+
+	g.P("func ", rawDescVarName(f), "GZIP() []byte {")
+	g.P(onceVar, ".Do(func() {")
+	g.P(dataVar, " = ", protoimplPackage.Ident("X"), ".CompressGZIP(", dataVar, ")")
+	g.P("})")
+	g.P("return ", dataVar)
+	g.P("}")
+	g.P()
+}
+
 func genReflectEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, enum *protogen.Enum) {
 	idx := f.allEnumsByPtr[enum]
 	typesVar := enumTypesVarName(f)
@@ -210,6 +258,9 @@
 	g.P("}")
 }
 
+func rawDescVarName(f *fileInfo) string {
+	return "xxx_" + f.GoDescriptorIdent.GoName + "_rawDesc"
+}
 func goTypesVarName(f *fileInfo) string {
 	return "xxx_" + f.GoDescriptorIdent.GoName + "_goTypes"
 }
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index 9871f32..b17f3ea 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type AnnotationsTestEnum int32
 
 const (
@@ -52,7 +55,7 @@
 
 // Deprecated: Use AnnotationsTestEnum.Type instead.
 func (AnnotationsTestEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_annotations_annotations_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_annotations_annotations_proto_rawDescGZIP(), []int{0}
 }
 
 type AnnotationsTestMessage struct {
@@ -71,7 +74,7 @@
 
 // Deprecated: Use AnnotationsTestMessage.ProtoReflect.Type instead.
 func (*AnnotationsTestMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_annotations_annotations_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_annotations_annotations_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *AnnotationsTestMessage) GetAnnotationsTestField() string {
@@ -81,8 +84,9 @@
 	return ""
 }
 
-var xxx_File_annotations_annotations_proto_rawdesc = []byte{
-	// 265 bytes of the wire-encoded FileDescriptorProto
+var File_annotations_annotations_proto protoreflect.FileDescriptor
+
+var xxx_File_annotations_annotations_proto_rawDesc = []byte{
 	0x0a, 0x1d, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e,
 	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 	0x1a, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
@@ -102,11 +106,17 @@
 	0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
 }
 
-var xxx_File_annotations_annotations_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_annotations_annotations_proto_rawdesc)
+var (
+	xxx_File_annotations_annotations_proto_rawDesc_once sync.Once
+	xxx_File_annotations_annotations_proto_rawDesc_data = xxx_File_annotations_annotations_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_annotations_annotations_proto protoreflect.FileDescriptor
+func xxx_File_annotations_annotations_proto_rawDescGZIP() []byte {
+	xxx_File_annotations_annotations_proto_rawDesc_once.Do(func() {
+		xxx_File_annotations_annotations_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_annotations_annotations_proto_rawDesc_data)
+	})
+	return xxx_File_annotations_annotations_proto_rawDesc_data
+}
 
 var xxx_File_annotations_annotations_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_annotations_annotations_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -122,7 +132,7 @@
 		return
 	}
 	File_annotations_annotations_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_annotations_annotations_proto_rawdesc,
+		RawDescriptor:      xxx_File_annotations_annotations_proto_rawDesc,
 		GoTypes:            xxx_File_annotations_annotations_proto_goTypes,
 		DependencyIndexes:  xxx_File_annotations_annotations_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_annotations_annotations_proto_enumTypes,
@@ -130,6 +140,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_annotations_annotations_proto_rawDesc = nil
 	xxx_File_annotations_annotations_proto_goTypes = nil
 	xxx_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 321d27b..9c2596f 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:326 end:345} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:362 end:409} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1570 end:1592} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:1603 end:1623} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2467 end:2490}
\ No newline at end of file
+annotation:{path:5 path:0 source_file:"annotations/annotations.proto" begin:398 end:417} annotation:{path:5 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:434 end:481} annotation:{path:4 path:0 source_file:"annotations/annotations.proto" begin:1640 end:1662} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:1673 end:1693} annotation:{path:4 path:0 path:2 path:0 source_file:"annotations/annotations.proto" begin:2535 end:2558}
\ 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 5f29d2f..55aa839 100644
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
@@ -9,8 +9,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // COMMENT: Message1
 type Message1 struct {
 	// COMMENT: Field1A
@@ -35,7 +38,7 @@
 
 // Deprecated: Use Message1.ProtoReflect.Type instead.
 func (*Message1) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Message1) GetField1A() string {
@@ -92,7 +95,7 @@
 
 // Deprecated: Use Message2.ProtoReflect.Type instead.
 func (*Message2) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{1}
 }
 
 // COMMENT: Message1A
@@ -111,7 +114,7 @@
 
 // Deprecated: Use Message1_Message1A.ProtoReflect.Type instead.
 func (*Message1_Message1A) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // COMMENT: Message1B
@@ -130,7 +133,7 @@
 
 // Deprecated: Use Message1_Message1B.ProtoReflect.Type instead.
 func (*Message1_Message1B) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{0, 1}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{0, 1}
 }
 
 // COMMENT: Message2A
@@ -149,7 +152,7 @@
 
 // Deprecated: Use Message2_Message2A.ProtoReflect.Type instead.
 func (*Message2_Message2A) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 0}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{1, 0}
 }
 
 // COMMENT: Message2B
@@ -168,11 +171,12 @@
 
 // Deprecated: Use Message2_Message2B.ProtoReflect.Type instead.
 func (*Message2_Message2B) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_comments_proto_rawdesc_gzipped, []int{1, 1}
+	return xxx_File_comments_comments_proto_rawDescGZIP(), []int{1, 1}
 }
 
-var xxx_File_comments_comments_proto_rawdesc = []byte{
-	// 272 bytes of the wire-encoded FileDescriptorProto
+var File_comments_comments_proto protoreflect.FileDescriptor
+
+var xxx_File_comments_comments_proto_rawDesc = []byte{
 	0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
 	0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
@@ -192,11 +196,17 @@
 	0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73,
 }
 
-var xxx_File_comments_comments_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_comments_comments_proto_rawdesc)
+var (
+	xxx_File_comments_comments_proto_rawDesc_once sync.Once
+	xxx_File_comments_comments_proto_rawDesc_data = xxx_File_comments_comments_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_comments_comments_proto protoreflect.FileDescriptor
+func xxx_File_comments_comments_proto_rawDescGZIP() []byte {
+	xxx_File_comments_comments_proto_rawDesc_once.Do(func() {
+		xxx_File_comments_comments_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_comments_comments_proto_rawDesc_data)
+	})
+	return xxx_File_comments_comments_proto_rawDesc_data
+}
 
 var xxx_File_comments_comments_proto_messageTypes = make([]protoimpl.MessageType, 6)
 var xxx_File_comments_comments_proto_goTypes = []interface{}{
@@ -215,13 +225,14 @@
 		return
 	}
 	File_comments_comments_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_comments_comments_proto_rawdesc,
+		RawDescriptor:      xxx_File_comments_comments_proto_rawDesc,
 		GoTypes:            xxx_File_comments_comments_proto_goTypes,
 		DependencyIndexes:  xxx_File_comments_comments_proto_depIdxs,
 		MessageOutputTypes: xxx_File_comments_comments_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_comments_comments_proto_rawDesc = nil
 	xxx_File_comments_comments_proto_goTypes = nil
 	xxx_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 d957b09..cf11d52 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type DeprecatedEnum int32 // Deprecated: Do not use.
 const (
 	DeprecatedEnum_DEPRECATED DeprecatedEnum = 0 // Deprecated: Do not use.
@@ -37,7 +40,7 @@
 
 // Deprecated: Use DeprecatedEnum.Type instead.
 func (DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_comments_deprecated_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_comments_deprecated_proto_rawDescGZIP(), []int{0}
 }
 
 // Deprecated: Do not use.
@@ -57,7 +60,7 @@
 
 // Deprecated: Use DeprecatedMessage.ProtoReflect.Type instead.
 func (*DeprecatedMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_comments_deprecated_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_comments_deprecated_proto_rawDescGZIP(), []int{0}
 }
 
 // Deprecated: Do not use.
@@ -68,8 +71,9 @@
 	return ""
 }
 
-var xxx_File_comments_deprecated_proto_rawdesc = []byte{
-	// 246 bytes of the wire-encoded FileDescriptorProto
+var File_comments_deprecated_proto protoreflect.FileDescriptor
+
+var xxx_File_comments_deprecated_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65,
 	0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
@@ -88,11 +92,17 @@
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_comments_deprecated_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_comments_deprecated_proto_rawdesc)
+var (
+	xxx_File_comments_deprecated_proto_rawDesc_once sync.Once
+	xxx_File_comments_deprecated_proto_rawDesc_data = xxx_File_comments_deprecated_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_comments_deprecated_proto protoreflect.FileDescriptor
+func xxx_File_comments_deprecated_proto_rawDescGZIP() []byte {
+	xxx_File_comments_deprecated_proto_rawDesc_once.Do(func() {
+		xxx_File_comments_deprecated_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_comments_deprecated_proto_rawDesc_data)
+	})
+	return xxx_File_comments_deprecated_proto_rawDesc_data
+}
 
 var xxx_File_comments_deprecated_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_comments_deprecated_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -108,7 +118,7 @@
 		return
 	}
 	File_comments_deprecated_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_comments_deprecated_proto_rawdesc,
+		RawDescriptor:      xxx_File_comments_deprecated_proto_rawDesc,
 		GoTypes:            xxx_File_comments_deprecated_proto_goTypes,
 		DependencyIndexes:  xxx_File_comments_deprecated_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_comments_deprecated_proto_enumTypes,
@@ -116,6 +126,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_comments_deprecated_proto_rawDesc = nil
 	xxx_File_comments_deprecated_proto_goTypes = nil
 	xxx_File_comments_deprecated_proto_depIdxs = nil
 }
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 58f6021..1b7cd9a 100644
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type BaseMessage struct {
 	Field                  *string                     `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"`
 	XXX_NoUnkeyedLiteral   struct{}                    `json:"-"`
@@ -27,7 +30,7 @@
 
 // Deprecated: Use BaseMessage.ProtoReflect.Type instead.
 func (*BaseMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_base_base_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_base_base_proto_rawDescGZIP(), []int{0}
 }
 
 var extRange_BaseMessage = []protoiface.ExtensionRangeV1{
@@ -63,7 +66,7 @@
 
 // Deprecated: Use MessageSetWireFormatMessage.ProtoReflect.Type instead.
 func (*MessageSetWireFormatMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_base_base_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_extensions_base_base_proto_rawDescGZIP(), []int{1}
 }
 
 var extRange_MessageSetWireFormatMessage = []protoiface.ExtensionRangeV1{
@@ -75,8 +78,9 @@
 	return extRange_MessageSetWireFormatMessage
 }
 
-var xxx_File_extensions_base_base_proto_rawdesc = []byte{
-	// 233 bytes of the wire-encoded FileDescriptorProto
+var File_extensions_base_base_proto protoreflect.FileDescriptor
+
+var xxx_File_extensions_base_base_proto_rawDesc = []byte{
 	0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73,
 	0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74,
@@ -94,11 +98,17 @@
 	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65,
 }
 
-var xxx_File_extensions_base_base_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_extensions_base_base_proto_rawdesc)
+var (
+	xxx_File_extensions_base_base_proto_rawDesc_once sync.Once
+	xxx_File_extensions_base_base_proto_rawDesc_data = xxx_File_extensions_base_base_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_extensions_base_base_proto protoreflect.FileDescriptor
+func xxx_File_extensions_base_base_proto_rawDescGZIP() []byte {
+	xxx_File_extensions_base_base_proto_rawDesc_once.Do(func() {
+		xxx_File_extensions_base_base_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_extensions_base_base_proto_rawDesc_data)
+	})
+	return xxx_File_extensions_base_base_proto_rawDesc_data
+}
 
 var xxx_File_extensions_base_base_proto_messageTypes = make([]protoimpl.MessageType, 2)
 var xxx_File_extensions_base_base_proto_goTypes = []interface{}{
@@ -113,13 +123,14 @@
 		return
 	}
 	File_extensions_base_base_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_extensions_base_base_proto_rawdesc,
+		RawDescriptor:      xxx_File_extensions_base_base_proto_rawDesc,
 		GoTypes:            xxx_File_extensions_base_base_proto_goTypes,
 		DependencyIndexes:  xxx_File_extensions_base_base_proto_depIdxs,
 		MessageOutputTypes: xxx_File_extensions_base_base_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_extensions_base_base_proto_rawDesc = nil
 	xxx_File_extensions_base_base_proto_goTypes = nil
 	xxx_File_extensions_base_base_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 b7c3139..851b7ee 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -10,8 +10,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -55,7 +58,7 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{0}
 }
 
 type Message struct {
@@ -74,7 +77,7 @@
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Message) GetData() []byte {
@@ -100,7 +103,7 @@
 
 // Deprecated: Use ExtensionGroup.ProtoReflect.Type instead.
 func (*ExtensionGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *ExtensionGroup) GetExtensionGroup() string {
@@ -126,7 +129,7 @@
 
 // Deprecated: Use ExtendingMessage.ProtoReflect.Type instead.
 func (*ExtendingMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{2}
 }
 
 type RepeatedGroup struct {
@@ -145,7 +148,7 @@
 
 // Deprecated: Use RepeatedGroup.ProtoReflect.Type instead.
 func (*RepeatedGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *RepeatedGroup) GetRepeatedXGroup() []string {
@@ -172,7 +175,7 @@
 
 // Deprecated: Use Extendable.ProtoReflect.Type instead.
 func (*Extendable) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{4}
 }
 
 var extRange_Extendable = []protoiface.ExtensionRangeV1{
@@ -200,7 +203,7 @@
 
 // Deprecated: Use MessageSetWireFormatExtension.ProtoReflect.Type instead.
 func (*MessageSetWireFormatExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{5}
 }
 
 type Message_M struct {
@@ -218,7 +221,7 @@
 
 // Deprecated: Use Message_M.ProtoReflect.Type instead.
 func (*Message_M) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ExtendingMessage_ExtendingMessageSubmessage struct {
@@ -240,7 +243,7 @@
 
 // Deprecated: Use ExtendingMessage_ExtendingMessageSubmessage.ProtoReflect.Type instead.
 func (*ExtendingMessage_ExtendingMessageSubmessage) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_ext_ext_proto_rawdesc_gzipped, []int{2, 0}
+	return xxx_File_extensions_ext_ext_proto_rawDescGZIP(), []int{2, 0}
 }
 
 var xxx_File_extensions_ext_ext_proto_extDescs = []protoiface.ExtensionDescV1{
@@ -730,8 +733,9 @@
 	// extend goproto.protoc.extension.base.MessageSetWireFormatMessage { optional goproto.protoc.extension.ext.MessageSetWireFormatExtension message_set_extension = 100; }
 	E_MessageSetWireFormatExtension_MessageSetExtension = &xxx_File_extensions_ext_ext_proto_extDescs[43]
 )
-var xxx_File_extensions_ext_ext_proto_rawdesc = []byte{
-	// 4996 bytes of the wire-encoded FileDescriptorProto
+var File_extensions_ext_ext_proto protoreflect.FileDescriptor
+
+var xxx_File_extensions_ext_ext_proto_rawDesc = []byte{
 	0x0a, 0x18, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74,
 	0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
@@ -1047,11 +1051,17 @@
 	0x2f, 0x65, 0x78, 0x74,
 }
 
-var xxx_File_extensions_ext_ext_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_extensions_ext_ext_proto_rawdesc)
+var (
+	xxx_File_extensions_ext_ext_proto_rawDesc_once sync.Once
+	xxx_File_extensions_ext_ext_proto_rawDesc_data = xxx_File_extensions_ext_ext_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_extensions_ext_ext_proto protoreflect.FileDescriptor
+func xxx_File_extensions_ext_ext_proto_rawDescGZIP() []byte {
+	xxx_File_extensions_ext_ext_proto_rawDesc_once.Do(func() {
+		xxx_File_extensions_ext_ext_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_extensions_ext_ext_proto_rawDesc_data)
+	})
+	return xxx_File_extensions_ext_ext_proto_rawDesc_data
+}
 
 var xxx_File_extensions_ext_ext_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_extensions_ext_ext_proto_messageTypes = make([]protoimpl.MessageType, 8)
@@ -1135,7 +1145,7 @@
 	}
 	extensionTypes := make([]protoreflect.ExtensionType, 44)
 	File_extensions_ext_ext_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_extensions_ext_ext_proto_rawdesc,
+		RawDescriptor:        xxx_File_extensions_ext_ext_proto_rawDesc,
 		GoTypes:              xxx_File_extensions_ext_ext_proto_goTypes,
 		DependencyIndexes:    xxx_File_extensions_ext_ext_proto_depIdxs,
 		LegacyExtensions:     xxx_File_extensions_ext_ext_proto_extDescs,
@@ -1145,6 +1155,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_extensions_ext_ext_proto_rawDesc = nil
 	xxx_File_extensions_ext_ext_proto_goTypes = nil
 	xxx_File_extensions_ext_ext_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
index 988acb5..ace02cc 100644
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type ExtraMessage struct {
 	Data                 []byte   `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -25,7 +28,7 @@
 
 // Deprecated: Use ExtraMessage.ProtoReflect.Type instead.
 func (*ExtraMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_extra_extra_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_extra_extra_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *ExtraMessage) GetData() []byte {
@@ -35,8 +38,9 @@
 	return nil
 }
 
-var xxx_File_extensions_extra_extra_proto_rawdesc = []byte{
-	// 175 bytes of the wire-encoded FileDescriptorProto
+var File_extensions_extra_extra_proto protoreflect.FileDescriptor
+
+var xxx_File_extensions_extra_extra_proto_rawDesc = []byte{
 	0x0a, 0x1c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74,
 	0x72, 0x61, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e,
 	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65,
@@ -50,11 +54,17 @@
 	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61,
 }
 
-var xxx_File_extensions_extra_extra_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_extensions_extra_extra_proto_rawdesc)
+var (
+	xxx_File_extensions_extra_extra_proto_rawDesc_once sync.Once
+	xxx_File_extensions_extra_extra_proto_rawDesc_data = xxx_File_extensions_extra_extra_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_extensions_extra_extra_proto protoreflect.FileDescriptor
+func xxx_File_extensions_extra_extra_proto_rawDescGZIP() []byte {
+	xxx_File_extensions_extra_extra_proto_rawDesc_once.Do(func() {
+		xxx_File_extensions_extra_extra_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_extensions_extra_extra_proto_rawDesc_data)
+	})
+	return xxx_File_extensions_extra_extra_proto_rawDesc_data
+}
 
 var xxx_File_extensions_extra_extra_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_extensions_extra_extra_proto_goTypes = []interface{}{
@@ -68,13 +78,14 @@
 		return
 	}
 	File_extensions_extra_extra_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_extensions_extra_extra_proto_rawdesc,
+		RawDescriptor:      xxx_File_extensions_extra_extra_proto_rawDesc,
 		GoTypes:            xxx_File_extensions_extra_extra_proto_goTypes,
 		DependencyIndexes:  xxx_File_extensions_extra_extra_proto_depIdxs,
 		MessageOutputTypes: xxx_File_extensions_extra_extra_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_extensions_extra_extra_proto_rawDesc = nil
 	xxx_File_extensions_extra_extra_proto_goTypes = nil
 	xxx_File_extensions_extra_extra_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 1c0a651..5acd599 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -9,8 +9,11 @@
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -40,7 +43,7 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_proto3_ext3_proto_rawDescGZIP(), []int{0}
 }
 
 type Message struct {
@@ -58,7 +61,7 @@
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_extensions_proto3_ext3_proto_rawDescGZIP(), []int{0}
 }
 
 var xxx_File_extensions_proto3_ext3_proto_extDescs = []protoiface.ExtensionDescV1{
@@ -438,8 +441,9 @@
 	// extend google.protobuf.MessageOptions { repeated goproto.protoc.extension.proto3.Message repeated_extension_Message = 2017; }
 	E_RepeatedExtension_Message = &xxx_File_extensions_proto3_ext3_proto_extDescs[33]
 )
-var xxx_File_extensions_proto3_ext3_proto_rawdesc = []byte{
-	// 3278 bytes of the wire-encoded FileDescriptorProto
+var File_extensions_proto3_ext3_proto protoreflect.FileDescriptor
+
+var xxx_File_extensions_proto3_ext3_proto_rawDesc = []byte{
 	0x0a, 0x1c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x33, 0x2f, 0x65, 0x78, 0x74, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f,
 	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65,
@@ -647,11 +651,17 @@
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_extensions_proto3_ext3_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_extensions_proto3_ext3_proto_rawdesc)
+var (
+	xxx_File_extensions_proto3_ext3_proto_rawDesc_once sync.Once
+	xxx_File_extensions_proto3_ext3_proto_rawDesc_data = xxx_File_extensions_proto3_ext3_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_extensions_proto3_ext3_proto protoreflect.FileDescriptor
+func xxx_File_extensions_proto3_ext3_proto_rawDescGZIP() []byte {
+	xxx_File_extensions_proto3_ext3_proto_rawDesc_once.Do(func() {
+		xxx_File_extensions_proto3_ext3_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_extensions_proto3_ext3_proto_rawDesc_data)
+	})
+	return xxx_File_extensions_proto3_ext3_proto_rawDesc_data
+}
 
 var xxx_File_extensions_proto3_ext3_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_extensions_proto3_ext3_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -708,7 +718,7 @@
 	}
 	extensionTypes := make([]protoreflect.ExtensionType, 34)
 	File_extensions_proto3_ext3_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_extensions_proto3_ext3_proto_rawdesc,
+		RawDescriptor:        xxx_File_extensions_proto3_ext3_proto_rawDesc,
 		GoTypes:              xxx_File_extensions_proto3_ext3_proto_goTypes,
 		DependencyIndexes:    xxx_File_extensions_proto3_ext3_proto_depIdxs,
 		LegacyExtensions:     xxx_File_extensions_proto3_ext3_proto_extDescs,
@@ -718,6 +728,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_extensions_proto3_ext3_proto_rawDesc = nil
 	xxx_File_extensions_proto3_ext3_proto_goTypes = nil
 	xxx_File_extensions_proto3_ext3_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
index 1a60df1..84405af 100644
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
+++ b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // Assorted edge cases in field name conflict resolution.
 //
 // Not all (or possibly any) of these behave in an easily-understood fashion.
@@ -63,7 +66,7 @@
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_fieldnames_fieldnames_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Message) GetFieldOne() string {
@@ -274,11 +277,12 @@
 
 // Deprecated: Use Message_OneofMessageConflict.ProtoReflect.Type instead.
 func (*Message_OneofMessageConflict) Descriptor() ([]byte, []int) {
-	return xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_fieldnames_fieldnames_proto_rawDescGZIP(), []int{0, 0}
 }
 
-var xxx_File_fieldnames_fieldnames_proto_rawdesc = []byte{
-	// 826 bytes of the wire-encoded FileDescriptorProto
+var File_fieldnames_fieldnames_proto protoreflect.FileDescriptor
+
+var xxx_File_fieldnames_fieldnames_proto_rawDesc = []byte{
 	0x0a, 0x1b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x65,
 	0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x67,
 	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x66, 0x69,
@@ -333,11 +337,17 @@
 	0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73,
 }
 
-var xxx_File_fieldnames_fieldnames_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_fieldnames_fieldnames_proto_rawdesc)
+var (
+	xxx_File_fieldnames_fieldnames_proto_rawDesc_once sync.Once
+	xxx_File_fieldnames_fieldnames_proto_rawDesc_data = xxx_File_fieldnames_fieldnames_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_fieldnames_fieldnames_proto protoreflect.FileDescriptor
+func xxx_File_fieldnames_fieldnames_proto_rawDescGZIP() []byte {
+	xxx_File_fieldnames_fieldnames_proto_rawDesc_once.Do(func() {
+		xxx_File_fieldnames_fieldnames_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_fieldnames_fieldnames_proto_rawDesc_data)
+	})
+	return xxx_File_fieldnames_fieldnames_proto_rawDesc_data
+}
 
 var xxx_File_fieldnames_fieldnames_proto_messageTypes = make([]protoimpl.MessageType, 2)
 var xxx_File_fieldnames_fieldnames_proto_goTypes = []interface{}{
@@ -352,13 +362,14 @@
 		return
 	}
 	File_fieldnames_fieldnames_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_fieldnames_fieldnames_proto_rawdesc,
+		RawDescriptor:      xxx_File_fieldnames_fieldnames_proto_rawDesc,
 		GoTypes:            xxx_File_fieldnames_fieldnames_proto_goTypes,
 		DependencyIndexes:  xxx_File_fieldnames_fieldnames_proto_depIdxs,
 		MessageOutputTypes: xxx_File_fieldnames_fieldnames_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_fieldnames_fieldnames_proto_rawDesc = nil
 	xxx_File_fieldnames_fieldnames_proto_goTypes = nil
 	xxx_File_fieldnames_fieldnames_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/import_public/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
index a4eab42..fc02f6e 100644
--- a/cmd/protoc-gen-go/testdata/import_public/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
@@ -9,8 +9,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // Symbols defined in public import of import_public/sub/a.proto
 
 type E = sub.E
@@ -71,7 +74,7 @@
 
 // Deprecated: Use Public.ProtoReflect.Type instead.
 func (*Public) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_a_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_a_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Public) GetM() *sub.M {
@@ -95,8 +98,9 @@
 	return nil
 }
 
-var xxx_File_import_public_a_proto_rawdesc = []byte{
-	// 383 bytes of the wire-encoded FileDescriptorProto
+var File_import_public_a_proto protoreflect.FileDescriptor
+
+var xxx_File_import_public_a_proto_rawDesc = []byte{
 	0x0a, 0x15, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70,
@@ -123,11 +127,17 @@
 	0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x50, 0x00, 0x50, 0x01, 0x50, 0x02,
 }
 
-var xxx_File_import_public_a_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_import_public_a_proto_rawdesc)
+var (
+	xxx_File_import_public_a_proto_rawDesc_once sync.Once
+	xxx_File_import_public_a_proto_rawDesc_data = xxx_File_import_public_a_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_import_public_a_proto protoreflect.FileDescriptor
+func xxx_File_import_public_a_proto_rawDescGZIP() []byte {
+	xxx_File_import_public_a_proto_rawDesc_once.Do(func() {
+		xxx_File_import_public_a_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_import_public_a_proto_rawDesc_data)
+	})
+	return xxx_File_import_public_a_proto_rawDesc_data
+}
 
 var xxx_File_import_public_a_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_import_public_a_proto_goTypes = []interface{}{
@@ -149,13 +159,14 @@
 	}
 	xxx_File_import_public_b_proto_init()
 	File_import_public_a_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_import_public_a_proto_rawdesc,
+		RawDescriptor:      xxx_File_import_public_a_proto_rawDesc,
 		GoTypes:            xxx_File_import_public_a_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_a_proto_depIdxs,
 		MessageOutputTypes: xxx_File_import_public_a_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_import_public_a_proto_rawDesc = nil
 	xxx_File_import_public_a_proto_goTypes = nil
 	xxx_File_import_public_a_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/import_public/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
index d04c0ad..34a991e 100644
--- a/cmd/protoc-gen-go/testdata/import_public/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
@@ -8,8 +8,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Local struct {
 	M                    *sub.M   `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
 	E                    *sub.E   `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
@@ -27,7 +30,7 @@
 
 // Deprecated: Use Local.ProtoReflect.Type instead.
 func (*Local) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_b_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_b_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Local) GetM() *sub.M {
@@ -44,8 +47,9 @@
 	return sub.E_ZERO
 }
 
-var xxx_File_import_public_b_proto_rawdesc = []byte{
-	// 265 bytes of the wire-encoded FileDescriptorProto
+var File_import_public_b_proto protoreflect.FileDescriptor
+
+var xxx_File_import_public_b_proto_rawDesc = []byte{
 	0x0a, 0x15, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70,
@@ -65,11 +69,17 @@
 	0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
 }
 
-var xxx_File_import_public_b_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_import_public_b_proto_rawdesc)
+var (
+	xxx_File_import_public_b_proto_rawDesc_once sync.Once
+	xxx_File_import_public_b_proto_rawDesc_data = xxx_File_import_public_b_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_import_public_b_proto protoreflect.FileDescriptor
+func xxx_File_import_public_b_proto_rawDescGZIP() []byte {
+	xxx_File_import_public_b_proto_rawDesc_once.Do(func() {
+		xxx_File_import_public_b_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_import_public_b_proto_rawDesc_data)
+	})
+	return xxx_File_import_public_b_proto_rawDesc_data
+}
 
 var xxx_File_import_public_b_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_import_public_b_proto_goTypes = []interface{}{
@@ -88,13 +98,14 @@
 		return
 	}
 	File_import_public_b_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_import_public_b_proto_rawdesc,
+		RawDescriptor:      xxx_File_import_public_b_proto_rawDesc,
 		GoTypes:            xxx_File_import_public_b_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_b_proto_depIdxs,
 		MessageOutputTypes: xxx_File_import_public_b_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_import_public_b_proto_rawDesc = nil
 	xxx_File_import_public_b_proto_goTypes = nil
 	xxx_File_import_public_b_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 21fddab..874e622 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,8 +10,11 @@
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	math "math"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // Symbols defined in public import of import_public/sub2/a.proto
 
 type Sub2Message = sub2.Sub2Message
@@ -59,7 +62,7 @@
 
 // Deprecated: Use E.Type instead.
 func (E) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_sub_a_proto_rawDescGZIP(), []int{0}
 }
 
 type M_Subenum int32
@@ -105,7 +108,7 @@
 
 // Deprecated: Use M_Subenum.Type instead.
 func (M_Subenum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type M_Submessage_Submessage_Subenum int32
@@ -151,7 +154,7 @@
 
 // Deprecated: Use M_Submessage_Submessage_Subenum.Type instead.
 func (M_Submessage_Submessage_Subenum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0, 0, 0}
+	return xxx_File_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0, 0}
 }
 
 type M struct {
@@ -179,7 +182,7 @@
 
 // Deprecated: Use M.ProtoReflect.Type instead.
 func (*M) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_sub_a_proto_rawDescGZIP(), []int{0}
 }
 
 var extRange_M = []protoiface.ExtensionRangeV1{
@@ -288,7 +291,7 @@
 
 // Deprecated: Use M_Submessage.ProtoReflect.Type instead.
 func (*M_Submessage) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_a_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type isM_Submessage_SubmessageOneofField interface {
@@ -350,8 +353,9 @@
 	// extend goproto.protoc.import_public.sub.M { optional string extension_field = 100; }
 	E_ExtensionField = &xxx_File_import_public_sub_a_proto_extDescs[0]
 )
-var xxx_File_import_public_sub_a_proto_rawdesc = []byte{
-	// 730 bytes of the wire-encoded FileDescriptorProto
+var File_import_public_sub_a_proto protoreflect.FileDescriptor
+
+var xxx_File_import_public_sub_a_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x73, 0x75, 0x62, 0x2f, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f,
@@ -400,11 +404,17 @@
 	0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x50, 0x01,
 }
 
-var xxx_File_import_public_sub_a_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_import_public_sub_a_proto_rawdesc)
+var (
+	xxx_File_import_public_sub_a_proto_rawDesc_once sync.Once
+	xxx_File_import_public_sub_a_proto_rawDesc_data = xxx_File_import_public_sub_a_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_import_public_sub_a_proto protoreflect.FileDescriptor
+func xxx_File_import_public_sub_a_proto_rawDescGZIP() []byte {
+	xxx_File_import_public_sub_a_proto_rawDesc_once.Do(func() {
+		xxx_File_import_public_sub_a_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_import_public_sub_a_proto_rawDesc_data)
+	})
+	return xxx_File_import_public_sub_a_proto_rawDesc_data
+}
 
 var xxx_File_import_public_sub_a_proto_enumTypes = make([]protoreflect.EnumType, 3)
 var xxx_File_import_public_sub_a_proto_messageTypes = make([]protoimpl.MessageType, 2)
@@ -429,7 +439,7 @@
 	xxx_File_import_public_sub_b_proto_init()
 	extensionTypes := make([]protoreflect.ExtensionType, 1)
 	File_import_public_sub_a_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_import_public_sub_a_proto_rawdesc,
+		RawDescriptor:        xxx_File_import_public_sub_a_proto_rawDesc,
 		GoTypes:              xxx_File_import_public_sub_a_proto_goTypes,
 		DependencyIndexes:    xxx_File_import_public_sub_a_proto_depIdxs,
 		LegacyExtensions:     xxx_File_import_public_sub_a_proto_extDescs,
@@ -439,6 +449,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_import_public_sub_a_proto_rawDesc = nil
 	xxx_File_import_public_sub_a_proto_goTypes = nil
 	xxx_File_import_public_sub_a_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
index da0fa2e..caca555 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M2 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 func (*M2) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub_b_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_sub_b_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_import_public_sub_b_proto_rawdesc = []byte{
-	// 145 bytes of the wire-encoded FileDescriptorProto
+var File_import_public_sub_b_proto protoreflect.FileDescriptor
+
+var xxx_File_import_public_sub_b_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x73, 0x75, 0x62, 0x2f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x67, 0x6f, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f,
@@ -41,11 +45,17 @@
 	0x62,
 }
 
-var xxx_File_import_public_sub_b_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_import_public_sub_b_proto_rawdesc)
+var (
+	xxx_File_import_public_sub_b_proto_rawDesc_once sync.Once
+	xxx_File_import_public_sub_b_proto_rawDesc_data = xxx_File_import_public_sub_b_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_import_public_sub_b_proto protoreflect.FileDescriptor
+func xxx_File_import_public_sub_b_proto_rawDescGZIP() []byte {
+	xxx_File_import_public_sub_b_proto_rawDesc_once.Do(func() {
+		xxx_File_import_public_sub_b_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_import_public_sub_b_proto_rawDesc_data)
+	})
+	return xxx_File_import_public_sub_b_proto_rawDesc_data
+}
 
 var xxx_File_import_public_sub_b_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_import_public_sub_b_proto_goTypes = []interface{}{
@@ -59,13 +69,14 @@
 		return
 	}
 	File_import_public_sub_b_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_import_public_sub_b_proto_rawdesc,
+		RawDescriptor:      xxx_File_import_public_sub_b_proto_rawDesc,
 		GoTypes:            xxx_File_import_public_sub_b_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_sub_b_proto_depIdxs,
 		MessageOutputTypes: xxx_File_import_public_sub_b_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_import_public_sub_b_proto_rawDesc = nil
 	xxx_File_import_public_sub_b_proto_goTypes = nil
 	xxx_File_import_public_sub_b_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
index 63c77f4..7f936e1 100644
--- a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Sub2Message struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use Sub2Message.ProtoReflect.Type instead.
 func (*Sub2Message) Descriptor() ([]byte, []int) {
-	return xxx_File_import_public_sub2_a_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_import_public_sub2_a_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_import_public_sub2_a_proto_rawdesc = []byte{
-	// 157 bytes of the wire-encoded FileDescriptorProto
+var File_import_public_sub2_a_proto protoreflect.FileDescriptor
+
+var xxx_File_import_public_sub2_a_proto_rawDesc = []byte{
 	0x0a, 0x1a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f,
 	0x73, 0x75, 0x62, 0x32, 0x2f, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x67, 0x6f,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70,
@@ -41,11 +45,17 @@
 	0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x32,
 }
 
-var xxx_File_import_public_sub2_a_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_import_public_sub2_a_proto_rawdesc)
+var (
+	xxx_File_import_public_sub2_a_proto_rawDesc_once sync.Once
+	xxx_File_import_public_sub2_a_proto_rawDesc_data = xxx_File_import_public_sub2_a_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_import_public_sub2_a_proto protoreflect.FileDescriptor
+func xxx_File_import_public_sub2_a_proto_rawDescGZIP() []byte {
+	xxx_File_import_public_sub2_a_proto_rawDesc_once.Do(func() {
+		xxx_File_import_public_sub2_a_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_import_public_sub2_a_proto_rawDesc_data)
+	})
+	return xxx_File_import_public_sub2_a_proto_rawDesc_data
+}
 
 var xxx_File_import_public_sub2_a_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_import_public_sub2_a_proto_goTypes = []interface{}{
@@ -59,13 +69,14 @@
 		return
 	}
 	File_import_public_sub2_a_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_import_public_sub2_a_proto_rawdesc,
+		RawDescriptor:      xxx_File_import_public_sub2_a_proto_rawDesc,
 		GoTypes:            xxx_File_import_public_sub2_a_proto_goTypes,
 		DependencyIndexes:  xxx_File_import_public_sub2_a_proto_depIdxs,
 		MessageOutputTypes: xxx_File_import_public_sub2_a_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_import_public_sub2_a_proto_rawDesc = nil
 	xxx_File_import_public_sub2_a_proto_goTypes = nil
 	xxx_File_import_public_sub2_a_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
index a937858..779c7e3 100644
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M.ProtoReflect.Type instead.
 func (*M) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_fmt_m_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_fmt_m_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_fmt_m_proto_rawdesc = []byte{
-	// 111 bytes of the wire-encoded FileDescriptorProto
+var File_imports_fmt_m_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_fmt_m_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x2f, 0x6d, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x66, 0x6d, 0x74, 0x22, 0x03, 0x0a, 0x01, 0x4d, 0x42,
 	0x46, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f,
@@ -38,11 +42,17 @@
 	0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_fmt_m_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_fmt_m_proto_rawdesc)
+var (
+	xxx_File_imports_fmt_m_proto_rawDesc_once sync.Once
+	xxx_File_imports_fmt_m_proto_rawDesc_data = xxx_File_imports_fmt_m_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_fmt_m_proto protoreflect.FileDescriptor
+func xxx_File_imports_fmt_m_proto_rawDescGZIP() []byte {
+	xxx_File_imports_fmt_m_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_fmt_m_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_fmt_m_proto_rawDesc_data)
+	})
+	return xxx_File_imports_fmt_m_proto_rawDesc_data
+}
 
 var xxx_File_imports_fmt_m_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_fmt_m_proto_goTypes = []interface{}{
@@ -56,13 +66,14 @@
 		return
 	}
 	File_imports_fmt_m_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_fmt_m_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_fmt_m_proto_rawDesc,
 		GoTypes:            xxx_File_imports_fmt_m_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_fmt_m_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_fmt_m_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_fmt_m_proto_rawDesc = nil
 	xxx_File_imports_fmt_m_proto_goTypes = nil
 	xxx_File_imports_fmt_m_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 88c2bd5..c4efa6f 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
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type E1 int32
 
 const (
@@ -38,7 +41,7 @@
 
 // Deprecated: Use E1.Type instead.
 func (E1) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_a_1_m1_proto_rawDescGZIP(), []int{0}
 }
 
 type M1 struct {
@@ -56,7 +59,7 @@
 
 // Deprecated: Use M1.ProtoReflect.Type instead.
 func (*M1) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_a_1_m1_proto_rawDescGZIP(), []int{0}
 }
 
 type M1_1 struct {
@@ -75,7 +78,7 @@
 
 // Deprecated: Use M1_1.ProtoReflect.Type instead.
 func (*M1_1) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_imports_test_a_1_m1_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *M1_1) GetM1() *M1 {
@@ -85,8 +88,9 @@
 	return nil
 }
 
-var xxx_File_imports_test_a_1_m1_proto_rawdesc = []byte{
-	// 181 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_a_1_m1_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_a_1_m1_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x5f, 0x31, 0x2f, 0x6d, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x61, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x31, 0x22, 0x22, 0x0a, 0x04, 0x4d, 0x31, 0x5f,
@@ -101,11 +105,17 @@
 	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_a_1_m1_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_1_m1_proto_rawdesc)
+var (
+	xxx_File_imports_test_a_1_m1_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_a_1_m1_proto_rawDesc_data = xxx_File_imports_test_a_1_m1_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_a_1_m1_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_a_1_m1_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_a_1_m1_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_a_1_m1_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_1_m1_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_a_1_m1_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_a_1_m1_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_imports_test_a_1_m1_proto_messageTypes = make([]protoimpl.MessageType, 2)
@@ -124,7 +134,7 @@
 		return
 	}
 	File_imports_test_a_1_m1_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_a_1_m1_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_a_1_m1_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_a_1_m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m1_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_imports_test_a_1_m1_proto_enumTypes,
@@ -132,6 +142,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_a_1_m1_proto_rawDesc = nil
 	xxx_File_imports_test_a_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m1_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
index f6f7ec1..70ab52d 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M2 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 func (*M2) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_1_m2_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_a_1_m2_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_test_a_1_m2_proto_rawdesc = []byte{
-	// 126 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_a_1_m2_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_a_1_m2_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x5f, 0x31, 0x2f, 0x6d, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x61, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x32, 0x42, 0x4b, 0x5a, 0x49, 0x67, 0x69, 0x74,
@@ -39,11 +43,17 @@
 	0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_a_1_m2_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_1_m2_proto_rawdesc)
+var (
+	xxx_File_imports_test_a_1_m2_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_a_1_m2_proto_rawDesc_data = xxx_File_imports_test_a_1_m2_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_a_1_m2_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_a_1_m2_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_a_1_m2_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_a_1_m2_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_1_m2_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_a_1_m2_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_a_1_m2_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_a_1_m2_proto_goTypes = []interface{}{
@@ -57,13 +67,14 @@
 		return
 	}
 	File_imports_test_a_1_m2_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_a_1_m2_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_a_1_m2_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_a_1_m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_1_m2_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_a_1_m2_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_a_1_m2_proto_rawDesc = nil
 	xxx_File_imports_test_a_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_a_1_m2_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
index 258e2d3..e1e05d0 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M3 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M3.ProtoReflect.Type instead.
 func (*M3) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_2_m3_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_a_2_m3_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_test_a_2_m3_proto_rawdesc = []byte{
-	// 126 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_a_2_m3_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_a_2_m3_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x5f, 0x32, 0x2f, 0x6d, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x61, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x33, 0x42, 0x4b, 0x5a, 0x49, 0x67, 0x69, 0x74,
@@ -39,11 +43,17 @@
 	0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_a_2_m3_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_2_m3_proto_rawdesc)
+var (
+	xxx_File_imports_test_a_2_m3_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_a_2_m3_proto_rawDesc_data = xxx_File_imports_test_a_2_m3_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_a_2_m3_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_a_2_m3_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_a_2_m3_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_a_2_m3_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_2_m3_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_a_2_m3_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_a_2_m3_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_a_2_m3_proto_goTypes = []interface{}{
@@ -57,13 +67,14 @@
 		return
 	}
 	File_imports_test_a_2_m3_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_a_2_m3_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_a_2_m3_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_a_2_m3_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m3_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_a_2_m3_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_a_2_m3_proto_rawDesc = nil
 	xxx_File_imports_test_a_2_m3_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m3_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
index 8dcd49d..17a57ab 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M4 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M4.ProtoReflect.Type instead.
 func (*M4) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_a_2_m4_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_a_2_m4_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_test_a_2_m4_proto_rawdesc = []byte{
-	// 126 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_a_2_m4_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_a_2_m4_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61,
 	0x5f, 0x32, 0x2f, 0x6d, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x61, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x34, 0x42, 0x4b, 0x5a, 0x49, 0x67, 0x69, 0x74,
@@ -39,11 +43,17 @@
 	0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_a_2_m4_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_2_m4_proto_rawdesc)
+var (
+	xxx_File_imports_test_a_2_m4_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_a_2_m4_proto_rawDesc_data = xxx_File_imports_test_a_2_m4_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_a_2_m4_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_a_2_m4_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_a_2_m4_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_a_2_m4_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_a_2_m4_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_a_2_m4_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_a_2_m4_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_a_2_m4_proto_goTypes = []interface{}{
@@ -57,13 +67,14 @@
 		return
 	}
 	File_imports_test_a_2_m4_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_a_2_m4_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_a_2_m4_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_a_2_m4_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_a_2_m4_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_a_2_m4_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_a_2_m4_proto_rawDesc = nil
 	xxx_File_imports_test_a_2_m4_proto_goTypes = nil
 	xxx_File_imports_test_a_2_m4_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
index 5d37d5f..6ea825b 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M1 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M1.ProtoReflect.Type instead.
 func (*M1) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_b_1_m1_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_b_1_m1_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_test_b_1_m1_proto_rawdesc = []byte{
-	// 137 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_b_1_m1_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_b_1_m1_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
 	0x5f, 0x31, 0x2f, 0x6d, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x62, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x31, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x31, 0x42,
@@ -40,11 +44,17 @@
 	0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_b_1_m1_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_b_1_m1_proto_rawdesc)
+var (
+	xxx_File_imports_test_b_1_m1_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_b_1_m1_proto_rawDesc_data = xxx_File_imports_test_b_1_m1_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_b_1_m1_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_b_1_m1_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_b_1_m1_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_b_1_m1_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_b_1_m1_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_b_1_m1_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_b_1_m1_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_b_1_m1_proto_goTypes = []interface{}{
@@ -58,13 +68,14 @@
 		return
 	}
 	File_imports_test_b_1_m1_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_b_1_m1_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_b_1_m1_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_b_1_m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m1_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_b_1_m1_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_b_1_m1_proto_rawDesc = nil
 	xxx_File_imports_test_b_1_m1_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m1_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
index 5dc9ffe..c4f866a 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type M2 struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use M2.ProtoReflect.Type instead.
 func (*M2) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_b_1_m2_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_b_1_m2_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_imports_test_b_1_m2_proto_rawdesc = []byte{
-	// 137 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_b_1_m2_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_b_1_m2_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62,
 	0x5f, 0x31, 0x2f, 0x6d, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x74, 0x65, 0x73,
 	0x74, 0x2e, 0x62, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x32, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x32, 0x42,
@@ -40,11 +44,17 @@
 	0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_b_1_m2_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_b_1_m2_proto_rawdesc)
+var (
+	xxx_File_imports_test_b_1_m2_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_b_1_m2_proto_rawDesc_data = xxx_File_imports_test_b_1_m2_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_b_1_m2_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_b_1_m2_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_b_1_m2_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_b_1_m2_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_b_1_m2_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_b_1_m2_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_b_1_m2_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_b_1_m2_proto_goTypes = []interface{}{
@@ -58,13 +68,14 @@
 		return
 	}
 	File_imports_test_b_1_m2_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_b_1_m2_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_b_1_m2_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_b_1_m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_b_1_m2_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_b_1_m2_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_b_1_m2_proto_rawDesc = nil
 	xxx_File_imports_test_b_1_m2_proto_goTypes = nil
 	xxx_File_imports_test_b_1_m2_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
index 80759e4..552dc5a 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
@@ -8,8 +8,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type A1M1 struct {
 	F                    *test_a_1.M1 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
@@ -26,7 +29,7 @@
 
 // Deprecated: Use A1M1.ProtoReflect.Type instead.
 func (*A1M1) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_import_a1m1_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_import_a1m1_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *A1M1) GetF() *test_a_1.M1 {
@@ -36,8 +39,9 @@
 	return nil
 }
 
-var xxx_File_imports_test_import_a1m1_proto_rawdesc = []byte{
-	// 175 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_import_a1m1_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_import_a1m1_proto_rawDesc = []byte{
 	0x0a, 0x1e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69,
 	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x31, 0x6d, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f,
@@ -51,11 +55,17 @@
 	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_import_a1m1_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_a1m1_proto_rawdesc)
+var (
+	xxx_File_imports_test_import_a1m1_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_import_a1m1_proto_rawDesc_data = xxx_File_imports_test_import_a1m1_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_import_a1m1_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_import_a1m1_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_import_a1m1_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_import_a1m1_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_a1m1_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_import_a1m1_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_import_a1m1_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_import_a1m1_proto_goTypes = []interface{}{
@@ -72,13 +82,14 @@
 		return
 	}
 	File_imports_test_import_a1m1_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_import_a1m1_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_import_a1m1_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_import_a1m1_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m1_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_import_a1m1_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_import_a1m1_proto_rawDesc = nil
 	xxx_File_imports_test_import_a1m1_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m1_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
index b345e35..c0a0022 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
@@ -8,8 +8,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type A1M2 struct {
 	F                    *test_a_1.M2 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
@@ -26,7 +29,7 @@
 
 // Deprecated: Use A1M2.ProtoReflect.Type instead.
 func (*A1M2) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_import_a1m2_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_import_a1m2_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *A1M2) GetF() *test_a_1.M2 {
@@ -36,8 +39,9 @@
 	return nil
 }
 
-var xxx_File_imports_test_import_a1m2_proto_rawdesc = []byte{
-	// 175 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_import_a1m2_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_import_a1m2_proto_rawDesc = []byte{
 	0x0a, 0x1e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69,
 	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x31, 0x6d, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f,
@@ -51,11 +55,17 @@
 	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_import_a1m2_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_a1m2_proto_rawdesc)
+var (
+	xxx_File_imports_test_import_a1m2_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_import_a1m2_proto_rawDesc_data = xxx_File_imports_test_import_a1m2_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_import_a1m2_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_import_a1m2_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_import_a1m2_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_import_a1m2_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_a1m2_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_import_a1m2_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_import_a1m2_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_import_a1m2_proto_goTypes = []interface{}{
@@ -72,13 +82,14 @@
 		return
 	}
 	File_imports_test_import_a1m2_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_import_a1m2_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_import_a1m2_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_import_a1m2_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_a1m2_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_import_a1m2_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_import_a1m2_proto_rawDesc = nil
 	xxx_File_imports_test_import_a1m2_proto_goTypes = nil
 	xxx_File_imports_test_import_a1m2_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
index e8c83f7..b2d6f9d 100644
--- a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
@@ -11,8 +11,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type All struct {
 	Am1                  *test_a_1.M1 `protobuf:"bytes,1,opt,name=am1,proto3" json:"am1,omitempty"`
 	Am2                  *test_a_1.M2 `protobuf:"bytes,2,opt,name=am2,proto3" json:"am2,omitempty"`
@@ -33,7 +36,7 @@
 
 // Deprecated: Use All.ProtoReflect.Type instead.
 func (*All) Descriptor() ([]byte, []int) {
-	return xxx_File_imports_test_import_all_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_imports_test_import_all_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *All) GetAm1() *test_a_1.M1 {
@@ -71,8 +74,9 @@
 	return nil
 }
 
-var xxx_File_imports_test_import_all_proto_rawdesc = []byte{
-	// 462 bytes of the wire-encoded FileDescriptorProto
+var File_imports_test_import_all_proto protoreflect.FileDescriptor
+
+var xxx_File_imports_test_import_all_proto_rawDesc = []byte{
 	0x0a, 0x1d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69,
 	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 	0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74,
@@ -104,11 +108,17 @@
 	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_imports_test_import_all_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_all_proto_rawdesc)
+var (
+	xxx_File_imports_test_import_all_proto_rawDesc_once sync.Once
+	xxx_File_imports_test_import_all_proto_rawDesc_data = xxx_File_imports_test_import_all_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_imports_test_import_all_proto protoreflect.FileDescriptor
+func xxx_File_imports_test_import_all_proto_rawDescGZIP() []byte {
+	xxx_File_imports_test_import_all_proto_rawDesc_once.Do(func() {
+		xxx_File_imports_test_import_all_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_imports_test_import_all_proto_rawDesc_data)
+	})
+	return xxx_File_imports_test_import_all_proto_rawDesc_data
+}
 
 var xxx_File_imports_test_import_all_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_imports_test_import_all_proto_goTypes = []interface{}{
@@ -133,13 +143,14 @@
 		return
 	}
 	File_imports_test_import_all_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_imports_test_import_all_proto_rawdesc,
+		RawDescriptor:      xxx_File_imports_test_import_all_proto_rawDesc,
 		GoTypes:            xxx_File_imports_test_import_all_proto_goTypes,
 		DependencyIndexes:  xxx_File_imports_test_import_all_proto_depIdxs,
 		MessageOutputTypes: xxx_File_imports_test_import_all_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_imports_test_import_all_proto_rawDesc = nil
 	xxx_File_imports_test_import_all_proto_goTypes = nil
 	xxx_File_imports_test_import_all_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
index df50ae1..1ed2429 100644
--- a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
+++ b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Foo struct {
 	// Types that are valid to be assigned to Bar:
 	//	*Foo_GetBar
@@ -27,7 +30,7 @@
 
 // Deprecated: Use Foo.ProtoReflect.Type instead.
 func (*Foo) Descriptor() ([]byte, []int) {
-	return xxx_File_issue780_oneof_conflict_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_issue780_oneof_conflict_test_proto_rawDescGZIP(), []int{0}
 }
 
 type isFoo_Bar interface {
@@ -61,8 +64,9 @@
 	}
 }
 
-var xxx_File_issue780_oneof_conflict_test_proto_rawdesc = []byte{
-	// 88 bytes of the wire-encoded FileDescriptorProto
+var File_issue780_oneof_conflict_test_proto protoreflect.FileDescriptor
+
+var xxx_File_issue780_oneof_conflict_test_proto_rawDesc = []byte{
 	0x0a, 0x22, 0x69, 0x73, 0x73, 0x75, 0x65, 0x37, 0x38, 0x30, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
 	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x74, 0x65, 0x73, 0x74, 0x22,
@@ -71,11 +75,17 @@
 	0x72, 0x42, 0x05, 0x0a, 0x03, 0x62, 0x61, 0x72,
 }
 
-var xxx_File_issue780_oneof_conflict_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_issue780_oneof_conflict_test_proto_rawdesc)
+var (
+	xxx_File_issue780_oneof_conflict_test_proto_rawDesc_once sync.Once
+	xxx_File_issue780_oneof_conflict_test_proto_rawDesc_data = xxx_File_issue780_oneof_conflict_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_issue780_oneof_conflict_test_proto protoreflect.FileDescriptor
+func xxx_File_issue780_oneof_conflict_test_proto_rawDescGZIP() []byte {
+	xxx_File_issue780_oneof_conflict_test_proto_rawDesc_once.Do(func() {
+		xxx_File_issue780_oneof_conflict_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_issue780_oneof_conflict_test_proto_rawDesc_data)
+	})
+	return xxx_File_issue780_oneof_conflict_test_proto_rawDesc_data
+}
 
 var xxx_File_issue780_oneof_conflict_test_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_issue780_oneof_conflict_test_proto_goTypes = []interface{}{
@@ -89,13 +99,14 @@
 		return
 	}
 	File_issue780_oneof_conflict_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_issue780_oneof_conflict_test_proto_rawdesc,
+		RawDescriptor:      xxx_File_issue780_oneof_conflict_test_proto_rawDesc,
 		GoTypes:            xxx_File_issue780_oneof_conflict_test_proto_goTypes,
 		DependencyIndexes:  xxx_File_issue780_oneof_conflict_test_proto_depIdxs,
 		MessageOutputTypes: xxx_File_issue780_oneof_conflict_test_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_issue780_oneof_conflict_test_proto_rawDesc = nil
 	xxx_File_issue780_oneof_conflict_test_proto_goTypes = nil
 	xxx_File_issue780_oneof_conflict_test_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 4ef3404..28669fb 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -52,7 +55,7 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_nopackage_nopackage_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_nopackage_nopackage_proto_rawDescGZIP(), []int{0}
 }
 
 type Message struct {
@@ -72,7 +75,7 @@
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return xxx_File_nopackage_nopackage_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_nopackage_nopackage_proto_rawDescGZIP(), []int{0}
 }
 
 const Default_Message_EnumField Enum = Enum_ZERO
@@ -91,8 +94,9 @@
 	return Default_Message_EnumField
 }
 
-var xxx_File_nopackage_nopackage_proto_rawdesc = []byte{
-	// 135 bytes of the wire-encoded FileDescriptorProto
+var File_nopackage_nopackage_proto protoreflect.FileDescriptor
+
+var xxx_File_nopackage_nopackage_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x6e, 0x6f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x6e, 0x6f, 0x70, 0x61,
 	0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x07, 0x4d,
 	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
@@ -104,11 +108,17 @@
 	0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
 }
 
-var xxx_File_nopackage_nopackage_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_nopackage_nopackage_proto_rawdesc)
+var (
+	xxx_File_nopackage_nopackage_proto_rawDesc_once sync.Once
+	xxx_File_nopackage_nopackage_proto_rawDesc_data = xxx_File_nopackage_nopackage_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_nopackage_nopackage_proto protoreflect.FileDescriptor
+func xxx_File_nopackage_nopackage_proto_rawDescGZIP() []byte {
+	xxx_File_nopackage_nopackage_proto_rawDesc_once.Do(func() {
+		xxx_File_nopackage_nopackage_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_nopackage_nopackage_proto_rawDesc_data)
+	})
+	return xxx_File_nopackage_nopackage_proto_rawDesc_data
+}
 
 var xxx_File_nopackage_nopackage_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_nopackage_nopackage_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -126,7 +136,7 @@
 		return
 	}
 	File_nopackage_nopackage_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_nopackage_nopackage_proto_rawdesc,
+		RawDescriptor:      xxx_File_nopackage_nopackage_proto_rawDesc,
 		GoTypes:            xxx_File_nopackage_nopackage_proto_goTypes,
 		DependencyIndexes:  xxx_File_nopackage_nopackage_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_nopackage_nopackage_proto_enumTypes,
@@ -134,6 +144,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_nopackage_nopackage_proto_rawDesc = nil
 	xxx_File_nopackage_nopackage_proto_goTypes = nil
 	xxx_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 72a9bfc..b1e534d 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // EnumType1 comment.
 type EnumType1 int32
 
@@ -58,7 +61,7 @@
 
 // Deprecated: Use EnumType1.Type instead.
 func (EnumType1) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0}
 }
 
 type EnumType2 int32
@@ -107,7 +110,7 @@
 
 // Deprecated: Use EnumType2.Type instead.
 func (EnumType2) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{1}
 }
 
 // NestedEnumType1A comment.
@@ -155,7 +158,7 @@
 
 // Deprecated: Use EnumContainerMessage1_NestedEnumType1A.Type instead.
 func (EnumContainerMessage1_NestedEnumType1A) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type EnumContainerMessage1_NestedEnumType1B int32
@@ -201,7 +204,7 @@
 
 // Deprecated: Use EnumContainerMessage1_NestedEnumType1B.Type instead.
 func (EnumContainerMessage1_NestedEnumType1B) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 1}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0, 1}
 }
 
 // NestedEnumType2A comment.
@@ -249,7 +252,7 @@
 
 // Deprecated: Use EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A.Type instead.
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0, 0}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0, 0, 0}
 }
 
 type EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B int32
@@ -295,7 +298,7 @@
 
 // Deprecated: Use EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B.Type instead.
 func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0, 1}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0, 0, 1}
 }
 
 type EnumContainerMessage1 struct {
@@ -315,7 +318,7 @@
 
 // Deprecated: Use EnumContainerMessage1.ProtoReflect.Type instead.
 func (*EnumContainerMessage1) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0}
 }
 
 const Default_EnumContainerMessage1_DefaultDuplicate1 EnumType2 = EnumType2_duplicate1
@@ -354,11 +357,12 @@
 
 // Deprecated: Use EnumContainerMessage1_EnumContainerMessage2.ProtoReflect.Type instead.
 func (*EnumContainerMessage1_EnumContainerMessage2) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_enum_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto2_enum_proto_rawDescGZIP(), []int{0, 0}
 }
 
-var xxx_File_proto2_enum_proto_rawdesc = []byte{
-	// 624 bytes of the wire-encoded FileDescriptorProto
+var File_proto2_enum_proto protoreflect.FileDescriptor
+
+var xxx_File_proto2_enum_proto_rawDesc = []byte{
 	0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x8e, 0x03, 0x0a, 0x15, 0x45,
@@ -400,11 +404,17 @@
 	0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
 }
 
-var xxx_File_proto2_enum_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto2_enum_proto_rawdesc)
+var (
+	xxx_File_proto2_enum_proto_rawDesc_once sync.Once
+	xxx_File_proto2_enum_proto_rawDesc_data = xxx_File_proto2_enum_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto2_enum_proto protoreflect.FileDescriptor
+func xxx_File_proto2_enum_proto_rawDescGZIP() []byte {
+	xxx_File_proto2_enum_proto_rawDesc_once.Do(func() {
+		xxx_File_proto2_enum_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto2_enum_proto_rawDesc_data)
+	})
+	return xxx_File_proto2_enum_proto_rawDesc_data
+}
 
 var xxx_File_proto2_enum_proto_enumTypes = make([]protoreflect.EnumType, 6)
 var xxx_File_proto2_enum_proto_messageTypes = make([]protoimpl.MessageType, 2)
@@ -429,7 +439,7 @@
 		return
 	}
 	File_proto2_enum_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_proto2_enum_proto_rawdesc,
+		RawDescriptor:      xxx_File_proto2_enum_proto_rawDesc,
 		GoTypes:            xxx_File_proto2_enum_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_enum_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto2_enum_proto_enumTypes,
@@ -437,6 +447,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto2_enum_proto_rawDesc = nil
 	xxx_File_proto2_enum_proto_goTypes = nil
 	xxx_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 4c316a8..d37f28c 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	math "math"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type FieldTestMessage_Enum int32
 
 const (
@@ -56,7 +59,7 @@
 
 // Deprecated: Use FieldTestMessage_Enum.Type instead.
 func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type FieldTestMessage struct {
@@ -180,7 +183,7 @@
 
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
 func (*FieldTestMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0}
 }
 
 const Default_FieldTestMessage_DefaultBool bool = true
@@ -1116,7 +1119,7 @@
 
 // Deprecated: Use FieldTestMessage_OptionalGroup.ProtoReflect.Type instead.
 func (*FieldTestMessage_OptionalGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 0}
 }
 
 func (m *FieldTestMessage_OptionalGroup) GetOptionalGroup() string {
@@ -1142,7 +1145,7 @@
 
 // Deprecated: Use FieldTestMessage_RequiredGroup.ProtoReflect.Type instead.
 func (*FieldTestMessage_RequiredGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 1}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 1}
 }
 
 func (m *FieldTestMessage_RequiredGroup) GetRequiredGroup() string {
@@ -1168,7 +1171,7 @@
 
 // Deprecated: Use FieldTestMessage_RepeatedGroup.ProtoReflect.Type instead.
 func (*FieldTestMessage_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 2}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 2}
 }
 
 func (m *FieldTestMessage_RepeatedGroup) GetRepeatedGroup() []string {
@@ -1194,7 +1197,7 @@
 
 // Deprecated: Use FieldTestMessage_OneofGroup.ProtoReflect.Type instead.
 func (*FieldTestMessage_OneofGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 6}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 6}
 }
 
 func (m *FieldTestMessage_OneofGroup) GetOneofGroupField() string {
@@ -1219,11 +1222,12 @@
 
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
 func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_fields_proto_rawdesc_gzipped, []int{0, 7}
+	return xxx_File_proto2_fields_proto_rawDescGZIP(), []int{0, 7}
 }
 
-var xxx_File_proto2_fields_proto_rawdesc = []byte{
-	// 5913 bytes of the wire-encoded FileDescriptorProto
+var File_proto2_fields_proto protoreflect.FileDescriptor
+
+var xxx_File_proto2_fields_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0xa7, 0x2d, 0x0a,
@@ -1596,11 +1600,17 @@
 	0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
 }
 
-var xxx_File_proto2_fields_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto2_fields_proto_rawdesc)
+var (
+	xxx_File_proto2_fields_proto_rawDesc_once sync.Once
+	xxx_File_proto2_fields_proto_rawDesc_data = xxx_File_proto2_fields_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto2_fields_proto protoreflect.FileDescriptor
+func xxx_File_proto2_fields_proto_rawDescGZIP() []byte {
+	xxx_File_proto2_fields_proto_rawDesc_once.Do(func() {
+		xxx_File_proto2_fields_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto2_fields_proto_rawDesc_data)
+	})
+	return xxx_File_proto2_fields_proto_rawDesc_data
+}
 
 var xxx_File_proto2_fields_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_proto2_fields_proto_messageTypes = make([]protoimpl.MessageType, 9)
@@ -1643,7 +1653,7 @@
 		return
 	}
 	File_proto2_fields_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_proto2_fields_proto_rawdesc,
+		RawDescriptor:      xxx_File_proto2_fields_proto_rawDesc,
 		GoTypes:            xxx_File_proto2_fields_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_fields_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto2_fields_proto_enumTypes,
@@ -1651,6 +1661,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto2_fields_proto_rawDesc = nil
 	xxx_File_proto2_fields_proto_goTypes = nil
 	xxx_File_proto2_fields_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
index 41eaab6..02c70b0 100644
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Layer1 struct {
 	L2                   *Layer1_Layer2        `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
 	L3                   *Layer1_Layer2_Layer3 `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
@@ -26,7 +29,7 @@
 
 // Deprecated: Use Layer1.ProtoReflect.Type instead.
 func (*Layer1) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto2_nested_messages_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Layer1) GetL2() *Layer1_Layer2 {
@@ -59,7 +62,7 @@
 
 // Deprecated: Use Layer1_Layer2.ProtoReflect.Type instead.
 func (*Layer1_Layer2) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto2_nested_messages_proto_rawDescGZIP(), []int{0, 0}
 }
 
 func (m *Layer1_Layer2) GetL3() *Layer1_Layer2_Layer3 {
@@ -84,11 +87,12 @@
 
 // Deprecated: Use Layer1_Layer2_Layer3.ProtoReflect.Type instead.
 func (*Layer1_Layer2_Layer3) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_nested_messages_proto_rawdesc_gzipped, []int{0, 0, 0}
+	return xxx_File_proto2_nested_messages_proto_rawDescGZIP(), []int{0, 0, 0}
 }
 
-var xxx_File_proto2_nested_messages_proto_rawdesc = []byte{
-	// 327 bytes of the wire-encoded FileDescriptorProto
+var File_proto2_nested_messages_proto protoreflect.FileDescriptor
+
+var xxx_File_proto2_nested_messages_proto_rawDesc = []byte{
 	0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
 	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15,
 	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70,
@@ -112,11 +116,17 @@
 	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
 }
 
-var xxx_File_proto2_nested_messages_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto2_nested_messages_proto_rawdesc)
+var (
+	xxx_File_proto2_nested_messages_proto_rawDesc_once sync.Once
+	xxx_File_proto2_nested_messages_proto_rawDesc_data = xxx_File_proto2_nested_messages_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto2_nested_messages_proto protoreflect.FileDescriptor
+func xxx_File_proto2_nested_messages_proto_rawDescGZIP() []byte {
+	xxx_File_proto2_nested_messages_proto_rawDesc_once.Do(func() {
+		xxx_File_proto2_nested_messages_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto2_nested_messages_proto_rawDesc_data)
+	})
+	return xxx_File_proto2_nested_messages_proto_rawDesc_data
+}
 
 var xxx_File_proto2_nested_messages_proto_messageTypes = make([]protoimpl.MessageType, 3)
 var xxx_File_proto2_nested_messages_proto_goTypes = []interface{}{
@@ -136,13 +146,14 @@
 		return
 	}
 	File_proto2_nested_messages_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_proto2_nested_messages_proto_rawdesc,
+		RawDescriptor:      xxx_File_proto2_nested_messages_proto_rawDesc,
 		GoTypes:            xxx_File_proto2_nested_messages_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_nested_messages_proto_depIdxs,
 		MessageOutputTypes: xxx_File_proto2_nested_messages_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto2_nested_messages_proto_rawDesc = nil
 	xxx_File_proto2_nested_messages_proto_goTypes = nil
 	xxx_File_proto2_nested_messages_proto_depIdxs = nil
 }
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
index 2a61297..3c5eb9a 100644
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Message struct {
 	I32                  *int32   `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
 	M                    *Message `protobuf:"bytes,2,opt,name=m" json:"m,omitempty"`
@@ -26,7 +29,7 @@
 
 // Deprecated: Use Message.ProtoReflect.Type instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return xxx_File_proto2_proto2_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto2_proto2_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Message) GetI32() int32 {
@@ -43,8 +46,9 @@
 	return nil
 }
 
-var xxx_File_proto2_proto2_proto_rawdesc = []byte{
-	// 186 bytes of the wire-encoded FileDescriptorProto
+var File_proto2_proto2_proto protoreflect.FileDescriptor
+
+var xxx_File_proto2_proto2_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x49, 0x0a, 0x07,
@@ -59,11 +63,17 @@
 	0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
 }
 
-var xxx_File_proto2_proto2_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto2_proto2_proto_rawdesc)
+var (
+	xxx_File_proto2_proto2_proto_rawDesc_once sync.Once
+	xxx_File_proto2_proto2_proto_rawDesc_data = xxx_File_proto2_proto2_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto2_proto2_proto protoreflect.FileDescriptor
+func xxx_File_proto2_proto2_proto_rawDescGZIP() []byte {
+	xxx_File_proto2_proto2_proto_rawDesc_once.Do(func() {
+		xxx_File_proto2_proto2_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto2_proto2_proto_rawDesc_data)
+	})
+	return xxx_File_proto2_proto2_proto_rawDesc_data
+}
 
 var xxx_File_proto2_proto2_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_proto2_proto2_proto_goTypes = []interface{}{
@@ -79,13 +89,14 @@
 		return
 	}
 	File_proto2_proto2_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_proto2_proto2_proto_rawdesc,
+		RawDescriptor:      xxx_File_proto2_proto2_proto_rawDesc,
 		GoTypes:            xxx_File_proto2_proto2_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto2_proto2_proto_depIdxs,
 		MessageOutputTypes: xxx_File_proto2_proto2_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto2_proto2_proto_rawDesc = nil
 	xxx_File_proto2_proto2_proto_goTypes = nil
 	xxx_File_proto2_proto2_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 42d5a2c..6b466e8 100644
--- a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -44,11 +47,12 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto3_enum_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto3_enum_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_proto3_enum_proto_rawdesc = []byte{
-	// 153 bytes of the wire-encoded FileDescriptorProto
+var File_proto3_enum_proto protoreflect.FileDescriptor
+
+var xxx_File_proto3_enum_proto_rawDesc = []byte{
 	0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2a, 0x22, 0x0a, 0x04, 0x45, 0x6e,
@@ -61,11 +65,17 @@
 	0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_proto3_enum_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto3_enum_proto_rawdesc)
+var (
+	xxx_File_proto3_enum_proto_rawDesc_once sync.Once
+	xxx_File_proto3_enum_proto_rawDesc_data = xxx_File_proto3_enum_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto3_enum_proto protoreflect.FileDescriptor
+func xxx_File_proto3_enum_proto_rawDescGZIP() []byte {
+	xxx_File_proto3_enum_proto_rawDesc_once.Do(func() {
+		xxx_File_proto3_enum_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto3_enum_proto_rawDesc_data)
+	})
+	return xxx_File_proto3_enum_proto_rawDesc_data
+}
 
 var xxx_File_proto3_enum_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_proto3_enum_proto_goTypes = []interface{}{
@@ -79,13 +89,14 @@
 		return
 	}
 	File_proto3_enum_proto = protoimpl.FileBuilder{
-		RawDescriptor:     xxx_File_proto3_enum_proto_rawdesc,
+		RawDescriptor:     xxx_File_proto3_enum_proto_rawDesc,
 		GoTypes:           xxx_File_proto3_enum_proto_goTypes,
 		DependencyIndexes: xxx_File_proto3_enum_proto_depIdxs,
 		EnumOutputTypes:   xxx_File_proto3_enum_proto_enumTypes,
 		FilesRegistry:     protoregistry.GlobalFiles,
 		TypesRegistry:     protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto3_enum_proto_rawDesc = nil
 	xxx_File_proto3_enum_proto_goTypes = nil
 	xxx_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 a20bca8..8a10f2e 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type FieldTestMessage_Enum int32
 
 const (
@@ -38,7 +41,7 @@
 
 // Deprecated: Use FieldTestMessage_Enum.Type instead.
 func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_proto3_fields_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type FieldTestMessage struct {
@@ -93,7 +96,7 @@
 
 // Deprecated: Use FieldTestMessage.ProtoReflect.Type instead.
 func (*FieldTestMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_proto3_fields_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *FieldTestMessage) GetOptionalBool() string {
@@ -370,11 +373,12 @@
 
 // Deprecated: Use FieldTestMessage_Message.ProtoReflect.Type instead.
 func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
-	return xxx_File_proto3_fields_proto_rawdesc_gzipped, []int{0, 3}
+	return xxx_File_proto3_fields_proto_rawDescGZIP(), []int{0, 3}
 }
 
-var xxx_File_proto3_fields_proto_rawdesc = []byte{
-	// 2378 bytes of the wire-encoded FileDescriptorProto
+var File_proto3_fields_proto protoreflect.FileDescriptor
+
+var xxx_File_proto3_fields_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x22, 0xd0, 0x11, 0x0a,
@@ -526,11 +530,17 @@
 	0x6f, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_proto3_fields_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_proto3_fields_proto_rawdesc)
+var (
+	xxx_File_proto3_fields_proto_rawDesc_once sync.Once
+	xxx_File_proto3_fields_proto_rawDesc_data = xxx_File_proto3_fields_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_proto3_fields_proto protoreflect.FileDescriptor
+func xxx_File_proto3_fields_proto_rawDescGZIP() []byte {
+	xxx_File_proto3_fields_proto_rawDesc_once.Do(func() {
+		xxx_File_proto3_fields_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_proto3_fields_proto_rawDesc_data)
+	})
+	return xxx_File_proto3_fields_proto_rawDesc_data
+}
 
 var xxx_File_proto3_fields_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_proto3_fields_proto_messageTypes = make([]protoimpl.MessageType, 5)
@@ -560,7 +570,7 @@
 		return
 	}
 	File_proto3_fields_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_proto3_fields_proto_rawdesc,
+		RawDescriptor:      xxx_File_proto3_fields_proto_rawDesc,
 		GoTypes:            xxx_File_proto3_fields_proto_goTypes,
 		DependencyIndexes:  xxx_File_proto3_fields_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_proto3_fields_proto_enumTypes,
@@ -568,6 +578,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_proto3_fields_proto_rawDesc = nil
 	xxx_File_proto3_fields_proto_goTypes = nil
 	xxx_File_proto3_fields_proto_depIdxs = nil
 }
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
index 0ff518e..61050ba 100644
--- a/encoding/testprotos/pb2/test.pb.go
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -9,8 +9,11 @@
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	known "github.com/golang/protobuf/v2/types/known"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -60,7 +63,7 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{0}
 }
 
 type Enums_NestedEnum int32
@@ -112,7 +115,7 @@
 
 // Deprecated: Use Enums_NestedEnum.Type instead.
 func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1, 0}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{1, 0}
 }
 
 // Scalars contains optional scalar fields.
@@ -146,7 +149,7 @@
 
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
 func (*Scalars) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Scalars) GetOptBool() bool {
@@ -274,7 +277,7 @@
 
 // Deprecated: Use Enums.ProtoReflect.Type instead.
 func (*Enums) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *Enums) GetOptEnum() Enum {
@@ -330,7 +333,7 @@
 
 // Deprecated: Use Repeats.ProtoReflect.Type instead.
 func (*Repeats) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *Repeats) GetRptBool() []bool {
@@ -414,7 +417,7 @@
 
 // Deprecated: Use Nested.ProtoReflect.Type instead.
 func (*Nested) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *Nested) GetOptString() string {
@@ -451,7 +454,7 @@
 
 // Deprecated: Use Nests.ProtoReflect.Type instead.
 func (*Nests) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{4}
 }
 
 func (m *Nests) GetOptNested() *Nested {
@@ -504,7 +507,7 @@
 
 // Deprecated: Use Requireds.ProtoReflect.Type instead.
 func (*Requireds) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{5}
 }
 
 func (m *Requireds) GetReqBool() bool {
@@ -567,7 +570,7 @@
 
 // Deprecated: Use PartialRequired.ProtoReflect.Type instead.
 func (*PartialRequired) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{6}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{6}
 }
 
 func (m *PartialRequired) GetReqString() string {
@@ -600,7 +603,7 @@
 
 // Deprecated: Use NestedWithRequired.ProtoReflect.Type instead.
 func (*NestedWithRequired) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{7}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{7}
 }
 
 func (m *NestedWithRequired) GetReqString() string {
@@ -631,7 +634,7 @@
 
 // Deprecated: Use IndirectRequired.ProtoReflect.Type instead.
 func (*IndirectRequired) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{8}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{8}
 }
 
 func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
@@ -705,7 +708,7 @@
 
 // Deprecated: Use Extensions.ProtoReflect.Type instead.
 func (*Extensions) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{9}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{9}
 }
 
 var extRange_Extensions = []protoiface.ExtensionRangeV1{
@@ -753,7 +756,7 @@
 
 // Deprecated: Use ExtensionsContainer.ProtoReflect.Type instead.
 func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{10}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{10}
 }
 
 type MessageSet struct {
@@ -772,7 +775,7 @@
 
 // Deprecated: Use MessageSet.ProtoReflect.Type instead.
 func (*MessageSet) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{11}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{11}
 }
 
 var extRange_MessageSet = []protoiface.ExtensionRangeV1{
@@ -800,7 +803,7 @@
 
 // Deprecated: Use MessageSetExtension.ProtoReflect.Type instead.
 func (*MessageSetExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{12}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{12}
 }
 
 func (m *MessageSetExtension) GetOptString() string {
@@ -826,7 +829,7 @@
 
 // Deprecated: Use FakeMessageSet.ProtoReflect.Type instead.
 func (*FakeMessageSet) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{13}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{13}
 }
 
 var extRange_FakeMessageSet = []protoiface.ExtensionRangeV1{
@@ -854,7 +857,7 @@
 
 // Deprecated: Use FakeMessageSetExtension.ProtoReflect.Type instead.
 func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{14}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{14}
 }
 
 func (m *FakeMessageSetExtension) GetOptString() string {
@@ -897,7 +900,7 @@
 
 // Deprecated: Use KnownTypes.ProtoReflect.Type instead.
 func (*KnownTypes) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{15}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{15}
 }
 
 func (m *KnownTypes) GetOptBool() *known.BoolValue {
@@ -1037,7 +1040,7 @@
 
 // Deprecated: Use Nests_OptGroup.ProtoReflect.Type instead.
 func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{4, 0}
 }
 
 func (m *Nests_OptGroup) GetOptString() string {
@@ -1077,7 +1080,7 @@
 
 // Deprecated: Use Nests_RptGroup.ProtoReflect.Type instead.
 func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 1}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{4, 1}
 }
 
 func (m *Nests_RptGroup) GetRptString() []string {
@@ -1103,7 +1106,7 @@
 
 // Deprecated: Use Nests_OptGroup_OptNestedGroup.ProtoReflect.Type instead.
 func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_pb2_test_proto_rawdesc_gzipped, []int{4, 0, 0}
+	return xxx_File_pb2_test_proto_rawDescGZIP(), []int{4, 0, 0}
 }
 
 func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
@@ -1325,8 +1328,9 @@
 	// extend pb2.FakeMessageSet { optional pb2.FakeMessageSetExtension message_set_extension = 10; }
 	E_FakeMessageSetExtension_MessageSetExtension = &xxx_File_pb2_test_proto_extDescs[18]
 )
-var xxx_File_pb2_test_proto_rawdesc = []byte{
-	// 5225 bytes of the wire-encoded FileDescriptorProto
+var File_pb2_test_proto protoreflect.FileDescriptor
+
+var xxx_File_pb2_test_proto_rawDesc = []byte{
 	0x0a, 0x0e, 0x70, 0x62, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x03, 0x70, 0x62, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
 	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
@@ -1656,11 +1660,17 @@
 	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
 }
 
-var xxx_File_pb2_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_pb2_test_proto_rawdesc)
+var (
+	xxx_File_pb2_test_proto_rawDesc_once sync.Once
+	xxx_File_pb2_test_proto_rawDesc_data = xxx_File_pb2_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_pb2_test_proto protoreflect.FileDescriptor
+func xxx_File_pb2_test_proto_rawDescGZIP() []byte {
+	xxx_File_pb2_test_proto_rawDesc_once.Do(func() {
+		xxx_File_pb2_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_pb2_test_proto_rawDesc_data)
+	})
+	return xxx_File_pb2_test_proto_rawDesc_data
+}
 
 var xxx_File_pb2_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
 var xxx_File_pb2_test_proto_messageTypes = make([]protoimpl.MessageType, 20)
@@ -1782,7 +1792,7 @@
 	}
 	extensionTypes := make([]protoreflect.ExtensionType, 19)
 	File_pb2_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_pb2_test_proto_rawdesc,
+		RawDescriptor:        xxx_File_pb2_test_proto_rawDesc,
 		GoTypes:              xxx_File_pb2_test_proto_goTypes,
 		DependencyIndexes:    xxx_File_pb2_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_pb2_test_proto_extDescs,
@@ -1792,6 +1802,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_pb2_test_proto_rawDesc = nil
 	xxx_File_pb2_test_proto_goTypes = nil
 	xxx_File_pb2_test_proto_depIdxs = nil
 }
diff --git a/encoding/testprotos/pb3/test.pb.go b/encoding/testprotos/pb3/test.pb.go
index 65c6067..04f3991 100644
--- a/encoding/testprotos/pb3/test.pb.go
+++ b/encoding/testprotos/pb3/test.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum int32
 
 const (
@@ -47,7 +50,7 @@
 
 // Deprecated: Use Enum.Type instead.
 func (Enum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{0}
 }
 
 type Enums_NestedEnum int32
@@ -88,7 +91,7 @@
 
 // Deprecated: Use Enums_NestedEnum.Type instead.
 func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{1, 0}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{1, 0}
 }
 
 // Scalars contains scalar field types.
@@ -122,7 +125,7 @@
 
 // Deprecated: Use Scalars.ProtoReflect.Type instead.
 func (*Scalars) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Scalars) GetSBool() bool {
@@ -248,7 +251,7 @@
 
 // Deprecated: Use Enums.ProtoReflect.Type instead.
 func (*Enums) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *Enums) GetSEnum() Enum {
@@ -282,7 +285,7 @@
 
 // Deprecated: Use Nests.ProtoReflect.Type instead.
 func (*Nests) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *Nests) GetSNested() *Nested {
@@ -310,7 +313,7 @@
 
 // Deprecated: Use Nested.ProtoReflect.Type instead.
 func (*Nested) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *Nested) GetSString() string {
@@ -348,7 +351,7 @@
 
 // Deprecated: Use Oneofs.ProtoReflect.Type instead.
 func (*Oneofs) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{4}
 }
 
 type isOneofs_Union interface {
@@ -431,7 +434,7 @@
 
 // Deprecated: Use Maps.ProtoReflect.Type instead.
 func (*Maps) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{5}
 }
 
 func (m *Maps) GetInt32ToStr() map[int32]string {
@@ -486,7 +489,7 @@
 
 // Deprecated: Use JSONNames.ProtoReflect.Type instead.
 func (*JSONNames) Descriptor() ([]byte, []int) {
-	return xxx_File_pb3_test_proto_rawdesc_gzipped, []int{6}
+	return xxx_File_pb3_test_proto_rawDescGZIP(), []int{6}
 }
 
 func (m *JSONNames) GetSString() string {
@@ -496,8 +499,9 @@
 	return ""
 }
 
-var xxx_File_pb3_test_proto_rawdesc = []byte{
-	// 1710 bytes of the wire-encoded FileDescriptorProto
+var File_pb3_test_proto protoreflect.FileDescriptor
+
+var xxx_File_pb3_test_proto_rawDesc = []byte{
 	0x0a, 0x0e, 0x70, 0x62, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x03, 0x70, 0x62, 0x33, 0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72,
 	0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
@@ -607,11 +611,17 @@
 	0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_pb3_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_pb3_test_proto_rawdesc)
+var (
+	xxx_File_pb3_test_proto_rawDesc_once sync.Once
+	xxx_File_pb3_test_proto_rawDesc_data = xxx_File_pb3_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_pb3_test_proto protoreflect.FileDescriptor
+func xxx_File_pb3_test_proto_rawDescGZIP() []byte {
+	xxx_File_pb3_test_proto_rawDesc_once.Do(func() {
+		xxx_File_pb3_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_pb3_test_proto_rawDesc_data)
+	})
+	return xxx_File_pb3_test_proto_rawDesc_data
+}
 
 var xxx_File_pb3_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
 var xxx_File_pb3_test_proto_messageTypes = make([]protoimpl.MessageType, 12)
@@ -654,7 +664,7 @@
 		return
 	}
 	File_pb3_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_pb3_test_proto_rawdesc,
+		RawDescriptor:      xxx_File_pb3_test_proto_rawDesc,
 		GoTypes:            xxx_File_pb3_test_proto_goTypes,
 		DependencyIndexes:  xxx_File_pb3_test_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_pb3_test_proto_enumTypes,
@@ -662,6 +672,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_pb3_test_proto_rawDesc = nil
 	xxx_File_pb3_test_proto_goTypes = nil
 	xxx_File_pb3_test_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
index b351f4c..13274d8 100644
--- a/internal/testprotos/conformance/conformance.pb.go
+++ b/internal/testprotos/conformance/conformance.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type WireFormat int32
 
 const (
@@ -50,7 +53,7 @@
 
 // Deprecated: Use WireFormat.Type instead.
 func (WireFormat) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{0}
 }
 
 type TestCategory int32
@@ -105,7 +108,7 @@
 
 // Deprecated: Use TestCategory.Type instead.
 func (TestCategory) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{1}
 }
 
 // The conformance runner will request a list of failures as the first request.
@@ -127,7 +130,7 @@
 
 // Deprecated: Use FailureSet.ProtoReflect.Type instead.
 func (*FailureSet) Descriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *FailureSet) GetFailure() []string {
@@ -184,7 +187,7 @@
 
 // Deprecated: Use ConformanceRequest.ProtoReflect.Type instead.
 func (*ConformanceRequest) Descriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{1}
 }
 
 type isConformanceRequest_Payload interface {
@@ -336,7 +339,7 @@
 
 // Deprecated: Use ConformanceResponse.ProtoReflect.Type instead.
 func (*ConformanceResponse) Descriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{2}
 }
 
 type isConformanceResponse_Result interface {
@@ -486,7 +489,7 @@
 
 // Deprecated: Use JspbEncodingConfig.ProtoReflect.Type instead.
 func (*JspbEncodingConfig) Descriptor() ([]byte, []int) {
-	return xxx_File_conformance_conformance_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_conformance_conformance_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *JspbEncodingConfig) GetUseJspbArrayAnyFormat() bool {
@@ -496,8 +499,9 @@
 	return false
 }
 
-var xxx_File_conformance_conformance_proto_rawdesc = []byte{
-	// 1306 bytes of the wire-encoded FileDescriptorProto
+var File_conformance_conformance_proto protoreflect.FileDescriptor
+
+var xxx_File_conformance_conformance_proto_rawDesc = []byte{
 	0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x63, 0x6f,
 	0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
 	0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x0a,
@@ -582,11 +586,17 @@
 	0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_conformance_conformance_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_conformance_conformance_proto_rawdesc)
+var (
+	xxx_File_conformance_conformance_proto_rawDesc_once sync.Once
+	xxx_File_conformance_conformance_proto_rawDesc_data = xxx_File_conformance_conformance_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_conformance_conformance_proto protoreflect.FileDescriptor
+func xxx_File_conformance_conformance_proto_rawDescGZIP() []byte {
+	xxx_File_conformance_conformance_proto_rawDesc_once.Do(func() {
+		xxx_File_conformance_conformance_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_conformance_conformance_proto_rawDesc_data)
+	})
+	return xxx_File_conformance_conformance_proto_rawDesc_data
+}
 
 var xxx_File_conformance_conformance_proto_enumTypes = make([]protoreflect.EnumType, 2)
 var xxx_File_conformance_conformance_proto_messageTypes = make([]protoimpl.MessageType, 4)
@@ -610,7 +620,7 @@
 		return
 	}
 	File_conformance_conformance_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_conformance_conformance_proto_rawdesc,
+		RawDescriptor:      xxx_File_conformance_conformance_proto_rawDesc,
 		GoTypes:            xxx_File_conformance_conformance_proto_goTypes,
 		DependencyIndexes:  xxx_File_conformance_conformance_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_conformance_conformance_proto_enumTypes,
@@ -618,6 +628,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_conformance_conformance_proto_rawDesc = nil
 	xxx_File_conformance_conformance_proto_goTypes = nil
 	xxx_File_conformance_conformance_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
index ff9da05..9362d40 100644
--- a/internal/testprotos/legacy/legacy.pb.go
+++ b/internal/testprotos/legacy/legacy.pb.go
@@ -19,8 +19,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Legacy struct {
 	F1                   *proto2_v0_0.Message  `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
 	F2                   *proto3_v0_0.Message  `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
@@ -48,7 +51,7 @@
 
 // Deprecated: Use Legacy.ProtoReflect.Type instead.
 func (*Legacy) Descriptor() ([]byte, []int) {
-	return xxx_File_legacy_legacy_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_legacy_legacy_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Legacy) GetF1() *proto2_v0_0.Message {
@@ -135,8 +138,9 @@
 	return nil
 }
 
-var xxx_File_legacy_legacy_proto_rawdesc = []byte{
-	// 1457 bytes of the wire-encoded FileDescriptorProto
+var File_legacy_legacy_proto protoreflect.FileDescriptor
+
+var xxx_File_legacy_legacy_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
 	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x1a, 0x31, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
@@ -231,11 +235,17 @@
 	0x33,
 }
 
-var xxx_File_legacy_legacy_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_legacy_legacy_proto_rawdesc)
+var (
+	xxx_File_legacy_legacy_proto_rawDesc_once sync.Once
+	xxx_File_legacy_legacy_proto_rawDesc_data = xxx_File_legacy_legacy_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_legacy_legacy_proto protoreflect.FileDescriptor
+func xxx_File_legacy_legacy_proto_rawDescGZIP() []byte {
+	xxx_File_legacy_legacy_proto_rawDesc_once.Do(func() {
+		xxx_File_legacy_legacy_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_legacy_legacy_proto_rawDesc_data)
+	})
+	return xxx_File_legacy_legacy_proto_rawDesc_data
+}
 
 var xxx_File_legacy_legacy_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_legacy_legacy_proto_goTypes = []interface{}{
@@ -274,13 +284,14 @@
 		return
 	}
 	File_legacy_legacy_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_legacy_legacy_proto_rawdesc,
+		RawDescriptor:      xxx_File_legacy_legacy_proto_rawDesc,
 		GoTypes:            xxx_File_legacy_legacy_proto_goTypes,
 		DependencyIndexes:  xxx_File_legacy_legacy_proto_depIdxs,
 		MessageOutputTypes: xxx_File_legacy_legacy_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_legacy_legacy_proto_rawDesc = nil
 	xxx_File_legacy_legacy_proto_goTypes = nil
 	xxx_File_legacy_legacy_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/test/ext.pb.go b/internal/testprotos/test/ext.pb.go
index aa1fa3b..69c06a5 100644
--- a/internal/testprotos/test/ext.pb.go
+++ b/internal/testprotos/test/ext.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 var xxx_File_test_ext_proto_extDescs = []protoiface.ExtensionDescV1{
 	{
 		ExtendedType:  (*TestAllExtensions)(nil),
@@ -24,8 +27,9 @@
 	// extend goproto.proto.test.TestAllExtensions { optional int32 foreign_int32_extension = 2000; }
 	E_ForeignInt32Extension = &xxx_File_test_ext_proto_extDescs[0]
 )
-var xxx_File_test_ext_proto_rawdesc = []byte{
-	// 207 bytes of the wire-encoded FileDescriptorProto
+var File_test_ext_proto protoreflect.FileDescriptor
+
+var xxx_File_test_ext_proto_rawDesc = []byte{
 	0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
 	0x74, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e,
@@ -41,11 +45,17 @@
 	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
 }
 
-var xxx_File_test_ext_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_ext_proto_rawdesc)
+var (
+	xxx_File_test_ext_proto_rawDesc_once sync.Once
+	xxx_File_test_ext_proto_rawDesc_data = xxx_File_test_ext_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_ext_proto protoreflect.FileDescriptor
+func xxx_File_test_ext_proto_rawDescGZIP() []byte {
+	xxx_File_test_ext_proto_rawDesc_once.Do(func() {
+		xxx_File_test_ext_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_ext_proto_rawDesc_data)
+	})
+	return xxx_File_test_ext_proto_rawDesc_data
+}
 
 var xxx_File_test_ext_proto_goTypes = []interface{}{
 	(*TestAllExtensions)(nil), // 0: goproto.proto.test.TestAllExtensions
@@ -62,7 +72,7 @@
 	xxx_File_test_test_proto_init()
 	extensionTypes := make([]protoreflect.ExtensionType, 1)
 	File_test_ext_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_test_ext_proto_rawdesc,
+		RawDescriptor:        xxx_File_test_ext_proto_rawDesc,
 		GoTypes:              xxx_File_test_ext_proto_goTypes,
 		DependencyIndexes:    xxx_File_test_ext_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_ext_proto_extDescs,
@@ -70,6 +80,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_ext_proto_rawDesc = nil
 	xxx_File_test_ext_proto_goTypes = nil
 	xxx_File_test_ext_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 7d3790a..982abd3 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type ForeignEnum int32
 
 const (
@@ -59,7 +62,7 @@
 
 // Deprecated: Use ForeignEnum.Type instead.
 func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0}
 }
 
 type TestReservedEnumFields int32
@@ -105,7 +108,7 @@
 
 // Deprecated: Use TestReservedEnumFields.Type instead.
 func (TestReservedEnumFields) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{1}
 }
 
 type TestAllTypes_NestedEnum int32
@@ -160,7 +163,7 @@
 
 // Deprecated: Use TestAllTypes_NestedEnum.Type instead.
 func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type TestDeprecatedMessage_DeprecatedEnum int32 // Deprecated: Do not use.
@@ -205,7 +208,7 @@
 
 // Deprecated: Use TestDeprecatedMessage_DeprecatedEnum.Type instead.
 func (TestDeprecatedMessage_DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{1, 0}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type TestAllTypes struct {
@@ -313,7 +316,7 @@
 
 // Deprecated: Use TestAllTypes.ProtoReflect.Type instead.
 func (*TestAllTypes) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0}
 }
 
 const Default_TestAllTypes_DefaultInt32 int32 = 81
@@ -1045,7 +1048,7 @@
 
 // Deprecated: Use TestDeprecatedMessage.ProtoReflect.Type instead.
 func (*TestDeprecatedMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{1}
 }
 
 // Deprecated: Do not use.
@@ -1105,7 +1108,7 @@
 
 // Deprecated: Use ForeignMessage.ProtoReflect.Type instead.
 func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *ForeignMessage) GetC() int32 {
@@ -1137,7 +1140,7 @@
 
 // Deprecated: Use TestReservedFields.ProtoReflect.Type instead.
 func (*TestReservedFields) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{3}
 }
 
 type TestAllExtensions struct {
@@ -1156,7 +1159,7 @@
 
 // Deprecated: Use TestAllExtensions.ProtoReflect.Type instead.
 func (*TestAllExtensions) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{4}
 }
 
 var extRange_TestAllExtensions = []protoiface.ExtensionRangeV1{
@@ -1184,7 +1187,7 @@
 
 // Deprecated: Use OptionalGroupExtension.ProtoReflect.Type instead.
 func (*OptionalGroupExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{5}
 }
 
 func (m *OptionalGroupExtension) GetA() int32 {
@@ -1210,7 +1213,7 @@
 
 // Deprecated: Use RepeatedGroupExtension.ProtoReflect.Type instead.
 func (*RepeatedGroupExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{6}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{6}
 }
 
 func (m *RepeatedGroupExtension) GetA() int32 {
@@ -1235,7 +1238,7 @@
 
 // Deprecated: Use TestNestedExtension.ProtoReflect.Type instead.
 func (*TestNestedExtension) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{7}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{7}
 }
 
 // Test that RPC services work.
@@ -1254,7 +1257,7 @@
 
 // Deprecated: Use FooRequest.ProtoReflect.Type instead.
 func (*FooRequest) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{8}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{8}
 }
 
 type FooResponse struct {
@@ -1272,7 +1275,7 @@
 
 // Deprecated: Use FooResponse.ProtoReflect.Type instead.
 func (*FooResponse) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{9}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{9}
 }
 
 type TestAllTypes_NestedMessage struct {
@@ -1292,7 +1295,7 @@
 
 // Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Type instead.
 func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0, 0}
 }
 
 func (m *TestAllTypes_NestedMessage) GetA() int32 {
@@ -1325,7 +1328,7 @@
 
 // Deprecated: Use TestAllTypes_OptionalGroup.ProtoReflect.Type instead.
 func (*TestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 1}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0, 1}
 }
 
 func (m *TestAllTypes_OptionalGroup) GetA() int32 {
@@ -1351,7 +1354,7 @@
 
 // Deprecated: Use TestAllTypes_RepeatedGroup.ProtoReflect.Type instead.
 func (*TestAllTypes_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_proto_rawdesc_gzipped, []int{0, 2}
+	return xxx_File_test_test_proto_rawDescGZIP(), []int{0, 2}
 }
 
 func (m *TestAllTypes_RepeatedGroup) GetA() int32 {
@@ -1771,8 +1774,9 @@
 	// extend goproto.proto.test.TestAllExtensions { optional string nested_string_extension = 1003; }
 	E_TestNestedExtension_NestedStringExtension = &xxx_File_test_test_proto_extDescs[36]
 )
-var xxx_File_test_test_proto_rawdesc = []byte{
-	// 12074 bytes of the wire-encoded FileDescriptorProto
+var File_test_test_proto protoreflect.FileDescriptor
+
+var xxx_File_test_test_proto_rawDesc = []byte{
 	0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x2e, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74,
@@ -2530,11 +2534,17 @@
 	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x50, 0x01, 0x58, 0x02,
 }
 
-var xxx_File_test_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_test_proto_rawdesc)
+var (
+	xxx_File_test_test_proto_rawDesc_once sync.Once
+	xxx_File_test_test_proto_rawDesc_data = xxx_File_test_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_test_proto protoreflect.FileDescriptor
+func xxx_File_test_test_proto_rawDescGZIP() []byte {
+	xxx_File_test_test_proto_rawDesc_once.Do(func() {
+		xxx_File_test_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_test_proto_rawDesc_data)
+	})
+	return xxx_File_test_test_proto_rawDesc_data
+}
 
 var xxx_File_test_test_proto_enumTypes = make([]protoreflect.EnumType, 4)
 var xxx_File_test_test_proto_messageTypes = make([]protoimpl.MessageType, 30)
@@ -2676,7 +2686,7 @@
 	xxx_File_test_test_weak_proto_init()
 	extensionTypes := make([]protoreflect.ExtensionType, 37)
 	File_test_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_test_test_proto_rawdesc,
+		RawDescriptor:        xxx_File_test_test_proto_rawDesc,
 		GoTypes:              xxx_File_test_test_proto_goTypes,
 		DependencyIndexes:    xxx_File_test_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_test_proto_extDescs,
@@ -2686,6 +2696,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_test_proto_rawDesc = nil
 	xxx_File_test_test_proto_goTypes = nil
 	xxx_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 bcde0f1..9de8508 100644
--- a/internal/testprotos/test/test_import.pb.go
+++ b/internal/testprotos/test/test_import.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type ImportEnum int32
 
 const (
@@ -52,7 +55,7 @@
 
 // Deprecated: Use ImportEnum.Type instead.
 func (ImportEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_test_import_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_import_proto_rawDescGZIP(), []int{0}
 }
 
 type ImportMessage struct {
@@ -70,11 +73,12 @@
 
 // Deprecated: Use ImportMessage.ProtoReflect.Type instead.
 func (*ImportMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_import_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_import_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_test_test_import_proto_rawdesc = []byte{
-	// 150 bytes of the wire-encoded FileDescriptorProto
+var File_test_test_import_proto protoreflect.FileDescriptor
+
+var xxx_File_test_test_import_proto_rawDesc = []byte{
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
 	0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x22, 0x0f, 0x0a, 0x0d,
@@ -87,11 +91,17 @@
 	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
 }
 
-var xxx_File_test_test_import_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_test_import_proto_rawdesc)
+var (
+	xxx_File_test_test_import_proto_rawDesc_once sync.Once
+	xxx_File_test_test_import_proto_rawDesc_data = xxx_File_test_test_import_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_test_import_proto protoreflect.FileDescriptor
+func xxx_File_test_test_import_proto_rawDescGZIP() []byte {
+	xxx_File_test_test_import_proto_rawDesc_once.Do(func() {
+		xxx_File_test_test_import_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_test_import_proto_rawDesc_data)
+	})
+	return xxx_File_test_test_import_proto_rawDesc_data
+}
 
 var xxx_File_test_test_import_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_test_test_import_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -107,7 +117,7 @@
 		return
 	}
 	File_test_test_import_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_test_test_import_proto_rawdesc,
+		RawDescriptor:      xxx_File_test_test_import_proto_rawDesc,
 		GoTypes:            xxx_File_test_test_import_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_import_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_test_test_import_proto_enumTypes,
@@ -115,6 +125,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_test_import_proto_rawDesc = nil
 	xxx_File_test_test_import_proto_goTypes = nil
 	xxx_File_test_test_import_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
index db795c5..5632de8 100644
--- a/internal/testprotos/test/test_public.pb.go
+++ b/internal/testprotos/test/test_public.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type PublicImportMessage struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use PublicImportMessage.ProtoReflect.Type instead.
 func (*PublicImportMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_public_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_public_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_test_test_public_proto_rawdesc = []byte{
-	// 125 bytes of the wire-encoded FileDescriptorProto
+var File_test_test_public_proto protoreflect.FileDescriptor
+
+var xxx_File_test_test_public_proto_rawDesc = []byte{
 	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
 	0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x22, 0x15, 0x0a, 0x13,
@@ -39,11 +43,17 @@
 	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
 }
 
-var xxx_File_test_test_public_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_test_public_proto_rawdesc)
+var (
+	xxx_File_test_test_public_proto_rawDesc_once sync.Once
+	xxx_File_test_test_public_proto_rawDesc_data = xxx_File_test_test_public_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_test_public_proto protoreflect.FileDescriptor
+func xxx_File_test_test_public_proto_rawDescGZIP() []byte {
+	xxx_File_test_test_public_proto_rawDesc_once.Do(func() {
+		xxx_File_test_test_public_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_test_public_proto_rawDesc_data)
+	})
+	return xxx_File_test_test_public_proto_rawDesc_data
+}
 
 var xxx_File_test_test_public_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_test_test_public_proto_goTypes = []interface{}{
@@ -57,13 +67,14 @@
 		return
 	}
 	File_test_test_public_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_test_test_public_proto_rawdesc,
+		RawDescriptor:      xxx_File_test_test_public_proto_rawDesc,
 		GoTypes:            xxx_File_test_test_public_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_public_proto_depIdxs,
 		MessageOutputTypes: xxx_File_test_test_public_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_test_public_proto_rawDesc = nil
 	xxx_File_test_test_public_proto_goTypes = nil
 	xxx_File_test_test_public_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/test/test_weak.pb.go b/internal/testprotos/test/test_weak.pb.go
index 7562089..7fe04bb 100644
--- a/internal/testprotos/test/test_weak.pb.go
+++ b/internal/testprotos/test/test_weak.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type WeakImportMessage struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -24,11 +27,12 @@
 
 // Deprecated: Use WeakImportMessage.ProtoReflect.Type instead.
 func (*WeakImportMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test_test_weak_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_test_weak_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_test_test_weak_proto_rawdesc = []byte{
-	// 121 bytes of the wire-encoded FileDescriptorProto
+var File_test_test_weak_proto protoreflect.FileDescriptor
+
+var xxx_File_test_test_weak_proto_rawDesc = []byte{
 	0x0a, 0x14, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x57, 0x65,
@@ -39,11 +43,17 @@
 	0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
 }
 
-var xxx_File_test_test_weak_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_test_weak_proto_rawdesc)
+var (
+	xxx_File_test_test_weak_proto_rawDesc_once sync.Once
+	xxx_File_test_test_weak_proto_rawDesc_data = xxx_File_test_test_weak_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_test_weak_proto protoreflect.FileDescriptor
+func xxx_File_test_test_weak_proto_rawDescGZIP() []byte {
+	xxx_File_test_test_weak_proto_rawDesc_once.Do(func() {
+		xxx_File_test_test_weak_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_test_weak_proto_rawDesc_data)
+	})
+	return xxx_File_test_test_weak_proto_rawDesc_data
+}
 
 var xxx_File_test_test_weak_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_test_test_weak_proto_goTypes = []interface{}{
@@ -57,13 +67,14 @@
 		return
 	}
 	File_test_test_weak_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_test_test_weak_proto_rawdesc,
+		RawDescriptor:      xxx_File_test_test_weak_proto_rawDesc,
 		GoTypes:            xxx_File_test_test_weak_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_weak_proto_depIdxs,
 		MessageOutputTypes: xxx_File_test_test_weak_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_test_weak_proto_rawDesc = nil
 	xxx_File_test_test_weak_proto_goTypes = nil
 	xxx_File_test_test_weak_proto_depIdxs = nil
 }
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
index 59fab79..8af8076 100644
--- a/internal/testprotos/test3/test.pb.go
+++ b/internal/testprotos/test3/test.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type ForeignEnum int32
 
 const (
@@ -47,7 +50,7 @@
 
 // Deprecated: Use ForeignEnum.Type instead.
 func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test3_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test3_test_proto_rawDescGZIP(), []int{0}
 }
 
 type TestAllTypes_NestedEnum int32
@@ -88,7 +91,7 @@
 
 // Deprecated: Use TestAllTypes_NestedEnum.Type instead.
 func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test3_test_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_test3_test_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type TestAllTypes struct {
@@ -176,7 +179,7 @@
 
 // Deprecated: Use TestAllTypes.ProtoReflect.Type instead.
 func (*TestAllTypes) Descriptor() ([]byte, []int) {
-	return xxx_File_test3_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test3_test_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *TestAllTypes) GetOptionalInt32() int32 {
@@ -752,7 +755,7 @@
 
 // Deprecated: Use ForeignMessage.ProtoReflect.Type instead.
 func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test3_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_test3_test_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *ForeignMessage) GetC() int32 {
@@ -786,7 +789,7 @@
 
 // Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Type instead.
 func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test3_test_proto_rawdesc_gzipped, []int{0, 0}
+	return xxx_File_test3_test_proto_rawDescGZIP(), []int{0, 0}
 }
 
 func (m *TestAllTypes_NestedMessage) GetA() int32 {
@@ -803,8 +806,9 @@
 	return nil
 }
 
-var xxx_File_test3_test_proto_rawdesc = []byte{
-	// 6222 bytes of the wire-encoded FileDescriptorProto
+var File_test3_test_proto protoreflect.FileDescriptor
+
+var xxx_File_test3_test_proto_rawDesc = []byte{
 	0x0a, 0x10, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x17, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74,
@@ -1196,11 +1200,17 @@
 	0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_test3_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test3_test_proto_rawdesc)
+var (
+	xxx_File_test3_test_proto_rawDesc_once sync.Once
+	xxx_File_test3_test_proto_rawDesc_data = xxx_File_test3_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test3_test_proto protoreflect.FileDescriptor
+func xxx_File_test3_test_proto_rawDescGZIP() []byte {
+	xxx_File_test3_test_proto_rawDesc_once.Do(func() {
+		xxx_File_test3_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test3_test_proto_rawDesc_data)
+	})
+	return xxx_File_test3_test_proto_rawDesc_data
+}
 
 var xxx_File_test3_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
 var xxx_File_test3_test_proto_messageTypes = make([]protoimpl.MessageType, 20)
@@ -1274,7 +1284,7 @@
 	}
 	xxx_File_test3_test_import_proto_init()
 	File_test3_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_test3_test_proto_rawdesc,
+		RawDescriptor:      xxx_File_test3_test_proto_rawDesc,
 		GoTypes:            xxx_File_test3_test_proto_goTypes,
 		DependencyIndexes:  xxx_File_test3_test_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_test3_test_proto_enumTypes,
@@ -1282,6 +1292,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test3_test_proto_rawDesc = nil
 	xxx_File_test3_test_proto_goTypes = nil
 	xxx_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 767f8d7..fe50455 100644
--- a/internal/testprotos/test3/test_import.pb.go
+++ b/internal/testprotos/test3/test_import.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type ImportEnum int32
 
 const (
@@ -38,7 +41,7 @@
 
 // Deprecated: Use ImportEnum.Type instead.
 func (ImportEnum) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test3_test_import_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test3_test_import_proto_rawDescGZIP(), []int{0}
 }
 
 type ImportMessage struct {
@@ -56,11 +59,12 @@
 
 // Deprecated: Use ImportMessage.ProtoReflect.Type instead.
 func (*ImportMessage) Descriptor() ([]byte, []int) {
-	return xxx_File_test3_test_import_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test3_test_import_proto_rawDescGZIP(), []int{0}
 }
 
-var xxx_File_test3_test_import_proto_rawdesc = []byte{
-	// 161 bytes of the wire-encoded FileDescriptorProto
+var File_test3_test_import_proto protoreflect.FileDescriptor
+
+var xxx_File_test3_test_import_proto_rawDesc = []byte{
 	0x0a, 0x17, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70,
 	0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0x0f,
@@ -74,11 +78,17 @@
 	0x33,
 }
 
-var xxx_File_test3_test_import_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test3_test_import_proto_rawdesc)
+var (
+	xxx_File_test3_test_import_proto_rawDesc_once sync.Once
+	xxx_File_test3_test_import_proto_rawDesc_data = xxx_File_test3_test_import_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test3_test_import_proto protoreflect.FileDescriptor
+func xxx_File_test3_test_import_proto_rawDescGZIP() []byte {
+	xxx_File_test3_test_import_proto_rawDesc_once.Do(func() {
+		xxx_File_test3_test_import_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test3_test_import_proto_rawDesc_data)
+	})
+	return xxx_File_test3_test_import_proto_rawDesc_data
+}
 
 var xxx_File_test3_test_import_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_test3_test_import_proto_messageTypes = make([]protoimpl.MessageType, 1)
@@ -94,7 +104,7 @@
 		return
 	}
 	File_test3_test_import_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_test3_test_import_proto_rawdesc,
+		RawDescriptor:      xxx_File_test3_test_import_proto_rawDesc,
 		GoTypes:            xxx_File_test3_test_import_proto_goTypes,
 		DependencyIndexes:  xxx_File_test3_test_import_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_test3_test_import_proto_enumTypes,
@@ -102,6 +112,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test3_test_import_proto_rawDesc = nil
 	xxx_File_test3_test_import_proto_goTypes = nil
 	xxx_File_test3_test_import_proto_depIdxs = nil
 }
diff --git a/reflect/protoregistry/testprotos/test.pb.go b/reflect/protoregistry/testprotos/test.pb.go
index a988c39..67ed137 100644
--- a/reflect/protoregistry/testprotos/test.pb.go
+++ b/reflect/protoregistry/testprotos/test.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type Enum1 int32
 
 const (
@@ -53,7 +56,7 @@
 
 // Deprecated: Use Enum1.Type instead.
 func (Enum1) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_proto_rawDescGZIP(), []int{0}
 }
 
 type Enum2 int32
@@ -99,7 +102,7 @@
 
 // Deprecated: Use Enum2.Type instead.
 func (Enum2) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_test_proto_rawDescGZIP(), []int{1}
 }
 
 type Enum3 int32
@@ -145,7 +148,7 @@
 
 // Deprecated: Use Enum3.Type instead.
 func (Enum3) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_test_proto_rawDescGZIP(), []int{2}
 }
 
 type Message1 struct {
@@ -164,7 +167,7 @@
 
 // Deprecated: Use Message1.ProtoReflect.Type instead.
 func (*Message1) Descriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_test_proto_rawDescGZIP(), []int{0}
 }
 
 var extRange_Message1 = []protoiface.ExtensionRangeV1{
@@ -191,7 +194,7 @@
 
 // Deprecated: Use Message2.ProtoReflect.Type instead.
 func (*Message2) Descriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_test_proto_rawDescGZIP(), []int{1}
 }
 
 type Message3 struct {
@@ -209,7 +212,7 @@
 
 // Deprecated: Use Message3.ProtoReflect.Type instead.
 func (*Message3) Descriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_test_proto_rawDescGZIP(), []int{2}
 }
 
 type Message4 struct {
@@ -228,7 +231,7 @@
 
 // Deprecated: Use Message4.ProtoReflect.Type instead.
 func (*Message4) Descriptor() ([]byte, []int) {
-	return xxx_File_test_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_test_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *Message4) GetBoolField() bool {
@@ -307,8 +310,9 @@
 	// extend testprotos.Message1 { optional string string_field = 23; }
 	E_Message4_StringField = &xxx_File_test_proto_extDescs[5]
 )
-var xxx_File_test_proto_rawdesc = []byte{
-	// 653 bytes of the wire-encoded FileDescriptorProto
+var File_test_proto protoreflect.FileDescriptor
+
+var xxx_File_test_proto_rawDesc = []byte{
 	0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x74, 0x65,
 	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x22, 0x14, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73,
 	0x61, 0x67, 0x65, 0x31, 0x2a, 0x08, 0x08, 0x0a, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x0a,
@@ -352,11 +356,17 @@
 	0x72, 0x79, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
 }
 
-var xxx_File_test_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_test_proto_rawdesc)
+var (
+	xxx_File_test_proto_rawDesc_once sync.Once
+	xxx_File_test_proto_rawDesc_data = xxx_File_test_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_test_proto protoreflect.FileDescriptor
+func xxx_File_test_proto_rawDescGZIP() []byte {
+	xxx_File_test_proto_rawDesc_once.Do(func() {
+		xxx_File_test_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_test_proto_rawDesc_data)
+	})
+	return xxx_File_test_proto_rawDesc_data
+}
 
 var xxx_File_test_proto_enumTypes = make([]protoreflect.EnumType, 3)
 var xxx_File_test_proto_messageTypes = make([]protoimpl.MessageType, 4)
@@ -389,7 +399,7 @@
 	}
 	extensionTypes := make([]protoreflect.ExtensionType, 6)
 	File_test_proto = protoimpl.FileBuilder{
-		RawDescriptor:        xxx_File_test_proto_rawdesc,
+		RawDescriptor:        xxx_File_test_proto_rawDesc,
 		GoTypes:              xxx_File_test_proto_goTypes,
 		DependencyIndexes:    xxx_File_test_proto_depIdxs,
 		LegacyExtensions:     xxx_File_test_proto_extDescs,
@@ -399,6 +409,7 @@
 		FilesRegistry:        protoregistry.GlobalFiles,
 		TypesRegistry:        protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_test_proto_rawDesc = nil
 	xxx_File_test_proto_goTypes = nil
 	xxx_File_test_proto_depIdxs = nil
 }
diff --git a/types/descriptor/descriptor.pb.go b/types/descriptor/descriptor.pb.go
index b5bc7c1..2a41d15 100644
--- a/types/descriptor/descriptor.pb.go
+++ b/types/descriptor/descriptor.pb.go
@@ -9,8 +9,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoiface "github.com/golang/protobuf/v2/runtime/protoiface"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 type FieldDescriptorProto_Type int32
 
 const (
@@ -116,7 +119,7 @@
 
 // Deprecated: Use FieldDescriptorProto_Type.Type instead.
 func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{4, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0}
 }
 
 type FieldDescriptorProto_Label int32
@@ -169,7 +172,7 @@
 
 // Deprecated: Use FieldDescriptorProto_Label.Type instead.
 func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{4, 1}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1}
 }
 
 // Generated classes can be optimized for speed or code size.
@@ -223,7 +226,7 @@
 
 // Deprecated: Use FileOptions_OptimizeMode.Type instead.
 func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{10, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0}
 }
 
 type FieldOptions_CType int32
@@ -276,7 +279,7 @@
 
 // Deprecated: Use FieldOptions_CType.Type instead.
 func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{12, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type FieldOptions_JSType int32
@@ -331,7 +334,7 @@
 
 // Deprecated: Use FieldOptions_JSType.Type instead.
 func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{12, 1}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}
 }
 
 // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
@@ -386,7 +389,7 @@
 
 // Deprecated: Use MethodOptions_IdempotencyLevel.Type instead.
 func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{17, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0}
 }
 
 // The protocol compiler can output a FileDescriptorSet containing the .proto
@@ -407,7 +410,7 @@
 
 // Deprecated: Use FileDescriptorSet.ProtoReflect.Type instead.
 func (*FileDescriptorSet) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *FileDescriptorSet) GetFile() []*FileDescriptorProto {
@@ -456,7 +459,7 @@
 
 // Deprecated: Use FileDescriptorProto.ProtoReflect.Type instead.
 func (*FileDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *FileDescriptorProto) GetName() string {
@@ -571,7 +574,7 @@
 
 // Deprecated: Use DescriptorProto.ProtoReflect.Type instead.
 func (*DescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *DescriptorProto) GetName() string {
@@ -662,7 +665,7 @@
 
 // Deprecated: Use ExtensionRangeOptions.ProtoReflect.Type instead.
 func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}
 }
 
 var extRange_ExtensionRangeOptions = []protoiface.ExtensionRangeV1{
@@ -727,7 +730,7 @@
 
 // Deprecated: Use FieldDescriptorProto.ProtoReflect.Type instead.
 func (*FieldDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4}
 }
 
 func (m *FieldDescriptorProto) GetName() string {
@@ -818,7 +821,7 @@
 
 // Deprecated: Use OneofDescriptorProto.ProtoReflect.Type instead.
 func (*OneofDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5}
 }
 
 func (m *OneofDescriptorProto) GetName() string {
@@ -861,7 +864,7 @@
 
 // Deprecated: Use EnumDescriptorProto.ProtoReflect.Type instead.
 func (*EnumDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{6}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6}
 }
 
 func (m *EnumDescriptorProto) GetName() string {
@@ -918,7 +921,7 @@
 
 // Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Type instead.
 func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{7}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7}
 }
 
 func (m *EnumValueDescriptorProto) GetName() string {
@@ -961,7 +964,7 @@
 
 // Deprecated: Use ServiceDescriptorProto.ProtoReflect.Type instead.
 func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{8}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8}
 }
 
 func (m *ServiceDescriptorProto) GetName() string {
@@ -1011,7 +1014,7 @@
 
 // Deprecated: Use MethodDescriptorProto.ProtoReflect.Type instead.
 func (*MethodDescriptorProto) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{9}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9}
 }
 
 const Default_MethodDescriptorProto_ClientStreaming bool = false
@@ -1159,7 +1162,7 @@
 
 // Deprecated: Use FileOptions.ProtoReflect.Type instead.
 func (*FileOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{10}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}
 }
 
 var extRange_FileOptions = []protoiface.ExtensionRangeV1{
@@ -1397,7 +1400,7 @@
 
 // Deprecated: Use MessageOptions.ProtoReflect.Type instead.
 func (*MessageOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{11}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}
 }
 
 var extRange_MessageOptions = []protoiface.ExtensionRangeV1{
@@ -1525,7 +1528,7 @@
 
 // Deprecated: Use FieldOptions.ProtoReflect.Type instead.
 func (*FieldOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{12}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}
 }
 
 var extRange_FieldOptions = []protoiface.ExtensionRangeV1{
@@ -1610,7 +1613,7 @@
 
 // Deprecated: Use OneofOptions.ProtoReflect.Type instead.
 func (*OneofOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{13}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}
 }
 
 var extRange_OneofOptions = []protoiface.ExtensionRangeV1{
@@ -1655,7 +1658,7 @@
 
 // Deprecated: Use EnumOptions.ProtoReflect.Type instead.
 func (*EnumOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{14}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}
 }
 
 var extRange_EnumOptions = []protoiface.ExtensionRangeV1{
@@ -1713,7 +1716,7 @@
 
 // Deprecated: Use EnumValueOptions.ProtoReflect.Type instead.
 func (*EnumValueOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{15}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}
 }
 
 var extRange_EnumValueOptions = []protoiface.ExtensionRangeV1{
@@ -1764,7 +1767,7 @@
 
 // Deprecated: Use ServiceOptions.ProtoReflect.Type instead.
 func (*ServiceOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{16}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}
 }
 
 var extRange_ServiceOptions = []protoiface.ExtensionRangeV1{
@@ -1816,7 +1819,7 @@
 
 // Deprecated: Use MethodOptions.ProtoReflect.Type instead.
 func (*MethodOptions) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{17}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}
 }
 
 var extRange_MethodOptions = []protoiface.ExtensionRangeV1{
@@ -1882,7 +1885,7 @@
 
 // Deprecated: Use UninterpretedOption.ProtoReflect.Type instead.
 func (*UninterpretedOption) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{18}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18}
 }
 
 func (m *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {
@@ -1995,7 +1998,7 @@
 
 // Deprecated: Use SourceCodeInfo.ProtoReflect.Type instead.
 func (*SourceCodeInfo) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{19}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19}
 }
 
 func (m *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {
@@ -2026,7 +2029,7 @@
 
 // Deprecated: Use GeneratedCodeInfo.ProtoReflect.Type instead.
 func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{20}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20}
 }
 
 func (m *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {
@@ -2054,7 +2057,7 @@
 
 // Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Type instead.
 func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{2, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0}
 }
 
 func (m *DescriptorProto_ExtensionRange) GetStart() int32 {
@@ -2098,7 +2101,7 @@
 
 // Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Type instead.
 func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{2, 1}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1}
 }
 
 func (m *DescriptorProto_ReservedRange) GetStart() int32 {
@@ -2138,7 +2141,7 @@
 
 // Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Type instead.
 func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{6, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0}
 }
 
 func (m *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {
@@ -2177,7 +2180,7 @@
 
 // Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Type instead.
 func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{18, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0}
 }
 
 func (m *UninterpretedOption_NamePart) GetNamePart() string {
@@ -2289,7 +2292,7 @@
 
 // Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Type instead.
 func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{19, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}
 }
 
 func (m *SourceCodeInfo_Location) GetPath() []int32 {
@@ -2354,7 +2357,7 @@
 
 // Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Type instead.
 func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped, []int{20, 0}
+	return xxx_File_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0}
 }
 
 func (m *GeneratedCodeInfo_Annotation) GetPath() []int32 {
@@ -2385,8 +2388,9 @@
 	return 0
 }
 
-var xxx_File_google_protobuf_descriptor_proto_rawdesc = []byte{
-	// 7580 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_descriptor_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_descriptor_proto_rawDesc = []byte{
 	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
@@ -2863,11 +2867,17 @@
 	0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
 }
 
-var xxx_File_google_protobuf_descriptor_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_descriptor_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_descriptor_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_descriptor_proto_rawDesc_data = xxx_File_google_protobuf_descriptor_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_descriptor_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_descriptor_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_descriptor_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_descriptor_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_descriptor_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_descriptor_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_descriptor_proto_enumTypes = make([]protoreflect.EnumType, 6)
 var xxx_File_google_protobuf_descriptor_proto_messageTypes = make([]protoimpl.MessageType, 27)
@@ -2958,7 +2968,7 @@
 		return
 	}
 	File_google_protobuf_descriptor_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_descriptor_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_descriptor_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_descriptor_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_descriptor_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_descriptor_proto_enumTypes,
@@ -2975,6 +2985,7 @@
 	prototype.X.RegisterEnumValueOptions((*EnumValueOptions)(nil))
 	prototype.X.RegisterServiceOptions((*ServiceOptions)(nil))
 	prototype.X.RegisterMethodOptions((*MethodOptions)(nil))
+	xxx_File_google_protobuf_descriptor_proto_rawDesc = nil
 	xxx_File_google_protobuf_descriptor_proto_goTypes = nil
 	xxx_File_google_protobuf_descriptor_proto_depIdxs = nil
 }
diff --git a/types/known/any.pb.go b/types/known/any.pb.go
index a15067c..9552c32 100644
--- a/types/known/any.pb.go
+++ b/types/known/any.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // `Any` contains an arbitrary serialized protocol buffer message along with a
 // URL that describes the type of the serialized message.
 //
@@ -135,7 +138,7 @@
 
 // Deprecated: Use Any.ProtoReflect.Type instead.
 func (*Any) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_any_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_any_proto_rawDescGZIP(), []int{0}
 }
 
 func (*Any) XXX_WellKnownType() string { return "Any" }
@@ -154,8 +157,9 @@
 	return nil
 }
 
-var xxx_File_google_protobuf_any_proto_rawdesc = []byte{
-	// 237 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_any_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_any_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,
 	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x36, 0x0a, 0x03,
@@ -173,11 +177,17 @@
 	0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_any_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_any_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_any_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_any_proto_rawDesc_data = xxx_File_google_protobuf_any_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_any_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_any_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_any_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_any_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_any_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_any_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_any_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_any_proto_goTypes = []interface{}{
@@ -191,13 +201,14 @@
 		return
 	}
 	File_google_protobuf_any_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_any_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_any_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_any_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_any_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_any_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_any_proto_rawDesc = nil
 	xxx_File_google_protobuf_any_proto_goTypes = nil
 	xxx_File_google_protobuf_any_proto_depIdxs = nil
 }
diff --git a/types/known/api.pb.go b/types/known/api.pb.go
index 57550db..7620827 100644
--- a/types/known/api.pb.go
+++ b/types/known/api.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // Api is a light-weight descriptor for an API Interface.
 //
 // Interfaces are also described as "protocol buffer services" in some contexts,
@@ -69,7 +72,7 @@
 
 // Deprecated: Use Api.ProtoReflect.Type instead.
 func (*Api) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_api_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Api) GetName() string {
@@ -151,7 +154,7 @@
 
 // Deprecated: Use Method.ProtoReflect.Type instead.
 func (*Method) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_api_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *Method) GetName() string {
@@ -301,7 +304,7 @@
 
 // Deprecated: Use Mixin.ProtoReflect.Type instead.
 func (*Mixin) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_api_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_api_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *Mixin) GetName() string {
@@ -318,8 +321,9 @@
 	return ""
 }
 
-var xxx_File_google_protobuf_api_proto_rawdesc = []byte{
-	// 929 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_api_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_api_proto_rawDesc = []byte{
 	0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,
 	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x24, 0x67, 0x6f,
@@ -381,11 +385,17 @@
 	0x33,
 }
 
-var xxx_File_google_protobuf_api_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_api_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_api_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_api_proto_rawDesc_data = xxx_File_google_protobuf_api_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_api_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_api_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_api_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_api_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_api_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_api_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_api_proto_messageTypes = make([]protoimpl.MessageType, 3)
 var xxx_File_google_protobuf_api_proto_goTypes = []interface{}{
@@ -414,13 +424,14 @@
 	xxx_File_google_protobuf_source_context_proto_init()
 	xxx_File_google_protobuf_type_proto_init()
 	File_google_protobuf_api_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_api_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_api_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_api_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_api_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_api_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_api_proto_rawDesc = nil
 	xxx_File_google_protobuf_api_proto_goTypes = nil
 	xxx_File_google_protobuf_api_proto_depIdxs = nil
 }
diff --git a/types/known/duration.pb.go b/types/known/duration.pb.go
index 7b03e8a..d5e1075 100644
--- a/types/known/duration.pb.go
+++ b/types/known/duration.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // A Duration represents a signed, fixed-length span of time represented
 // as a count of seconds and fractions of seconds at nanosecond
 // resolution. It is independent of any calendar and concepts like "day"
@@ -95,7 +98,7 @@
 
 // Deprecated: Use Duration.ProtoReflect.Type instead.
 func (*Duration) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_duration_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_duration_proto_rawDescGZIP(), []int{0}
 }
 
 func (*Duration) XXX_WellKnownType() string { return "Duration" }
@@ -114,8 +117,9 @@
 	return 0
 }
 
-var xxx_File_google_protobuf_duration_proto_rawdesc = []byte{
-	// 255 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_duration_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_duration_proto_rawDesc = []byte{
 	0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
@@ -134,11 +138,17 @@
 	0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_duration_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_duration_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_duration_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_duration_proto_rawDesc_data = xxx_File_google_protobuf_duration_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_duration_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_duration_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_duration_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_duration_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_duration_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_duration_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_duration_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_duration_proto_goTypes = []interface{}{
@@ -152,13 +162,14 @@
 		return
 	}
 	File_google_protobuf_duration_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_duration_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_duration_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_duration_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_duration_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_duration_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_duration_proto_rawDesc = nil
 	xxx_File_google_protobuf_duration_proto_goTypes = nil
 	xxx_File_google_protobuf_duration_proto_depIdxs = nil
 }
diff --git a/types/known/empty.pb.go b/types/known/empty.pb.go
index e1099e3..f1e89b6 100644
--- a/types/known/empty.pb.go
+++ b/types/known/empty.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // A generic empty message that you can re-use to avoid defining duplicated
 // empty messages in your APIs. A typical example is to use it as the request
 // or the response type of an API method. For instance:
@@ -33,13 +36,14 @@
 
 // Deprecated: Use Empty.ProtoReflect.Type instead.
 func (*Empty) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_empty_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_empty_proto_rawDescGZIP(), []int{0}
 }
 
 func (*Empty) XXX_WellKnownType() string { return "Empty" }
 
-var xxx_File_google_protobuf_empty_proto_rawdesc = []byte{
-	// 198 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_empty_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_empty_proto_rawDesc = []byte{
 	0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67,
 	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x07,
@@ -55,11 +59,17 @@
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_empty_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_empty_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_empty_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_empty_proto_rawDesc_data = xxx_File_google_protobuf_empty_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_empty_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_empty_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_empty_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_empty_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_empty_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_empty_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_empty_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_empty_proto_goTypes = []interface{}{
@@ -73,13 +83,14 @@
 		return
 	}
 	File_google_protobuf_empty_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_empty_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_empty_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_empty_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_empty_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_empty_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_empty_proto_rawDesc = nil
 	xxx_File_google_protobuf_empty_proto_goTypes = nil
 	xxx_File_google_protobuf_empty_proto_depIdxs = nil
 }
diff --git a/types/known/field_mask.pb.go b/types/known/field_mask.pb.go
index b248dfc..360e583 100644
--- a/types/known/field_mask.pb.go
+++ b/types/known/field_mask.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // `FieldMask` represents a set of symbolic field paths, for example:
 //
 //     paths: "f.a"
@@ -225,7 +228,7 @@
 
 // Deprecated: Use FieldMask.ProtoReflect.Type instead.
 func (*FieldMask) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_field_mask_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_field_mask_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *FieldMask) GetPaths() []string {
@@ -235,8 +238,9 @@
 	return nil
 }
 
-var xxx_File_google_protobuf_field_mask_proto_rawdesc = []byte{
-	// 233 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_field_mask_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_field_mask_proto_rawDesc = []byte{
 	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
@@ -254,11 +258,17 @@
 	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_field_mask_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_field_mask_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_field_mask_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_field_mask_proto_rawDesc_data = xxx_File_google_protobuf_field_mask_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_field_mask_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_field_mask_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_field_mask_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_field_mask_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_field_mask_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_field_mask_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_field_mask_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_field_mask_proto_goTypes = []interface{}{
@@ -272,13 +282,14 @@
 		return
 	}
 	File_google_protobuf_field_mask_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_field_mask_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_field_mask_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_field_mask_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_field_mask_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_field_mask_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_field_mask_proto_rawDesc = nil
 	xxx_File_google_protobuf_field_mask_proto_goTypes = nil
 	xxx_File_google_protobuf_field_mask_proto_depIdxs = nil
 }
diff --git a/types/known/source_context.pb.go b/types/known/source_context.pb.go
index 0d8d942..0202e57 100644
--- a/types/known/source_context.pb.go
+++ b/types/known/source_context.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // `SourceContext` represents information about the source of a
 // protobuf element, like the file in which it is defined.
 type SourceContext struct {
@@ -29,7 +32,7 @@
 
 // Deprecated: Use SourceContext.ProtoReflect.Type instead.
 func (*SourceContext) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_source_context_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_source_context_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *SourceContext) GetFileName() string {
@@ -39,8 +42,9 @@
 	return ""
 }
 
-var xxx_File_google_protobuf_source_context_proto_rawdesc = []byte{
-	// 249 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_source_context_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_source_context_proto_rawDesc = []byte{
 	0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
@@ -59,11 +63,17 @@
 	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_source_context_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_source_context_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_source_context_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_source_context_proto_rawDesc_data = xxx_File_google_protobuf_source_context_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_source_context_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_source_context_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_source_context_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_source_context_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_source_context_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_source_context_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_source_context_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_source_context_proto_goTypes = []interface{}{
@@ -77,13 +87,14 @@
 		return
 	}
 	File_google_protobuf_source_context_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_source_context_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_source_context_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_source_context_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_source_context_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_source_context_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_source_context_proto_rawDesc = nil
 	xxx_File_google_protobuf_source_context_proto_goTypes = nil
 	xxx_File_google_protobuf_source_context_proto_depIdxs = nil
 }
diff --git a/types/known/struct.pb.go b/types/known/struct.pb.go
index 824614b..393f59f 100644
--- a/types/known/struct.pb.go
+++ b/types/known/struct.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // `NullValue` is a singleton enumeration to represent the null value for the
 // `Value` type union.
 //
@@ -43,7 +46,7 @@
 
 // Deprecated: Use NullValue.Type instead.
 func (NullValue) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_struct_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
 }
 
 func (NullValue) XXX_WellKnownType() string { return "NullValue" }
@@ -73,7 +76,7 @@
 
 // Deprecated: Use Struct.ProtoReflect.Type instead.
 func (*Struct) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_struct_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
 }
 
 func (*Struct) XXX_WellKnownType() string { return "Struct" }
@@ -122,7 +125,7 @@
 
 // Deprecated: Use Value.ProtoReflect.Type instead.
 func (*Value) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_struct_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_struct_proto_rawDescGZIP(), []int{1}
 }
 
 func (*Value) XXX_WellKnownType() string { return "Value" }
@@ -248,7 +251,7 @@
 
 // Deprecated: Use ListValue.ProtoReflect.Type instead.
 func (*ListValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_struct_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_struct_proto_rawDescGZIP(), []int{2}
 }
 
 func (*ListValue) XXX_WellKnownType() string { return "ListValue" }
@@ -260,8 +263,9 @@
 	return nil
 }
 
-var xxx_File_google_protobuf_struct_proto_rawdesc = []byte{
-	// 745 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_struct_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_struct_proto_rawDesc = []byte{
 	0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f,
 	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22,
@@ -311,11 +315,17 @@
 	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_struct_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_struct_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_struct_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_struct_proto_rawDesc_data = xxx_File_google_protobuf_struct_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_struct_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_struct_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_struct_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_struct_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_struct_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_struct_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_struct_proto_enumTypes = make([]protoreflect.EnumType, 1)
 var xxx_File_google_protobuf_struct_proto_messageTypes = make([]protoimpl.MessageType, 4)
@@ -341,7 +351,7 @@
 		return
 	}
 	File_google_protobuf_struct_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_struct_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_struct_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_struct_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_struct_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_struct_proto_enumTypes,
@@ -349,6 +359,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_struct_proto_rawDesc = nil
 	xxx_File_google_protobuf_struct_proto_goTypes = nil
 	xxx_File_google_protobuf_struct_proto_depIdxs = nil
 }
diff --git a/types/known/timestamp.pb.go b/types/known/timestamp.pb.go
index 7ec6c98..7e60fde 100644
--- a/types/known/timestamp.pb.go
+++ b/types/known/timestamp.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // A Timestamp represents a point in time independent of any time zone or local
 // calendar, encoded as a count of seconds and fractions of seconds at
 // nanosecond resolution. The count is relative to an epoch at UTC midnight on
@@ -115,7 +118,7 @@
 
 // Deprecated: Use Timestamp.ProtoReflect.Type instead.
 func (*Timestamp) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_timestamp_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_timestamp_proto_rawDescGZIP(), []int{0}
 }
 
 func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
@@ -134,8 +137,9 @@
 	return 0
 }
 
-var xxx_File_google_protobuf_timestamp_proto_rawdesc = []byte{
-	// 258 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_timestamp_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_timestamp_proto_rawDesc = []byte{
 	0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
@@ -155,11 +159,17 @@
 	0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_timestamp_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_timestamp_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_timestamp_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_timestamp_proto_rawDesc_data = xxx_File_google_protobuf_timestamp_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_timestamp_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_timestamp_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_timestamp_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_timestamp_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_timestamp_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_timestamp_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_timestamp_proto_messageTypes = make([]protoimpl.MessageType, 1)
 var xxx_File_google_protobuf_timestamp_proto_goTypes = []interface{}{
@@ -173,13 +183,14 @@
 		return
 	}
 	File_google_protobuf_timestamp_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_timestamp_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_timestamp_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_timestamp_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_timestamp_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_timestamp_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_timestamp_proto_rawDesc = nil
 	xxx_File_google_protobuf_timestamp_proto_goTypes = nil
 	xxx_File_google_protobuf_timestamp_proto_depIdxs = nil
 }
diff --git a/types/known/type.pb.go b/types/known/type.pb.go
index 25a0497..e54b1ff 100644
--- a/types/known/type.pb.go
+++ b/types/known/type.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // The syntax in which a protocol buffer element is defined.
 type Syntax int32
 
@@ -44,7 +47,7 @@
 
 // Deprecated: Use Syntax.Type instead.
 func (Syntax) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{0}
 }
 
 // Basic field types.
@@ -150,7 +153,7 @@
 
 // Deprecated: Use Field_Kind.Type instead.
 func (Field_Kind) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{1, 0}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{1, 0}
 }
 
 // Whether a field is optional, required, or repeated.
@@ -196,7 +199,7 @@
 
 // Deprecated: Use Field_Cardinality.Type instead.
 func (Field_Cardinality) EnumDescriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{1, 1}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{1, 1}
 }
 
 // A protocol buffer message type.
@@ -227,7 +230,7 @@
 
 // Deprecated: Use Type.ProtoReflect.Type instead.
 func (*Type) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Type) GetName() string {
@@ -310,7 +313,7 @@
 
 // Deprecated: Use Field.ProtoReflect.Type instead.
 func (*Field) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *Field) GetKind() Field_Kind {
@@ -409,7 +412,7 @@
 
 // Deprecated: Use Enum.ProtoReflect.Type instead.
 func (*Enum) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *Enum) GetName() string {
@@ -469,7 +472,7 @@
 
 // Deprecated: Use EnumValue.ProtoReflect.Type instead.
 func (*EnumValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{3}
 }
 
 func (m *EnumValue) GetName() string {
@@ -520,7 +523,7 @@
 
 // Deprecated: Use Option.ProtoReflect.Type instead.
 func (*Option) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_type_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_google_protobuf_type_proto_rawDescGZIP(), []int{4}
 }
 
 func (m *Option) GetName() string {
@@ -537,8 +540,9 @@
 	return nil
 }
 
-var xxx_File_google_protobuf_type_proto_rawdesc = []byte{
-	// 1835 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_type_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_type_proto_rawDesc = []byte{
 	0x0a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f,
 	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x19, 0x67,
@@ -656,11 +660,17 @@
 	0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_type_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_type_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_type_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_type_proto_rawDesc_data = xxx_File_google_protobuf_type_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_type_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_type_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_type_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_type_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_type_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_type_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_type_proto_enumTypes = make([]protoreflect.EnumType, 3)
 var xxx_File_google_protobuf_type_proto_messageTypes = make([]protoimpl.MessageType, 5)
@@ -700,7 +710,7 @@
 	xxx_File_google_protobuf_any_proto_init()
 	xxx_File_google_protobuf_source_context_proto_init()
 	File_google_protobuf_type_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_type_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_type_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_type_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_type_proto_depIdxs,
 		EnumOutputTypes:    xxx_File_google_protobuf_type_proto_enumTypes,
@@ -708,6 +718,7 @@
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_type_proto_rawDesc = nil
 	xxx_File_google_protobuf_type_proto_goTypes = nil
 	xxx_File_google_protobuf_type_proto_depIdxs = nil
 }
diff --git a/types/known/wrappers.pb.go b/types/known/wrappers.pb.go
index 0b9e8a9..0f8cd6a 100644
--- a/types/known/wrappers.pb.go
+++ b/types/known/wrappers.pb.go
@@ -7,8 +7,11 @@
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // Wrapper message for `double`.
 //
 // The JSON representation for `DoubleValue` is JSON number.
@@ -29,7 +32,7 @@
 
 // Deprecated: Use DoubleValue.ProtoReflect.Type instead.
 func (*DoubleValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{0}
 }
 
 func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
@@ -61,7 +64,7 @@
 
 // Deprecated: Use FloatValue.ProtoReflect.Type instead.
 func (*FloatValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{1}
 }
 
 func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
@@ -93,7 +96,7 @@
 
 // Deprecated: Use Int64Value.ProtoReflect.Type instead.
 func (*Int64Value) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{2}
 }
 
 func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
@@ -125,7 +128,7 @@
 
 // Deprecated: Use UInt64Value.ProtoReflect.Type instead.
 func (*UInt64Value) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{3}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{3}
 }
 
 func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
@@ -157,7 +160,7 @@
 
 // Deprecated: Use Int32Value.ProtoReflect.Type instead.
 func (*Int32Value) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{4}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{4}
 }
 
 func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
@@ -189,7 +192,7 @@
 
 // Deprecated: Use UInt32Value.ProtoReflect.Type instead.
 func (*UInt32Value) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{5}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{5}
 }
 
 func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
@@ -221,7 +224,7 @@
 
 // Deprecated: Use BoolValue.ProtoReflect.Type instead.
 func (*BoolValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{6}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{6}
 }
 
 func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
@@ -253,7 +256,7 @@
 
 // Deprecated: Use StringValue.ProtoReflect.Type instead.
 func (*StringValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{7}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{7}
 }
 
 func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
@@ -285,7 +288,7 @@
 
 // Deprecated: Use BytesValue.ProtoReflect.Type instead.
 func (*BytesValue) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped, []int{8}
+	return xxx_File_google_protobuf_wrappers_proto_rawDescGZIP(), []int{8}
 }
 
 func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
@@ -297,8 +300,9 @@
 	return nil
 }
 
-var xxx_File_google_protobuf_wrappers_proto_rawdesc = []byte{
-	// 522 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_wrappers_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_wrappers_proto_rawDesc = []byte{
 	0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
@@ -334,11 +338,17 @@
 	0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_File_google_protobuf_wrappers_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_wrappers_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_wrappers_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_wrappers_proto_rawDesc_data = xxx_File_google_protobuf_wrappers_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_wrappers_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_wrappers_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_wrappers_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_wrappers_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_wrappers_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_wrappers_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_wrappers_proto_messageTypes = make([]protoimpl.MessageType, 9)
 var xxx_File_google_protobuf_wrappers_proto_goTypes = []interface{}{
@@ -360,13 +370,14 @@
 		return
 	}
 	File_google_protobuf_wrappers_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_wrappers_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_wrappers_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_wrappers_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_wrappers_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_wrappers_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_wrappers_proto_rawDesc = nil
 	xxx_File_google_protobuf_wrappers_proto_goTypes = nil
 	xxx_File_google_protobuf_wrappers_proto_depIdxs = nil
 }
diff --git a/types/plugin/plugin.pb.go b/types/plugin/plugin.pb.go
index 57633fb..8883197 100644
--- a/types/plugin/plugin.pb.go
+++ b/types/plugin/plugin.pb.go
@@ -8,8 +8,11 @@
 	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
 	descriptor "github.com/golang/protobuf/v2/types/descriptor"
+	sync "sync"
 )
 
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
 // The version number of protocol compiler.
 type Version struct {
 	Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
@@ -32,7 +35,7 @@
 
 // Deprecated: Use Version.ProtoReflect.Type instead.
 func (*Version) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{0}
+	return xxx_File_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{0}
 }
 
 func (m *Version) GetMajor() int32 {
@@ -102,7 +105,7 @@
 
 // Deprecated: Use CodeGeneratorRequest.ProtoReflect.Type instead.
 func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{1}
+	return xxx_File_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{1}
 }
 
 func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
@@ -159,7 +162,7 @@
 
 // Deprecated: Use CodeGeneratorResponse.ProtoReflect.Type instead.
 func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2}
+	return xxx_File_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2}
 }
 
 func (m *CodeGeneratorResponse) GetError() string {
@@ -244,7 +247,7 @@
 
 // Deprecated: Use CodeGeneratorResponse_File.ProtoReflect.Type instead.
 func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {
-	return xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped, []int{2, 0}
+	return xxx_File_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2, 0}
 }
 
 func (m *CodeGeneratorResponse_File) GetName() string {
@@ -268,8 +271,9 @@
 	return ""
 }
 
-var xxx_File_google_protobuf_compiler_plugin_proto_rawdesc = []byte{
-	// 764 bytes of the wire-encoded FileDescriptorProto
+var File_google_protobuf_compiler_plugin_proto protoreflect.FileDescriptor
+
+var xxx_File_google_protobuf_compiler_plugin_proto_rawDesc = []byte{
 	0x0a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69,
 	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
@@ -320,11 +324,17 @@
 	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 }
 
-var xxx_File_google_protobuf_compiler_plugin_proto_rawdesc_gzipped = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_compiler_plugin_proto_rawdesc)
+var (
+	xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_once sync.Once
+	xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_data = xxx_File_google_protobuf_compiler_plugin_proto_rawDesc
+)
 
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var File_google_protobuf_compiler_plugin_proto protoreflect.FileDescriptor
+func xxx_File_google_protobuf_compiler_plugin_proto_rawDescGZIP() []byte {
+	xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_once.Do(func() {
+		xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_data = protoimpl.X.CompressGZIP(xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_data)
+	})
+	return xxx_File_google_protobuf_compiler_plugin_proto_rawDesc_data
+}
 
 var xxx_File_google_protobuf_compiler_plugin_proto_messageTypes = make([]protoimpl.MessageType, 4)
 var xxx_File_google_protobuf_compiler_plugin_proto_goTypes = []interface{}{
@@ -346,13 +356,14 @@
 		return
 	}
 	File_google_protobuf_compiler_plugin_proto = protoimpl.FileBuilder{
-		RawDescriptor:      xxx_File_google_protobuf_compiler_plugin_proto_rawdesc,
+		RawDescriptor:      xxx_File_google_protobuf_compiler_plugin_proto_rawDesc,
 		GoTypes:            xxx_File_google_protobuf_compiler_plugin_proto_goTypes,
 		DependencyIndexes:  xxx_File_google_protobuf_compiler_plugin_proto_depIdxs,
 		MessageOutputTypes: xxx_File_google_protobuf_compiler_plugin_proto_messageTypes,
 		FilesRegistry:      protoregistry.GlobalFiles,
 		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
+	xxx_File_google_protobuf_compiler_plugin_proto_rawDesc = nil
 	xxx_File_google_protobuf_compiler_plugin_proto_goTypes = nil
 	xxx_File_google_protobuf_compiler_plugin_proto_depIdxs = nil
 }