diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index d915f61..3fb3b9d 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -187,12 +187,10 @@
 	g.P("out := ", protoimplPackage.Ident("TypeBuilder"), "{")
 	g.P("File: ", protoimplPackage.Ident("DescBuilder"), "{")
 	g.P("GoPackagePath: ", reflectPackage.Ident("TypeOf"), "(x{}).PkgPath(),")
-	// Avoid a copy of the descriptor by using an inlined version of
-	// [strs.UnsafeBytes] (gencode cannot depend on internal/strs).
-	// This means modification of the RawDescriptor byte slice
-	// will crash the program. But generated RawDescriptors
-	// are never supposed to be modified anyway.
-	g.P("RawDescriptor: ", unsafePackage.Ident("Slice"), "(", unsafePackage.Ident("StringData"), "(", rawDescVarName(f), "), len(", rawDescVarName(f), ")),")
+	// Avoid a copy of the descriptor. This means modification of the
+	// RawDescriptor byte slice will crash the program. But generated
+	// RawDescriptors are never supposed to be modified anyway.
+	g.P("RawDescriptor: ", unsafeBytesRawDesc(g, f), ",")
 	g.P("NumEnums: ", len(f.allEnums), ",")
 	g.P("NumMessages: ", len(f.allMessages), ",")
 	g.P("NumExtensions: ", len(f.allExtensions), ",")
@@ -270,20 +268,30 @@
 		dataVar := rawDescVarName(f) + "Data"
 		g.P("var (")
 		g.P(onceVar, " ", syncPackage.Ident("Once"))
-		g.P(dataVar, " = ", rawDescVarName(f))
+		g.P(dataVar, " []byte")
 		g.P(")")
 		g.P()
 
 		g.P("func ", rawDescVarName(f), "GZIP() []byte {")
 		g.P(onceVar, ".Do(func() {")
-		g.P(dataVar, " = string(", protoimplPackage.Ident("X"), ".CompressGZIP([]byte(", dataVar, ")))")
+		g.P(dataVar, " = ", protoimplPackage.Ident("X"), ".CompressGZIP(", unsafeBytesRawDesc(g, f), ")")
 		g.P("})")
-		g.P("return []byte(", dataVar, ")")
+		g.P("return ", dataVar)
 		g.P("}")
 		g.P()
 	}
 }
 
+// unsafeBytesRawDesc returns an inlined version of [strs.UnsafeBytes]
+// (gencode cannot depend on internal/strs). Modification of this byte
+// slice will crash the program.
+func unsafeBytesRawDesc(g *protogen.GeneratedFile, f *fileInfo) string {
+	return fmt.Sprintf("%s(%s(%[3]s), len(%[3]s))",
+		g.QualifiedGoIdent(unsafePackage.Ident("Slice")),
+		g.QualifiedGoIdent(unsafePackage.Ident("StringData")),
+		rawDescVarName(f))
+}
+
 func genEnumReflectMethods(g *protogen.GeneratedFile, f *fileInfo, e *enumInfo) {
 	idx := f.allEnumsByPtr[e]
 	typesVar := enumTypesVarName(f)
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index 21dec46..57cbe45 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -162,14 +162,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData = file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
index d121221..95f5938 100644
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
@@ -395,14 +395,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData = file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_comments_comments_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
index 8a8a816..f920263 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -131,14 +131,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData = file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
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 3b0e736..1622ae9 100644
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
@@ -121,14 +121,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
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 989c1c2..2e8fb7d 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -1166,14 +1166,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
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 95ac266..7ab26e6 100644
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
@@ -79,14 +79,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 804f63b..fed2639 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -656,14 +656,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
index 0836969..a63ec72 100644
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
+++ b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
@@ -381,14 +381,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData = file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
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 09f1d7a..b12652b 100644
--- a/cmd/protoc-gen-go/testdata/import_public/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
@@ -148,14 +148,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 6d7def6..acfd606 100644
--- a/cmd/protoc-gen-go/testdata/import_public/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
@@ -95,14 +95,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/import_public/c.pb.go b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
index dbcb856..3dd25be 100644
--- a/cmd/protoc-gen-go/testdata/import_public/c.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
@@ -100,14 +100,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 340bba8..b3b3182 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
@@ -464,14 +464,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
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 9c1af8a..802a769 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
@@ -69,14 +69,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 ede9eb7..a81757f 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
@@ -70,14 +70,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 a36ef4c..1c82bf1 100644
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
@@ -67,14 +67,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 161fabb..c042820 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
@@ -158,14 +158,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
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 ad9298d..3a1cc48 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
@@ -68,14 +68,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 981772c..a3c1d17 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
@@ -68,14 +68,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 249a6e8..3eb97ec 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
@@ -68,14 +68,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 3ce7c0f..faa34fd 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
@@ -69,14 +69,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 4016bc8..5d828d1 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
@@ -69,14 +69,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 805c175..5673f64 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
@@ -82,14 +82,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 1186bc3..b164928 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
@@ -82,14 +82,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 f4a85d8..e168d6d 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
@@ -145,14 +145,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
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 c312ea9..3397f50 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
@@ -101,14 +101,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData = file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
index a036ee1..caa1988 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open/test_name_clash_open.pb.go
@@ -868,14 +868,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
diff --git a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
index 6313753..002402e 100644
--- a/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
+++ b/cmd/protoc-gen-go/testdata/nameclash/test_name_clash_open3/test_name_clash_open3.pb.go
@@ -965,14 +965,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_nameclash_test_name_clash_open3_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
index cc86624..dbdaea6 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -143,14 +143,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
index e2ded26..e973fa3 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -488,14 +488,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
index 5dd7b63..5f00c2f 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -1743,14 +1743,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
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 492c603..2d415bf 100644
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
@@ -176,14 +176,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
index 855c748..fae5294 100644
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
@@ -88,14 +88,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
index 02fc108..b0930e8 100644
--- a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
@@ -83,14 +83,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto3_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
index 1f5a5e0..3f594d9 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -584,14 +584,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
index 80a834d..7ba3959 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/enum.pb.go
@@ -497,14 +497,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_protoeditions_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
index 04d74b9..26da096 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/fields.pb.go
@@ -1752,14 +1752,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData = file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_protoeditions_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
index fa8eeb5..8a4b89b 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/legacy_enum.pb.go
@@ -252,14 +252,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_protoeditions_legacy_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
index 1663f09..1a1b232 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/maps_and_delimited.pb.go
@@ -218,14 +218,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData = file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_protoeditions_maps_and_delimited_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
diff --git a/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go b/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
index c11724f..6904b08 100644
--- a/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/protoeditions/nested_messages.pb.go
@@ -180,14 +180,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData = file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_protoeditions_nested_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
diff --git a/cmd/protoc-gen-go/testdata/retention/options_message.pb.go b/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
index 807a93e..e1336d0 100755
--- a/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
+++ b/cmd/protoc-gen-go/testdata/retention/options_message.pb.go
@@ -179,14 +179,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData = file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_retention_options_message_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_retention_options_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/cmd/protoc-gen-go/testdata/retention/retention.pb.go b/cmd/protoc-gen-go/testdata/retention/retention.pb.go
index 1d68801..19826d2 100755
--- a/cmd/protoc-gen-go/testdata/retention/retention.pb.go
+++ b/cmd/protoc-gen-go/testdata/retention/retention.pb.go
@@ -585,14 +585,14 @@
 
 var (
 	file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData = file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDesc
+	file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData []byte
 )
 
 func file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescGZIP() []byte {
 	file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData)))
+		file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDesc), len(file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDesc)))
 	})
-	return []byte(file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData)
+	return file_cmd_protoc_gen_go_testdata_retention_retention_proto_rawDescData
 }
 
 var file_cmd_protoc_gen_go_testdata_retention_retention_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/benchmarks/micro/micro.pb.go b/internal/testprotos/benchmarks/micro/micro.pb.go
index 829ab9f..d80914d 100644
--- a/internal/testprotos/benchmarks/micro/micro.pb.go
+++ b/internal/testprotos/benchmarks/micro/micro.pb.go
@@ -214,14 +214,14 @@
 
 var (
 	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescOnce sync.Once
-	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData = file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc
+	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_benchmarks_micro_micro_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData)))
+		file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc), len(file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData)
+	return file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData
 }
 
 var file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
index affc34f..3c3fdfe 100644
--- a/internal/testprotos/conformance/conformance.pb.go
+++ b/internal/testprotos/conformance/conformance.pb.go
@@ -794,14 +794,14 @@
 
 var (
 	file_conformance_conformance_proto_rawDescOnce sync.Once
-	file_conformance_conformance_proto_rawDescData = file_conformance_conformance_proto_rawDesc
+	file_conformance_conformance_proto_rawDescData []byte
 )
 
 func file_conformance_conformance_proto_rawDescGZIP() []byte {
 	file_conformance_conformance_proto_rawDescOnce.Do(func() {
-		file_conformance_conformance_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_conformance_conformance_proto_rawDescData)))
+		file_conformance_conformance_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_conformance_conformance_proto_rawDesc), len(file_conformance_conformance_proto_rawDesc)))
 	})
-	return []byte(file_conformance_conformance_proto_rawDescData)
+	return file_conformance_conformance_proto_rawDescData
 }
 
 var file_conformance_conformance_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
index 715b626..3b16403 100644
--- a/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
+++ b/internal/testprotos/conformance/editions/test_messages_edition2023.pb.go
@@ -1945,14 +1945,14 @@
 
 var (
 	file_conformance_test_protos_test_messages_edition2023_proto_rawDescOnce sync.Once
-	file_conformance_test_protos_test_messages_edition2023_proto_rawDescData = file_conformance_test_protos_test_messages_edition2023_proto_rawDesc
+	file_conformance_test_protos_test_messages_edition2023_proto_rawDescData []byte
 )
 
 func file_conformance_test_protos_test_messages_edition2023_proto_rawDescGZIP() []byte {
 	file_conformance_test_protos_test_messages_edition2023_proto_rawDescOnce.Do(func() {
-		file_conformance_test_protos_test_messages_edition2023_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_conformance_test_protos_test_messages_edition2023_proto_rawDescData)))
+		file_conformance_test_protos_test_messages_edition2023_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_conformance_test_protos_test_messages_edition2023_proto_rawDesc), len(file_conformance_test_protos_test_messages_edition2023_proto_rawDesc)))
 	})
-	return []byte(file_conformance_test_protos_test_messages_edition2023_proto_rawDescData)
+	return file_conformance_test_protos_test_messages_edition2023_proto_rawDescData
 }
 
 var file_conformance_test_protos_test_messages_edition2023_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
index 2f006ad..c171228 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto2_editions.pb.go
@@ -3837,14 +3837,14 @@
 
 var (
 	file_editions_golden_test_messages_proto2_editions_proto_rawDescOnce sync.Once
-	file_editions_golden_test_messages_proto2_editions_proto_rawDescData = file_editions_golden_test_messages_proto2_editions_proto_rawDesc
+	file_editions_golden_test_messages_proto2_editions_proto_rawDescData []byte
 )
 
 func file_editions_golden_test_messages_proto2_editions_proto_rawDescGZIP() []byte {
 	file_editions_golden_test_messages_proto2_editions_proto_rawDescOnce.Do(func() {
-		file_editions_golden_test_messages_proto2_editions_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_editions_golden_test_messages_proto2_editions_proto_rawDescData)))
+		file_editions_golden_test_messages_proto2_editions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_editions_golden_test_messages_proto2_editions_proto_rawDesc), len(file_editions_golden_test_messages_proto2_editions_proto_rawDesc)))
 	})
-	return []byte(file_editions_golden_test_messages_proto2_editions_proto_rawDescData)
+	return file_editions_golden_test_messages_proto2_editions_proto_rawDescData
 }
 
 var file_editions_golden_test_messages_proto2_editions_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go b/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
index c4812bf..1e5271e 100644
--- a/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
+++ b/internal/testprotos/conformance/editionsmigration/test_messages_proto3_editions.pb.go
@@ -2548,14 +2548,14 @@
 
 var (
 	file_editions_golden_test_messages_proto3_editions_proto_rawDescOnce sync.Once
-	file_editions_golden_test_messages_proto3_editions_proto_rawDescData = file_editions_golden_test_messages_proto3_editions_proto_rawDesc
+	file_editions_golden_test_messages_proto3_editions_proto_rawDescData []byte
 )
 
 func file_editions_golden_test_messages_proto3_editions_proto_rawDescGZIP() []byte {
 	file_editions_golden_test_messages_proto3_editions_proto_rawDescOnce.Do(func() {
-		file_editions_golden_test_messages_proto3_editions_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_editions_golden_test_messages_proto3_editions_proto_rawDescData)))
+		file_editions_golden_test_messages_proto3_editions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_editions_golden_test_messages_proto3_editions_proto_rawDesc), len(file_editions_golden_test_messages_proto3_editions_proto_rawDesc)))
 	})
-	return []byte(file_editions_golden_test_messages_proto3_editions_proto_rawDescData)
+	return file_editions_golden_test_messages_proto3_editions_proto_rawDescData
 }
 
 var file_editions_golden_test_messages_proto3_editions_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index 946188e..a67c269 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -3819,14 +3819,14 @@
 
 var (
 	file_google_protobuf_test_messages_proto2_proto_rawDescOnce sync.Once
-	file_google_protobuf_test_messages_proto2_proto_rawDescData = file_google_protobuf_test_messages_proto2_proto_rawDesc
+	file_google_protobuf_test_messages_proto2_proto_rawDescData []byte
 )
 
 func file_google_protobuf_test_messages_proto2_proto_rawDescGZIP() []byte {
 	file_google_protobuf_test_messages_proto2_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_test_messages_proto2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_test_messages_proto2_proto_rawDescData)))
+		file_google_protobuf_test_messages_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_test_messages_proto2_proto_rawDesc), len(file_google_protobuf_test_messages_proto2_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_test_messages_proto2_proto_rawDescData)
+	return file_google_protobuf_test_messages_proto2_proto_rawDescData
 }
 
 var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
index 7010b65..d44597c 100644
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto3.pb.go
@@ -2525,14 +2525,14 @@
 
 var (
 	file_google_protobuf_test_messages_proto3_proto_rawDescOnce sync.Once
-	file_google_protobuf_test_messages_proto3_proto_rawDescData = file_google_protobuf_test_messages_proto3_proto_rawDesc
+	file_google_protobuf_test_messages_proto3_proto_rawDescData []byte
 )
 
 func file_google_protobuf_test_messages_proto3_proto_rawDescGZIP() []byte {
 	file_google_protobuf_test_messages_proto3_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_test_messages_proto3_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_test_messages_proto3_proto_rawDescData)))
+		file_google_protobuf_test_messages_proto3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_test_messages_proto3_proto_rawDesc), len(file_google_protobuf_test_messages_proto3_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_test_messages_proto3_proto_rawDescData)
+	return file_google_protobuf_test_messages_proto3_proto_rawDescData
 }
 
 var file_google_protobuf_test_messages_proto3_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/internal/testprotos/editionsfuzztest/test2.pb.go b/internal/testprotos/editionsfuzztest/test2.pb.go
index 8af0a5e..05ef6fb 100644
--- a/internal/testprotos/editionsfuzztest/test2.pb.go
+++ b/internal/testprotos/editionsfuzztest/test2.pb.go
@@ -1557,14 +1557,14 @@
 
 var (
 	file_internal_testprotos_editionsfuzztest_test2_proto_rawDescOnce sync.Once
-	file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData = file_internal_testprotos_editionsfuzztest_test2_proto_rawDesc
+	file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_editionsfuzztest_test2_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_editionsfuzztest_test2_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData)))
+		file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_editionsfuzztest_test2_proto_rawDesc), len(file_internal_testprotos_editionsfuzztest_test2_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData)
+	return file_internal_testprotos_editionsfuzztest_test2_proto_rawDescData
 }
 
 var file_internal_testprotos_editionsfuzztest_test2_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/editionsfuzztest/test2editions.pb.go b/internal/testprotos/editionsfuzztest/test2editions.pb.go
index dbb8478..facc555 100644
--- a/internal/testprotos/editionsfuzztest/test2editions.pb.go
+++ b/internal/testprotos/editionsfuzztest/test2editions.pb.go
@@ -1581,14 +1581,14 @@
 
 var (
 	file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescOnce sync.Once
-	file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData = file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDesc
+	file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData)))
+		file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDesc), len(file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData)
+	return file_internal_testprotos_editionsfuzztest_test2editions_proto_rawDescData
 }
 
 var file_internal_testprotos_editionsfuzztest_test2editions_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/editionsfuzztest/test3.pb.go b/internal/testprotos/editionsfuzztest/test3.pb.go
index c6146fb..41b1822 100644
--- a/internal/testprotos/editionsfuzztest/test3.pb.go
+++ b/internal/testprotos/editionsfuzztest/test3.pb.go
@@ -1492,14 +1492,14 @@
 
 var (
 	file_internal_testprotos_editionsfuzztest_test3_proto_rawDescOnce sync.Once
-	file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData = file_internal_testprotos_editionsfuzztest_test3_proto_rawDesc
+	file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_editionsfuzztest_test3_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_editionsfuzztest_test3_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData)))
+		file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_editionsfuzztest_test3_proto_rawDesc), len(file_internal_testprotos_editionsfuzztest_test3_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData)
+	return file_internal_testprotos_editionsfuzztest_test3_proto_rawDescData
 }
 
 var file_internal_testprotos_editionsfuzztest_test3_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/editionsfuzztest/test3editions.pb.go b/internal/testprotos/editionsfuzztest/test3editions.pb.go
index 025df87..34e6f50 100644
--- a/internal/testprotos/editionsfuzztest/test3editions.pb.go
+++ b/internal/testprotos/editionsfuzztest/test3editions.pb.go
@@ -1490,14 +1490,14 @@
 
 var (
 	file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescOnce sync.Once
-	file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData = file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDesc
+	file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData)))
+		file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDesc), len(file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData)
+	return file_internal_testprotos_editionsfuzztest_test3editions_proto_rawDescData
 }
 
 var file_internal_testprotos_editionsfuzztest_test3editions_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/enums/enums.pb.go b/internal/testprotos/enums/enums.pb.go
index 8acf3f4..d21769f 100644
--- a/internal/testprotos/enums/enums.pb.go
+++ b/internal/testprotos/enums/enums.pb.go
@@ -103,14 +103,14 @@
 
 var (
 	file_internal_testprotos_enums_enums_proto_rawDescOnce sync.Once
-	file_internal_testprotos_enums_enums_proto_rawDescData = file_internal_testprotos_enums_enums_proto_rawDesc
+	file_internal_testprotos_enums_enums_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_enums_enums_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_enums_enums_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_enums_enums_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_enums_enums_proto_rawDescData)))
+		file_internal_testprotos_enums_enums_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_enums_enums_proto_rawDesc), len(file_internal_testprotos_enums_enums_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_enums_enums_proto_rawDescData)
+	return file_internal_testprotos_enums_enums_proto_rawDescData
 }
 
 var file_internal_testprotos_enums_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/fieldtrack/fieldtrack.pb.go b/internal/testprotos/fieldtrack/fieldtrack.pb.go
index f6c68d8..746d84e 100644
--- a/internal/testprotos/fieldtrack/fieldtrack.pb.go
+++ b/internal/testprotos/fieldtrack/fieldtrack.pb.go
@@ -879,14 +879,14 @@
 
 var (
 	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescOnce sync.Once
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData = file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc
+	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData)))
+		file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc), len(file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData)
+	return file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData
 }
 
 var file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
diff --git a/internal/testprotos/fuzz/fuzz.pb.go b/internal/testprotos/fuzz/fuzz.pb.go
index 6cc7f4b..5a14aed 100644
--- a/internal/testprotos/fuzz/fuzz.pb.go
+++ b/internal/testprotos/fuzz/fuzz.pb.go
@@ -181,14 +181,14 @@
 
 var (
 	file_internal_testprotos_fuzz_fuzz_proto_rawDescOnce sync.Once
-	file_internal_testprotos_fuzz_fuzz_proto_rawDescData = file_internal_testprotos_fuzz_fuzz_proto_rawDesc
+	file_internal_testprotos_fuzz_fuzz_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_fuzz_fuzz_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_fuzz_fuzz_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_fuzz_fuzz_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_fuzz_fuzz_proto_rawDescData)))
+		file_internal_testprotos_fuzz_fuzz_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_fuzz_fuzz_proto_rawDesc), len(file_internal_testprotos_fuzz_fuzz_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_fuzz_fuzz_proto_rawDescData)
+	return file_internal_testprotos_fuzz_fuzz_proto_rawDescData
 }
 
 var file_internal_testprotos_fuzz_fuzz_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/irregular/test.pb.go b/internal/testprotos/irregular/test.pb.go
index f461b24..b4c14f0 100644
--- a/internal/testprotos/irregular/test.pb.go
+++ b/internal/testprotos/irregular/test.pb.go
@@ -257,14 +257,14 @@
 
 var (
 	file_internal_testprotos_irregular_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_irregular_test_proto_rawDescData = file_internal_testprotos_irregular_test_proto_rawDesc
+	file_internal_testprotos_irregular_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_irregular_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_irregular_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_irregular_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_irregular_test_proto_rawDescData)))
+		file_internal_testprotos_irregular_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_irregular_test_proto_rawDesc), len(file_internal_testprotos_irregular_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_irregular_test_proto_rawDescData)
+	return file_internal_testprotos_irregular_test_proto_rawDescData
 }
 
 var file_internal_testprotos_irregular_test_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
diff --git a/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go b/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
index 8b10c17..99dbf91 100644
--- a/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
+++ b/internal/testprotos/lazy/lazy_extension_normalized_wire_test.pb.go
@@ -219,14 +219,14 @@
 
 var (
 	file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData = file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDesc
+	file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData)))
+		file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDesc), len(file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData)
+	return file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_rawDescData
 }
 
 var file_internal_testprotos_lazy_lazy_extension_normalized_wire_test_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
diff --git a/internal/testprotos/lazy/lazy_extension_test.pb.go b/internal/testprotos/lazy/lazy_extension_test.pb.go
index a92fd2b..c038434 100644
--- a/internal/testprotos/lazy/lazy_extension_test.pb.go
+++ b/internal/testprotos/lazy/lazy_extension_test.pb.go
@@ -673,14 +673,14 @@
 
 var (
 	file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData = file_internal_testprotos_lazy_lazy_extension_test_proto_rawDesc
+	file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData)))
+		file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_lazy_lazy_extension_test_proto_rawDesc), len(file_internal_testprotos_lazy_lazy_extension_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData)
+	return file_internal_testprotos_lazy_lazy_extension_test_proto_rawDescData
 }
 
 var file_internal_testprotos_lazy_lazy_extension_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go b/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go
index 1e203f3..a638dc4 100644
--- a/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go
+++ b/internal/testprotos/lazy/lazy_normalized_wire_test.pb.go
@@ -155,14 +155,14 @@
 
 var (
 	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData = file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc
+	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData)))
+		file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc), len(file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData)
+	return file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_rawDescData
 }
 
 var file_internal_testprotos_lazy_lazy_normalized_wire_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
diff --git a/internal/testprotos/lazy/lazy_tree.pb.go b/internal/testprotos/lazy/lazy_tree.pb.go
index acc2041..7ea57b3 100644
--- a/internal/testprotos/lazy/lazy_tree.pb.go
+++ b/internal/testprotos/lazy/lazy_tree.pb.go
@@ -220,14 +220,14 @@
 
 var (
 	file_internal_testprotos_lazy_lazy_tree_proto_rawDescOnce sync.Once
-	file_internal_testprotos_lazy_lazy_tree_proto_rawDescData = file_internal_testprotos_lazy_lazy_tree_proto_rawDesc
+	file_internal_testprotos_lazy_lazy_tree_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_lazy_lazy_tree_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_lazy_lazy_tree_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_lazy_lazy_tree_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_lazy_lazy_tree_proto_rawDescData)))
+		file_internal_testprotos_lazy_lazy_tree_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_lazy_lazy_tree_proto_rawDesc), len(file_internal_testprotos_lazy_lazy_tree_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_lazy_lazy_tree_proto_rawDescData)
+	return file_internal_testprotos_lazy_lazy_tree_proto_rawDescData
 }
 
 var file_internal_testprotos_lazy_lazy_tree_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
index a68f49c..0282276 100644
--- a/internal/testprotos/legacy/legacy.pb.go
+++ b/internal/testprotos/legacy/legacy.pb.go
@@ -268,14 +268,14 @@
 
 var (
 	file_internal_testprotos_legacy_legacy_proto_rawDescOnce sync.Once
-	file_internal_testprotos_legacy_legacy_proto_rawDescData = file_internal_testprotos_legacy_legacy_proto_rawDesc
+	file_internal_testprotos_legacy_legacy_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_legacy_legacy_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_legacy_legacy_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_legacy_legacy_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_legacy_legacy_proto_rawDescData)))
+		file_internal_testprotos_legacy_legacy_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_legacy_legacy_proto_rawDesc), len(file_internal_testprotos_legacy_legacy_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_legacy_legacy_proto_rawDescData)
+	return file_internal_testprotos_legacy_legacy_proto_rawDescData
 }
 
 var file_internal_testprotos_legacy_legacy_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/messageset/messagesetpb/message_set.pb.go b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
index f5be4a5..3e7b9c2 100644
--- a/internal/testprotos/messageset/messagesetpb/message_set.pb.go
+++ b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
@@ -122,14 +122,14 @@
 
 var (
 	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescOnce sync.Once
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData = file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc
+	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData)))
+		file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc), len(file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData)
+	return file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData
 }
 
 var file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
index 8e93eee..13b141d 100644
--- a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
+++ b/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
@@ -304,14 +304,14 @@
 
 var (
 	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescOnce sync.Once
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData = file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc
+	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData)))
+		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc), len(file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData)
+	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData
 }
 
 var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
diff --git a/internal/testprotos/mixed/mixed.pb.go b/internal/testprotos/mixed/mixed.pb.go
index 043fd7f..544c03a 100644
--- a/internal/testprotos/mixed/mixed.pb.go
+++ b/internal/testprotos/mixed/mixed.pb.go
@@ -901,14 +901,14 @@
 
 var (
 	file_internal_testprotos_mixed_mixed_proto_rawDescOnce sync.Once
-	file_internal_testprotos_mixed_mixed_proto_rawDescData = file_internal_testprotos_mixed_mixed_proto_rawDesc
+	file_internal_testprotos_mixed_mixed_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_mixed_mixed_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_mixed_mixed_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_mixed_mixed_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_mixed_mixed_proto_rawDescData)))
+		file_internal_testprotos_mixed_mixed_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_mixed_mixed_proto_rawDesc), len(file_internal_testprotos_mixed_mixed_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_mixed_mixed_proto_rawDescData)
+	return file_internal_testprotos_mixed_mixed_proto_rawDescData
 }
 
 var file_internal_testprotos_mixed_mixed_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
diff --git a/internal/testprotos/news/news.pb.go b/internal/testprotos/news/news.pb.go
index 6ed635c..8da3ef4 100644
--- a/internal/testprotos/news/news.pb.go
+++ b/internal/testprotos/news/news.pb.go
@@ -315,14 +315,14 @@
 
 var (
 	file_internal_testprotos_news_news_proto_rawDescOnce sync.Once
-	file_internal_testprotos_news_news_proto_rawDescData = file_internal_testprotos_news_news_proto_rawDesc
+	file_internal_testprotos_news_news_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_news_news_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_news_news_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_news_news_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_news_news_proto_rawDescData)))
+		file_internal_testprotos_news_news_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_news_news_proto_rawDesc), len(file_internal_testprotos_news_news_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_news_news_proto_rawDescData)
+	return file_internal_testprotos_news_news_proto_rawDescData
 }
 
 var file_internal_testprotos_news_news_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/order/order.pb.go b/internal/testprotos/order/order.pb.go
index 29e4c2c..88f2fca 100644
--- a/internal/testprotos/order/order.pb.go
+++ b/internal/testprotos/order/order.pb.go
@@ -179,14 +179,14 @@
 
 var (
 	file_internal_testprotos_order_order_proto_rawDescOnce sync.Once
-	file_internal_testprotos_order_order_proto_rawDescData = file_internal_testprotos_order_order_proto_rawDesc
+	file_internal_testprotos_order_order_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_order_order_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_order_order_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_order_order_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_order_order_proto_rawDescData)))
+		file_internal_testprotos_order_order_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_order_order_proto_rawDesc), len(file_internal_testprotos_order_order_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_order_order_proto_rawDescData)
+	return file_internal_testprotos_order_order_proto_rawDescData
 }
 
 var file_internal_testprotos_order_order_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/race/extender/test.pb.go b/internal/testprotos/race/extender/test.pb.go
index 73ee590..12cac0d 100644
--- a/internal/testprotos/race/extender/test.pb.go
+++ b/internal/testprotos/race/extender/test.pb.go
@@ -101,14 +101,14 @@
 
 var (
 	file_internal_testprotos_race_extender_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_race_extender_test_proto_rawDescData = file_internal_testprotos_race_extender_test_proto_rawDesc
+	file_internal_testprotos_race_extender_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_race_extender_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_race_extender_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_race_extender_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_race_extender_test_proto_rawDescData)))
+		file_internal_testprotos_race_extender_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_race_extender_test_proto_rawDesc), len(file_internal_testprotos_race_extender_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_race_extender_test_proto_rawDescData)
+	return file_internal_testprotos_race_extender_test_proto_rawDescData
 }
 
 var file_internal_testprotos_race_extender_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/race/message/test.pb.go b/internal/testprotos/race/message/test.pb.go
index 1387537..cfb2b7c 100644
--- a/internal/testprotos/race/message/test.pb.go
+++ b/internal/testprotos/race/message/test.pb.go
@@ -79,14 +79,14 @@
 
 var (
 	file_internal_testprotos_race_message_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_race_message_test_proto_rawDescData = file_internal_testprotos_race_message_test_proto_rawDesc
+	file_internal_testprotos_race_message_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_race_message_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_race_message_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_race_message_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_race_message_test_proto_rawDescData)))
+		file_internal_testprotos_race_message_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_race_message_test_proto_rawDesc), len(file_internal_testprotos_race_message_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_race_message_test_proto_rawDescData)
+	return file_internal_testprotos_race_message_test_proto_rawDescData
 }
 
 var file_internal_testprotos_race_message_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/registry/test.pb.go b/internal/testprotos/registry/test.pb.go
index 79399ac..60e0cd9 100644
--- a/internal/testprotos/registry/test.pb.go
+++ b/internal/testprotos/registry/test.pb.go
@@ -446,14 +446,14 @@
 
 var (
 	file_internal_testprotos_registry_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_registry_test_proto_rawDescData = file_internal_testprotos_registry_test_proto_rawDesc
+	file_internal_testprotos_registry_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_registry_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_registry_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_registry_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_registry_test_proto_rawDescData)))
+		file_internal_testprotos_registry_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_registry_test_proto_rawDesc), len(file_internal_testprotos_registry_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_registry_test_proto_rawDescData)
+	return file_internal_testprotos_registry_test_proto_rawDescData
 }
 
 var file_internal_testprotos_registry_test_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
diff --git a/internal/testprotos/required/required.pb.go b/internal/testprotos/required/required.pb.go
index cc2bcad..4f0a6be 100644
--- a/internal/testprotos/required/required.pb.go
+++ b/internal/testprotos/required/required.pb.go
@@ -808,14 +808,14 @@
 
 var (
 	file_internal_testprotos_required_required_proto_rawDescOnce sync.Once
-	file_internal_testprotos_required_required_proto_rawDescData = file_internal_testprotos_required_required_proto_rawDesc
+	file_internal_testprotos_required_required_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_required_required_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_required_required_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_required_required_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_required_required_proto_rawDescData)))
+		file_internal_testprotos_required_required_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_required_required_proto_rawDesc), len(file_internal_testprotos_required_required_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_required_required_proto_rawDescData)
+	return file_internal_testprotos_required_required_proto_rawDescData
 }
 
 var file_internal_testprotos_required_required_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 62bea3d..86475b7 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -6076,14 +6076,14 @@
 
 var (
 	file_internal_testprotos_test_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_proto_rawDescData = file_internal_testprotos_test_test_proto_rawDesc
+	file_internal_testprotos_test_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_test_proto_rawDescData)))
+		file_internal_testprotos_test_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_test_proto_rawDesc), len(file_internal_testprotos_test_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test_test_proto_rawDescData)
+	return file_internal_testprotos_test_test_proto_rawDescData
 }
 
 var file_internal_testprotos_test_test_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/internal/testprotos/test/test_import.pb.go b/internal/testprotos/test/test_import.pb.go
index d95c91c..a130124 100644
--- a/internal/testprotos/test/test_import.pb.go
+++ b/internal/testprotos/test/test_import.pb.go
@@ -122,14 +122,14 @@
 
 var (
 	file_internal_testprotos_test_test_import_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_import_proto_rawDescData = file_internal_testprotos_test_test_import_proto_rawDesc
+	file_internal_testprotos_test_test_import_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test_test_import_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test_test_import_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_import_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_test_import_proto_rawDescData)))
+		file_internal_testprotos_test_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_test_import_proto_rawDesc), len(file_internal_testprotos_test_test_import_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test_test_import_proto_rawDescData)
+	return file_internal_testprotos_test_test_import_proto_rawDescData
 }
 
 var file_internal_testprotos_test_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
index 220931f..c357edc 100644
--- a/internal/testprotos/test/test_public.pb.go
+++ b/internal/testprotos/test/test_public.pb.go
@@ -67,14 +67,14 @@
 
 var (
 	file_internal_testprotos_test_test_public_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_public_proto_rawDescData = file_internal_testprotos_test_test_public_proto_rawDesc
+	file_internal_testprotos_test_test_public_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test_test_public_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test_test_public_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_public_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_test_public_proto_rawDescData)))
+		file_internal_testprotos_test_test_public_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_test_public_proto_rawDesc), len(file_internal_testprotos_test_test_public_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test_test_public_proto_rawDescData)
+	return file_internal_testprotos_test_test_public_proto_rawDescData
 }
 
 var file_internal_testprotos_test_test_public_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/test/weak1/test_weak.pb.go b/internal/testprotos/test/weak1/test_weak.pb.go
index 8a4c208..b5cb76d 100644
--- a/internal/testprotos/test/weak1/test_weak.pb.go
+++ b/internal/testprotos/test/weak1/test_weak.pb.go
@@ -77,14 +77,14 @@
 
 var (
 	file_internal_testprotos_test_weak1_test_weak_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_weak1_test_weak_proto_rawDescData = file_internal_testprotos_test_weak1_test_weak_proto_rawDesc
+	file_internal_testprotos_test_weak1_test_weak_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test_weak1_test_weak_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test_weak1_test_weak_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_weak1_test_weak_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_weak1_test_weak_proto_rawDescData)))
+		file_internal_testprotos_test_weak1_test_weak_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_weak1_test_weak_proto_rawDesc), len(file_internal_testprotos_test_weak1_test_weak_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test_weak1_test_weak_proto_rawDescData)
+	return file_internal_testprotos_test_weak1_test_weak_proto_rawDescData
 }
 
 var file_internal_testprotos_test_weak1_test_weak_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/test/weak2/test_weak.pb.go b/internal/testprotos/test/weak2/test_weak.pb.go
index 1e57933..0b7c821 100644
--- a/internal/testprotos/test/weak2/test_weak.pb.go
+++ b/internal/testprotos/test/weak2/test_weak.pb.go
@@ -77,14 +77,14 @@
 
 var (
 	file_internal_testprotos_test_weak2_test_weak_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_weak2_test_weak_proto_rawDescData = file_internal_testprotos_test_weak2_test_weak_proto_rawDesc
+	file_internal_testprotos_test_weak2_test_weak_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test_weak2_test_weak_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test_weak2_test_weak_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_weak2_test_weak_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test_weak2_test_weak_proto_rawDescData)))
+		file_internal_testprotos_test_weak2_test_weak_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test_weak2_test_weak_proto_rawDesc), len(file_internal_testprotos_test_weak2_test_weak_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test_weak2_test_weak_proto_rawDescData)
+	return file_internal_testprotos_test_weak2_test_weak_proto_rawDescData
 }
 
 var file_internal_testprotos_test_weak2_test_weak_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
index a34ebc6..6c9d7be 100644
--- a/internal/testprotos/test3/test.pb.go
+++ b/internal/testprotos/test3/test.pb.go
@@ -1564,14 +1564,14 @@
 
 var (
 	file_internal_testprotos_test3_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test3_test_proto_rawDescData = file_internal_testprotos_test3_test_proto_rawDesc
+	file_internal_testprotos_test3_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test3_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test3_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test3_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test3_test_proto_rawDescData)))
+		file_internal_testprotos_test3_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test3_test_proto_rawDesc), len(file_internal_testprotos_test3_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test3_test_proto_rawDescData)
+	return file_internal_testprotos_test3_test_proto_rawDescData
 }
 
 var file_internal_testprotos_test3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/test3/test_import.pb.go b/internal/testprotos/test3/test_import.pb.go
index 73d53eb..ab14bb1 100644
--- a/internal/testprotos/test3/test_import.pb.go
+++ b/internal/testprotos/test3/test_import.pb.go
@@ -113,14 +113,14 @@
 
 var (
 	file_internal_testprotos_test3_test_import_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test3_test_import_proto_rawDescData = file_internal_testprotos_test3_test_import_proto_rawDesc
+	file_internal_testprotos_test3_test_import_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_test3_test_import_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_test3_test_import_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test3_test_import_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_test3_test_import_proto_rawDescData)))
+		file_internal_testprotos_test3_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_test3_test_import_proto_rawDesc), len(file_internal_testprotos_test3_test_import_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_test3_test_import_proto_rawDescData)
+	return file_internal_testprotos_test3_test_import_proto_rawDescData
 }
 
 var file_internal_testprotos_test3_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/testeditions/test.pb.go b/internal/testprotos/testeditions/test.pb.go
index 82d865c..07685b8 100644
--- a/internal/testprotos/testeditions/test.pb.go
+++ b/internal/testprotos/testeditions/test.pb.go
@@ -4237,14 +4237,14 @@
 
 var (
 	file_internal_testprotos_testeditions_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_testeditions_test_proto_rawDescData = file_internal_testprotos_testeditions_test_proto_rawDesc
+	file_internal_testprotos_testeditions_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_testeditions_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_testeditions_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_testeditions_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_testeditions_test_proto_rawDescData)))
+		file_internal_testprotos_testeditions_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_test_proto_rawDesc), len(file_internal_testprotos_testeditions_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_testeditions_test_proto_rawDescData)
+	return file_internal_testprotos_testeditions_test_proto_rawDescData
 }
 
 var file_internal_testprotos_testeditions_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/testeditions/test_extension.pb.go b/internal/testprotos/testeditions/test_extension.pb.go
index edbaf31..ea64aed 100644
--- a/internal/testprotos/testeditions/test_extension.pb.go
+++ b/internal/testprotos/testeditions/test_extension.pb.go
@@ -1277,14 +1277,14 @@
 
 var (
 	file_internal_testprotos_testeditions_test_extension_proto_rawDescOnce sync.Once
-	file_internal_testprotos_testeditions_test_extension_proto_rawDescData = file_internal_testprotos_testeditions_test_extension_proto_rawDesc
+	file_internal_testprotos_testeditions_test_extension_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_testeditions_test_extension_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_testeditions_test_extension_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_testeditions_test_extension_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_testeditions_test_extension_proto_rawDescData)))
+		file_internal_testprotos_testeditions_test_extension_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_test_extension_proto_rawDesc), len(file_internal_testprotos_testeditions_test_extension_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_testeditions_test_extension_proto_rawDescData)
+	return file_internal_testprotos_testeditions_test_extension_proto_rawDescData
 }
 
 var file_internal_testprotos_testeditions_test_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
diff --git a/internal/testprotos/testeditions/test_extension2.pb.go b/internal/testprotos/testeditions/test_extension2.pb.go
index 84e6b8c..ac7dd3e 100644
--- a/internal/testprotos/testeditions/test_extension2.pb.go
+++ b/internal/testprotos/testeditions/test_extension2.pb.go
@@ -157,14 +157,14 @@
 
 var (
 	file_internal_testprotos_testeditions_test_extension2_proto_rawDescOnce sync.Once
-	file_internal_testprotos_testeditions_test_extension2_proto_rawDescData = file_internal_testprotos_testeditions_test_extension2_proto_rawDesc
+	file_internal_testprotos_testeditions_test_extension2_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_testeditions_test_extension2_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_testeditions_test_extension2_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_testeditions_test_extension2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_testeditions_test_extension2_proto_rawDescData)))
+		file_internal_testprotos_testeditions_test_extension2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_test_extension2_proto_rawDesc), len(file_internal_testprotos_testeditions_test_extension2_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_testeditions_test_extension2_proto_rawDescData)
+	return file_internal_testprotos_testeditions_test_extension2_proto_rawDescData
 }
 
 var file_internal_testprotos_testeditions_test_extension2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/internal/testprotos/testeditions/test_import.pb.go b/internal/testprotos/testeditions/test_import.pb.go
index e2335d3..6e4ce22 100644
--- a/internal/testprotos/testeditions/test_import.pb.go
+++ b/internal/testprotos/testeditions/test_import.pb.go
@@ -114,14 +114,14 @@
 
 var (
 	file_internal_testprotos_testeditions_test_import_proto_rawDescOnce sync.Once
-	file_internal_testprotos_testeditions_test_import_proto_rawDescData = file_internal_testprotos_testeditions_test_import_proto_rawDesc
+	file_internal_testprotos_testeditions_test_import_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_testeditions_test_import_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_testeditions_test_import_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_testeditions_test_import_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_testeditions_test_import_proto_rawDescData)))
+		file_internal_testprotos_testeditions_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_testeditions_test_import_proto_rawDesc), len(file_internal_testprotos_testeditions_test_import_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_testeditions_test_import_proto_rawDescData)
+	return file_internal_testprotos_testeditions_test_import_proto_rawDescData
 }
 
 var file_internal_testprotos_testeditions_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/internal/testprotos/textpb2/test.pb.go b/internal/testprotos/textpb2/test.pb.go
index fed69da..454e9db 100644
--- a/internal/testprotos/textpb2/test.pb.go
+++ b/internal/testprotos/textpb2/test.pb.go
@@ -2152,14 +2152,14 @@
 
 var (
 	file_internal_testprotos_textpb2_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_textpb2_test_proto_rawDescData = file_internal_testprotos_textpb2_test_proto_rawDesc
+	file_internal_testprotos_textpb2_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_textpb2_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_textpb2_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_textpb2_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_textpb2_test_proto_rawDescData)))
+		file_internal_testprotos_textpb2_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_textpb2_test_proto_rawDesc), len(file_internal_testprotos_textpb2_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_textpb2_test_proto_rawDescData)
+	return file_internal_testprotos_textpb2_test_proto_rawDescData
 }
 
 var file_internal_testprotos_textpb2_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/internal/testprotos/textpb3/test.pb.go b/internal/testprotos/textpb3/test.pb.go
index 3efebff..a056e06 100644
--- a/internal/testprotos/textpb3/test.pb.go
+++ b/internal/testprotos/textpb3/test.pb.go
@@ -1287,14 +1287,14 @@
 
 var (
 	file_internal_testprotos_textpb3_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_textpb3_test_proto_rawDescData = file_internal_testprotos_textpb3_test_proto_rawDesc
+	file_internal_testprotos_textpb3_test_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_textpb3_test_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_textpb3_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_textpb3_test_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_textpb3_test_proto_rawDescData)))
+		file_internal_testprotos_textpb3_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_textpb3_test_proto_rawDesc), len(file_internal_testprotos_textpb3_test_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_textpb3_test_proto_rawDescData)
+	return file_internal_testprotos_textpb3_test_proto_rawDescData
 }
 
 var file_internal_testprotos_textpb3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
diff --git a/internal/testprotos/textpbeditions/test2.pb.go b/internal/testprotos/textpbeditions/test2.pb.go
index 9ecde5f..75d25dc 100644
--- a/internal/testprotos/textpbeditions/test2.pb.go
+++ b/internal/testprotos/textpbeditions/test2.pb.go
@@ -2569,14 +2569,14 @@
 
 var (
 	file_internal_testprotos_textpbeditions_test2_proto_rawDescOnce sync.Once
-	file_internal_testprotos_textpbeditions_test2_proto_rawDescData = file_internal_testprotos_textpbeditions_test2_proto_rawDesc
+	file_internal_testprotos_textpbeditions_test2_proto_rawDescData []byte
 )
 
 func file_internal_testprotos_textpbeditions_test2_proto_rawDescGZIP() []byte {
 	file_internal_testprotos_textpbeditions_test2_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_textpbeditions_test2_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_internal_testprotos_textpbeditions_test2_proto_rawDescData)))
+		file_internal_testprotos_textpbeditions_test2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_testprotos_textpbeditions_test2_proto_rawDesc), len(file_internal_testprotos_textpbeditions_test2_proto_rawDesc)))
 	})
-	return []byte(file_internal_testprotos_textpbeditions_test2_proto_rawDescData)
+	return file_internal_testprotos_textpbeditions_test2_proto_rawDescData
 }
 
 var file_internal_testprotos_textpbeditions_test2_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index 2985510..a516337 100644
--- a/types/descriptorpb/descriptor.pb.go
+++ b/types/descriptorpb/descriptor.pb.go
@@ -5135,14 +5135,14 @@
 
 var (
 	file_google_protobuf_descriptor_proto_rawDescOnce sync.Once
-	file_google_protobuf_descriptor_proto_rawDescData = file_google_protobuf_descriptor_proto_rawDesc
+	file_google_protobuf_descriptor_proto_rawDescData []byte
 )
 
 func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {
 	file_google_protobuf_descriptor_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_descriptor_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_descriptor_proto_rawDescData)))
+		file_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_descriptor_proto_rawDesc), len(file_google_protobuf_descriptor_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_descriptor_proto_rawDescData)
+	return file_google_protobuf_descriptor_proto_rawDescData
 }
 
 var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 17)
diff --git a/types/gofeaturespb/go_features.pb.go b/types/gofeaturespb/go_features.pb.go
index f9a45ce..28d24ba 100644
--- a/types/gofeaturespb/go_features.pb.go
+++ b/types/gofeaturespb/go_features.pb.go
@@ -288,14 +288,14 @@
 
 var (
 	file_google_protobuf_go_features_proto_rawDescOnce sync.Once
-	file_google_protobuf_go_features_proto_rawDescData = file_google_protobuf_go_features_proto_rawDesc
+	file_google_protobuf_go_features_proto_rawDescData []byte
 )
 
 func file_google_protobuf_go_features_proto_rawDescGZIP() []byte {
 	file_google_protobuf_go_features_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_go_features_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_go_features_proto_rawDescData)))
+		file_google_protobuf_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_go_features_proto_rawDesc), len(file_google_protobuf_go_features_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_go_features_proto_rawDescData)
+	return file_google_protobuf_go_features_proto_rawDescData
 }
 
 var file_google_protobuf_go_features_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
diff --git a/types/known/anypb/any.pb.go b/types/known/anypb/any.pb.go
index b2e97c7..497da66 100644
--- a/types/known/anypb/any.pb.go
+++ b/types/known/anypb/any.pb.go
@@ -432,14 +432,14 @@
 
 var (
 	file_google_protobuf_any_proto_rawDescOnce sync.Once
-	file_google_protobuf_any_proto_rawDescData = file_google_protobuf_any_proto_rawDesc
+	file_google_protobuf_any_proto_rawDescData []byte
 )
 
 func file_google_protobuf_any_proto_rawDescGZIP() []byte {
 	file_google_protobuf_any_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_any_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_any_proto_rawDescData)))
+		file_google_protobuf_any_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_any_proto_rawDesc), len(file_google_protobuf_any_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_any_proto_rawDescData)
+	return file_google_protobuf_any_proto_rawDescData
 }
 
 var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/apipb/api.pb.go b/types/known/apipb/api.pb.go
index ab936e2..69efac7 100644
--- a/types/known/apipb/api.pb.go
+++ b/types/known/apipb/api.pb.go
@@ -469,14 +469,14 @@
 
 var (
 	file_google_protobuf_api_proto_rawDescOnce sync.Once
-	file_google_protobuf_api_proto_rawDescData = file_google_protobuf_api_proto_rawDesc
+	file_google_protobuf_api_proto_rawDescData []byte
 )
 
 func file_google_protobuf_api_proto_rawDescGZIP() []byte {
 	file_google_protobuf_api_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_api_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_api_proto_rawDescData)))
+		file_google_protobuf_api_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_api_proto_rawDesc), len(file_google_protobuf_api_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_api_proto_rawDescData)
+	return file_google_protobuf_api_proto_rawDescData
 }
 
 var file_google_protobuf_api_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
diff --git a/types/known/durationpb/duration.pb.go b/types/known/durationpb/duration.pb.go
index 39128e2..193880d 100644
--- a/types/known/durationpb/duration.pb.go
+++ b/types/known/durationpb/duration.pb.go
@@ -310,14 +310,14 @@
 
 var (
 	file_google_protobuf_duration_proto_rawDescOnce sync.Once
-	file_google_protobuf_duration_proto_rawDescData = file_google_protobuf_duration_proto_rawDesc
+	file_google_protobuf_duration_proto_rawDescData []byte
 )
 
 func file_google_protobuf_duration_proto_rawDescGZIP() []byte {
 	file_google_protobuf_duration_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_duration_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_duration_proto_rawDescData)))
+		file_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_duration_proto_rawDescData)
+	return file_google_protobuf_duration_proto_rawDescData
 }
 
 var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/emptypb/empty.pb.go b/types/known/emptypb/empty.pb.go
index 8bc97dd..a5b8657 100644
--- a/types/known/emptypb/empty.pb.go
+++ b/types/known/emptypb/empty.pb.go
@@ -103,14 +103,14 @@
 
 var (
 	file_google_protobuf_empty_proto_rawDescOnce sync.Once
-	file_google_protobuf_empty_proto_rawDescData = file_google_protobuf_empty_proto_rawDesc
+	file_google_protobuf_empty_proto_rawDescData []byte
 )
 
 func file_google_protobuf_empty_proto_rawDescGZIP() []byte {
 	file_google_protobuf_empty_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_empty_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_empty_proto_rawDescData)))
+		file_google_protobuf_empty_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_empty_proto_rawDesc), len(file_google_protobuf_empty_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_empty_proto_rawDescData)
+	return file_google_protobuf_empty_proto_rawDescData
 }
 
 var file_google_protobuf_empty_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/fieldmaskpb/field_mask.pb.go b/types/known/fieldmaskpb/field_mask.pb.go
index 6c2e5ef..041feb0 100644
--- a/types/known/fieldmaskpb/field_mask.pb.go
+++ b/types/known/fieldmaskpb/field_mask.pb.go
@@ -524,14 +524,14 @@
 
 var (
 	file_google_protobuf_field_mask_proto_rawDescOnce sync.Once
-	file_google_protobuf_field_mask_proto_rawDescData = file_google_protobuf_field_mask_proto_rawDesc
+	file_google_protobuf_field_mask_proto_rawDescData []byte
 )
 
 func file_google_protobuf_field_mask_proto_rawDescGZIP() []byte {
 	file_google_protobuf_field_mask_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_field_mask_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_field_mask_proto_rawDescData)))
+		file_google_protobuf_field_mask_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_field_mask_proto_rawDesc), len(file_google_protobuf_field_mask_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_field_mask_proto_rawDescData)
+	return file_google_protobuf_field_mask_proto_rawDescData
 }
 
 var file_google_protobuf_field_mask_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/sourcecontextpb/source_context.pb.go b/types/known/sourcecontextpb/source_context.pb.go
index 7839673..0fdc155 100644
--- a/types/known/sourcecontextpb/source_context.pb.go
+++ b/types/known/sourcecontextpb/source_context.pb.go
@@ -112,14 +112,14 @@
 
 var (
 	file_google_protobuf_source_context_proto_rawDescOnce sync.Once
-	file_google_protobuf_source_context_proto_rawDescData = file_google_protobuf_source_context_proto_rawDesc
+	file_google_protobuf_source_context_proto_rawDescData []byte
 )
 
 func file_google_protobuf_source_context_proto_rawDescGZIP() []byte {
 	file_google_protobuf_source_context_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_source_context_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_source_context_proto_rawDescData)))
+		file_google_protobuf_source_context_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_source_context_proto_rawDesc), len(file_google_protobuf_source_context_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_source_context_proto_rawDescData)
+	return file_google_protobuf_source_context_proto_rawDescData
 }
 
 var file_google_protobuf_source_context_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/structpb/struct.pb.go b/types/known/structpb/struct.pb.go
index fc5df88..ecdd31a 100644
--- a/types/known/structpb/struct.pb.go
+++ b/types/known/structpb/struct.pb.go
@@ -724,14 +724,14 @@
 
 var (
 	file_google_protobuf_struct_proto_rawDescOnce sync.Once
-	file_google_protobuf_struct_proto_rawDescData = file_google_protobuf_struct_proto_rawDesc
+	file_google_protobuf_struct_proto_rawDescData []byte
 )
 
 func file_google_protobuf_struct_proto_rawDescGZIP() []byte {
 	file_google_protobuf_struct_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_struct_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_struct_proto_rawDescData)))
+		file_google_protobuf_struct_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_struct_proto_rawDesc), len(file_google_protobuf_struct_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_struct_proto_rawDescData)
+	return file_google_protobuf_struct_proto_rawDescData
 }
 
 var file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
diff --git a/types/known/timestamppb/timestamp.pb.go b/types/known/timestamppb/timestamp.pb.go
index 8373339..00ac835 100644
--- a/types/known/timestamppb/timestamp.pb.go
+++ b/types/known/timestamppb/timestamp.pb.go
@@ -319,14 +319,14 @@
 
 var (
 	file_google_protobuf_timestamp_proto_rawDescOnce sync.Once
-	file_google_protobuf_timestamp_proto_rawDescData = file_google_protobuf_timestamp_proto_rawDesc
+	file_google_protobuf_timestamp_proto_rawDescData []byte
 )
 
 func file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {
 	file_google_protobuf_timestamp_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_timestamp_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_timestamp_proto_rawDescData)))
+		file_google_protobuf_timestamp_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_timestamp_proto_rawDesc), len(file_google_protobuf_timestamp_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_timestamp_proto_rawDescData)
+	return file_google_protobuf_timestamp_proto_rawDescData
 }
 
 var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
diff --git a/types/known/typepb/type.pb.go b/types/known/typepb/type.pb.go
index 781bc39..70d4af9 100644
--- a/types/known/typepb/type.pb.go
+++ b/types/known/typepb/type.pb.go
@@ -842,14 +842,14 @@
 
 var (
 	file_google_protobuf_type_proto_rawDescOnce sync.Once
-	file_google_protobuf_type_proto_rawDescData = file_google_protobuf_type_proto_rawDesc
+	file_google_protobuf_type_proto_rawDescData []byte
 )
 
 func file_google_protobuf_type_proto_rawDescGZIP() []byte {
 	file_google_protobuf_type_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_type_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_type_proto_rawDescData)))
+		file_google_protobuf_type_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_type_proto_rawDesc), len(file_google_protobuf_type_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_type_proto_rawDescData)
+	return file_google_protobuf_type_proto_rawDescData
 }
 
 var file_google_protobuf_type_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
diff --git a/types/known/wrapperspb/wrappers.pb.go b/types/known/wrapperspb/wrappers.pb.go
index 7e96792..5de5301 100644
--- a/types/known/wrapperspb/wrappers.pb.go
+++ b/types/known/wrapperspb/wrappers.pb.go
@@ -568,14 +568,14 @@
 
 var (
 	file_google_protobuf_wrappers_proto_rawDescOnce sync.Once
-	file_google_protobuf_wrappers_proto_rawDescData = file_google_protobuf_wrappers_proto_rawDesc
+	file_google_protobuf_wrappers_proto_rawDescData []byte
 )
 
 func file_google_protobuf_wrappers_proto_rawDescGZIP() []byte {
 	file_google_protobuf_wrappers_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_wrappers_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_wrappers_proto_rawDescData)))
+		file_google_protobuf_wrappers_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_wrappers_proto_rawDesc), len(file_google_protobuf_wrappers_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_wrappers_proto_rawDescData)
+	return file_google_protobuf_wrappers_proto_rawDescData
 }
 
 var file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
diff --git a/types/pluginpb/plugin.pb.go b/types/pluginpb/plugin.pb.go
index 3e88022..6aed743 100644
--- a/types/pluginpb/plugin.pb.go
+++ b/types/pluginpb/plugin.pb.go
@@ -568,14 +568,14 @@
 
 var (
 	file_google_protobuf_compiler_plugin_proto_rawDescOnce sync.Once
-	file_google_protobuf_compiler_plugin_proto_rawDescData = file_google_protobuf_compiler_plugin_proto_rawDesc
+	file_google_protobuf_compiler_plugin_proto_rawDescData []byte
 )
 
 func file_google_protobuf_compiler_plugin_proto_rawDescGZIP() []byte {
 	file_google_protobuf_compiler_plugin_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_compiler_plugin_proto_rawDescData = string(protoimpl.X.CompressGZIP([]byte(file_google_protobuf_compiler_plugin_proto_rawDescData)))
+		file_google_protobuf_compiler_plugin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_compiler_plugin_proto_rawDesc), len(file_google_protobuf_compiler_plugin_proto_rawDesc)))
 	})
-	return []byte(file_google_protobuf_compiler_plugin_proto_rawDescData)
+	return file_google_protobuf_compiler_plugin_proto_rawDescData
 }
 
 var file_google_protobuf_compiler_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
