diff --git a/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go b/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
index aa87796..dc38a43 100644
--- a/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
+++ b/cmd/protoc-gen-go-grpc/testdata/grpc/grpc.pb.go
@@ -117,7 +117,7 @@
 	return file_grpc_grpc_proto_rawDescData
 }
 
-var file_grpc_grpc_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_grpc_grpc_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_grpc_grpc_proto_goTypes = []interface{}{
 	(*Request)(nil),  // 0: goproto.protoc.grpc.Request
 	(*Response)(nil), // 1: goproto.protoc.grpc.Response
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
index 0ff2946..d1dbc03 100644
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ b/cmd/protoc-gen-go/internal_gengo/reflect.go
@@ -28,7 +28,7 @@
 		g.P("var ", enumTypesVarName(f), " = make([]", protoreflectPackage.Ident("EnumType"), ",", len(f.allEnums), ")")
 	}
 	if len(f.allMessages) > 0 {
-		g.P("var ", messageTypesVarName(f), " = make([]", protoimplPackage.Ident("MessageType"), ",", len(f.allMessages), ")")
+		g.P("var ", messageTypesVarName(f), " = make([]", protoimplPackage.Ident("MessageInfo"), ",", len(f.allMessages), ")")
 	}
 
 	// Generate a unique list of Go types for all declarations and dependencies,
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
index d92d2a7..e9284d8 100644
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
@@ -139,7 +139,7 @@
 }
 
 var file_annotations_annotations_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_annotations_annotations_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_annotations_annotations_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_annotations_annotations_proto_goTypes = []interface{}{
 	(AnnotationsTestEnum)(0),       // 0: goproto.protoc.annotations.AnnotationsTestEnum
 	(*AnnotationsTestMessage)(nil), // 1: goproto.protoc.annotations.AnnotationsTestMessage
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
index 49483ae..0ba3de2 100644
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
@@ -275,7 +275,7 @@
 	return file_comments_comments_proto_rawDescData
 }
 
-var file_comments_comments_proto_msgTypes = make([]protoimpl.MessageType, 6)
+var file_comments_comments_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
 var file_comments_comments_proto_goTypes = []interface{}{
 	(*Message1)(nil),           // 0: goproto.protoc.comments.Message1
 	(*Message2)(nil),           // 1: goproto.protoc.comments.Message2
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
index cf55c78..c2bd058 100644
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
@@ -129,7 +129,7 @@
 }
 
 var file_comments_deprecated_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_comments_deprecated_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_comments_deprecated_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_comments_deprecated_proto_goTypes = []interface{}{
 	(DeprecatedEnum)(0),       // 0: goproto.protoc.comments.DeprecatedEnum
 	(*DeprecatedMessage)(nil), // 1: goproto.protoc.comments.DeprecatedMessage
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 42734fa..f68da27 100644
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
@@ -132,7 +132,7 @@
 	return file_extensions_base_base_proto_rawDescData
 }
 
-var file_extensions_base_base_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_extensions_base_base_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_extensions_base_base_proto_goTypes = []interface{}{
 	(*BaseMessage)(nil),                 // 0: goproto.protoc.extension.base.BaseMessage
 	(*MessageSetWireFormatMessage)(nil), // 1: goproto.protoc.extension.base.MessageSetWireFormatMessage
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 0b26bd8..9384235 100644
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
@@ -1156,7 +1156,7 @@
 }
 
 var file_extensions_ext_ext_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_extensions_ext_ext_proto_msgTypes = make([]protoimpl.MessageType, 8)
+var file_extensions_ext_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
 var file_extensions_ext_ext_proto_goTypes = []interface{}{
 	(Enum)(0),                             // 0: goproto.protoc.extension.ext.Enum
 	(*Message)(nil),                       // 1: goproto.protoc.extension.ext.Message
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 e8b7516..b8e5349 100644
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
@@ -78,7 +78,7 @@
 	return file_extensions_extra_extra_proto_rawDescData
 }
 
-var file_extensions_extra_extra_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_extensions_extra_extra_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_extensions_extra_extra_proto_goTypes = []interface{}{
 	(*ExtraMessage)(nil), // 0: goproto.protoc.extension.extra.ExtraMessage
 }
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 e8cf547..8b41e4a 100644
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
@@ -687,7 +687,7 @@
 }
 
 var file_extensions_proto3_ext3_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_extensions_proto3_ext3_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_extensions_proto3_ext3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_extensions_proto3_ext3_proto_goTypes = []interface{}{
 	(Enum)(0),                           // 0: goproto.protoc.extension.proto3.Enum
 	(*Message)(nil),                     // 1: goproto.protoc.extension.proto3.Message
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
index 3bdfa1c..a8f24ba 100644
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
+++ b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
@@ -372,7 +372,7 @@
 	return file_fieldnames_fieldnames_proto_rawDescData
 }
 
-var file_fieldnames_fieldnames_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_fieldnames_fieldnames_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_fieldnames_fieldnames_proto_goTypes = []interface{}{
 	(*Message)(nil),                      // 0: goproto.protoc.fieldnames.Message
 	(*Message_OneofMessageConflict)(nil), // 1: goproto.protoc.fieldnames.Message.OneofMessageConflict
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 fb39415..081f42e 100644
--- a/cmd/protoc-gen-go/testdata/import_public/a.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
@@ -144,7 +144,7 @@
 	return file_import_public_a_proto_rawDescData
 }
 
-var file_import_public_a_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_import_public_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_import_public_a_proto_goTypes = []interface{}{
 	(*Public)(nil), // 0: goproto.protoc.import_public.Public
 	(*sub.M)(nil),  // 1: goproto.protoc.import_public.sub.M
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 9d80fc7..10c7d90 100644
--- a/cmd/protoc-gen-go/testdata/import_public/b.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
@@ -93,7 +93,7 @@
 	return file_import_public_b_proto_rawDescData
 }
 
-var file_import_public_b_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_import_public_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_import_public_b_proto_goTypes = []interface{}{
 	(*Local)(nil), // 0: goproto.protoc.import_public.Local
 	(*sub.M)(nil), // 1: goproto.protoc.import_public.sub.M
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 15d1212..2d05da8 100644
--- a/cmd/protoc-gen-go/testdata/import_public/c.pb.go
+++ b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
@@ -98,7 +98,7 @@
 	return file_import_public_c_proto_rawDescData
 }
 
-var file_import_public_c_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_import_public_c_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_import_public_c_proto_goTypes = []interface{}{
 	(*UsingPublicImport)(nil), // 0: goproto.protoc.import_public.UsingPublicImport
 	(*Local)(nil),             // 1: goproto.protoc.import_public.Local
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 d90e5b3..2adcd23 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
@@ -463,7 +463,7 @@
 }
 
 var file_import_public_sub_a_proto_enumTypes = make([]protoreflect.EnumType, 3)
-var file_import_public_sub_a_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_import_public_sub_a_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_import_public_sub_a_proto_goTypes = []interface{}{
 	(E)(0),                               // 0: goproto.protoc.import_public.sub.E
 	(M_Subenum)(0),                       // 1: goproto.protoc.import_public.sub.M.Subenum
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 c6f06ef..707bfec 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
@@ -68,7 +68,7 @@
 	return file_import_public_sub_b_proto_rawDescData
 }
 
-var file_import_public_sub_b_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_import_public_sub_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_import_public_sub_b_proto_goTypes = []interface{}{
 	(*M2)(nil), // 0: goproto.protoc.import_public.sub.M2
 }
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 a492967..428377f 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
@@ -69,7 +69,7 @@
 	return file_import_public_sub2_a_proto_rawDescData
 }
 
-var file_import_public_sub2_a_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_import_public_sub2_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_import_public_sub2_a_proto_goTypes = []interface{}{
 	(*Sub2Message)(nil), // 0: goproto.protoc.import_public.sub2.Sub2Message
 }
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 4d0b765..3f5cdd6 100644
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
+++ b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
@@ -66,7 +66,7 @@
 	return file_imports_fmt_m_proto_rawDescData
 }
 
-var file_imports_fmt_m_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_fmt_m_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_fmt_m_proto_goTypes = []interface{}{
 	(*M)(nil), // 0: fmt.M
 }
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 1e13347..c1e2e93 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
@@ -153,7 +153,7 @@
 }
 
 var file_imports_test_a_1_m1_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_imports_test_a_1_m1_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_imports_test_a_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_imports_test_a_1_m1_proto_goTypes = []interface{}{
 	(E1)(0),      // 0: test.a.E1
 	(*M1)(nil),   // 1: test.a.M1
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 5b940a3..4ba2564 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
@@ -67,7 +67,7 @@
 	return file_imports_test_a_1_m2_proto_rawDescData
 }
 
-var file_imports_test_a_1_m2_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_a_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_a_1_m2_proto_goTypes = []interface{}{
 	(*M2)(nil), // 0: test.a.M2
 }
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 863ede3..28a60fd 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
@@ -67,7 +67,7 @@
 	return file_imports_test_a_2_m3_proto_rawDescData
 }
 
-var file_imports_test_a_2_m3_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_a_2_m3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_a_2_m3_proto_goTypes = []interface{}{
 	(*M3)(nil), // 0: test.a.M3
 }
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 727105f..13d65b9 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
@@ -67,7 +67,7 @@
 	return file_imports_test_a_2_m4_proto_rawDescData
 }
 
-var file_imports_test_a_2_m4_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_a_2_m4_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_a_2_m4_proto_goTypes = []interface{}{
 	(*M4)(nil), // 0: test.a.M4
 }
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 ee0fee9..b6b6f01 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
@@ -68,7 +68,7 @@
 	return file_imports_test_b_1_m1_proto_rawDescData
 }
 
-var file_imports_test_b_1_m1_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_b_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_b_1_m1_proto_goTypes = []interface{}{
 	(*M1)(nil), // 0: test.b.part1.M1
 }
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 dc717c0..b244ac2 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
@@ -68,7 +68,7 @@
 	return file_imports_test_b_1_m2_proto_rawDescData
 }
 
-var file_imports_test_b_1_m2_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_b_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_b_1_m2_proto_goTypes = []interface{}{
 	(*M2)(nil), // 0: test.b.part2.M2
 }
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 db25972..ea5ba70 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
@@ -79,7 +79,7 @@
 	return file_imports_test_import_a1m1_proto_rawDescData
 }
 
-var file_imports_test_import_a1m1_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_import_a1m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_import_a1m1_proto_goTypes = []interface{}{
 	(*A1M1)(nil),        // 0: test.A1M1
 	(*test_a_1.M1)(nil), // 1: test.a.M1
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 e634cfc..4ea4e2c 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
@@ -79,7 +79,7 @@
 	return file_imports_test_import_a1m2_proto_rawDescData
 }
 
-var file_imports_test_import_a1m2_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_import_a1m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_import_a1m2_proto_goTypes = []interface{}{
 	(*A1M2)(nil),        // 0: test.A1M2
 	(*test_a_1.M2)(nil), // 1: test.a.M2
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 4d21640..d3e68e2 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
@@ -132,7 +132,7 @@
 	return file_imports_test_import_all_proto_rawDescData
 }
 
-var file_imports_test_import_all_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_imports_test_import_all_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_imports_test_import_all_proto_goTypes = []interface{}{
 	(*All)(nil),         // 0: test.All
 	(*test_a_1.M1)(nil), // 1: test.a.M1
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 65c1987..216823c 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
@@ -99,7 +99,7 @@
 	return file_issue780_oneof_conflict_test_proto_rawDescData
 }
 
-var file_issue780_oneof_conflict_test_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_issue780_oneof_conflict_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_issue780_oneof_conflict_test_proto_goTypes = []interface{}{
 	(*Foo)(nil), // 0: oneoftest.Foo
 }
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
index a6950ca..39160d7 100644
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
@@ -141,7 +141,7 @@
 }
 
 var file_nopackage_nopackage_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_nopackage_nopackage_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_nopackage_nopackage_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_nopackage_nopackage_proto_goTypes = []interface{}{
 	(Enum)(0),       // 0: Enum
 	(*Message)(nil), // 1: Message
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
index d66a422..acbbbba 100644
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
@@ -484,7 +484,7 @@
 }
 
 var file_proto2_enum_proto_enumTypes = make([]protoreflect.EnumType, 6)
-var file_proto2_enum_proto_msgTypes = make([]protoimpl.MessageType, 2)
+var file_proto2_enum_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_proto2_enum_proto_goTypes = []interface{}{
 	(EnumType1)(0), // 0: goproto.protoc.proto2.EnumType1
 	(EnumType2)(0), // 1: goproto.protoc.proto2.EnumType2
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
index 187c725..a97e2c0 100644
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
@@ -1688,7 +1688,7 @@
 }
 
 var file_proto2_fields_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_proto2_fields_proto_msgTypes = make([]protoimpl.MessageType, 9)
+var file_proto2_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
 var file_proto2_fields_proto_goTypes = []interface{}{
 	(FieldTestMessage_Enum)(0),             // 0: goproto.protoc.proto2.FieldTestMessage.Enum
 	(*FieldTestMessage)(nil),               // 1: goproto.protoc.proto2.FieldTestMessage
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 ef4753a..c216877 100644
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
@@ -162,7 +162,7 @@
 	return file_proto2_nested_messages_proto_rawDescData
 }
 
-var file_proto2_nested_messages_proto_msgTypes = make([]protoimpl.MessageType, 3)
+var file_proto2_nested_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
 var file_proto2_nested_messages_proto_goTypes = []interface{}{
 	(*Layer1)(nil),               // 0: goproto.protoc.proto2.Layer1
 	(*Layer1_Layer2)(nil),        // 1: goproto.protoc.proto2.Layer1.Layer2
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
index 2853112..332b5ea 100644
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
@@ -87,7 +87,7 @@
 	return file_proto2_proto2_proto_rawDescData
 }
 
-var file_proto2_proto2_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_proto2_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_proto2_proto2_proto_goTypes = []interface{}{
 	(*Message)(nil), // 0: goproto.protoc.proto2.Message
 }
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
index 97a38f8..40e7fdc 100644
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
@@ -578,7 +578,7 @@
 }
 
 var file_proto3_fields_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_proto3_fields_proto_msgTypes = make([]protoimpl.MessageType, 5)
+var file_proto3_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
 var file_proto3_fields_proto_goTypes = []interface{}{
 	(FieldTestMessage_Enum)(0),       // 0: goproto.protoc.proto3.FieldTestMessage.Enum
 	(*FieldTestMessage)(nil),         // 1: goproto.protoc.proto3.FieldTestMessage
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
index bc90995..841ef58 100644
--- a/encoding/testprotos/pb2/test.pb.go
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -1947,7 +1947,7 @@
 }
 
 var file_pb2_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
-var file_pb2_test_proto_msgTypes = make([]protoimpl.MessageType, 20)
+var file_pb2_test_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
 var file_pb2_test_proto_goTypes = []interface{}{
 	(Enum)(0),                             // 0: pb2.Enum
 	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
diff --git a/encoding/testprotos/pb3/test.pb.go b/encoding/testprotos/pb3/test.pb.go
index 1df06ec..b739df1 100644
--- a/encoding/testprotos/pb3/test.pb.go
+++ b/encoding/testprotos/pb3/test.pb.go
@@ -726,7 +726,7 @@
 }
 
 var file_pb3_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
-var file_pb3_test_proto_msgTypes = make([]protoimpl.MessageType, 12)
+var file_pb3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
 var file_pb3_test_proto_goTypes = []interface{}{
 	(Enum)(0),             // 0: pb3.Enum
 	(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
diff --git a/internal/fileinit/desc.go b/internal/fileinit/desc.go
index 0804bf8..4a0861b 100644
--- a/internal/fileinit/desc.go
+++ b/internal/fileinit/desc.go
@@ -111,7 +111,7 @@
 	// MessageOutputTypes is where Init stores all initialized message types
 	// in "flattened ordering". This includes slots for map entry messages,
 	// which are skipped over.
-	MessageOutputTypes []pimpl.MessageType
+	MessageOutputTypes []pimpl.MessageInfo
 	// ExtensionOutputTypes is where Init stores all initialized extension types
 	// in "flattened ordering".
 	ExtensionOutputTypes []pref.ExtensionType
diff --git a/internal/impl/codec_extension.go b/internal/impl/codec_extension.go
index b92932d..714dec7 100644
--- a/internal/impl/codec_extension.go
+++ b/internal/impl/codec_extension.go
@@ -15,7 +15,7 @@
 	funcs   ifaceCoderFuncs
 }
 
-func (mi *MessageType) extensionFieldInfo(desc *piface.ExtensionDescV1) *extensionFieldInfo {
+func (mi *MessageInfo) extensionFieldInfo(desc *piface.ExtensionDescV1) *extensionFieldInfo {
 	// As of this time (Go 1.12, linux/amd64), an RWMutex benchmarks as faster
 	// than a sync.Map.
 	mi.extensionFieldInfosMu.RLock()
diff --git a/internal/impl/encode.go b/internal/impl/encode.go
index c0fce6c..e3ba7cf 100644
--- a/internal/impl/encode.go
+++ b/internal/impl/encode.go
@@ -49,11 +49,11 @@
 func (o marshalOptions) UseCachedSize() bool { return o&marshalUseCachedSize != 0 }
 
 // size is protoreflect.Methods.Size.
-func (mi *MessageType) size(msg pref.ProtoMessage) (size int) {
+func (mi *MessageInfo) size(msg pref.ProtoMessage) (size int) {
 	return mi.sizePointer(pointerOfIface(msg), 0)
 }
 
-func (mi *MessageType) sizePointer(p pointer, opts marshalOptions) (size int) {
+func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {
 	mi.init()
 	if p.IsNil() {
 		return 0
@@ -64,7 +64,7 @@
 	return mi.sizePointerSlow(p, opts)
 }
 
-func (mi *MessageType) sizePointerSlow(p pointer, opts marshalOptions) (size int) {
+func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) {
 	if mi.extensionOffset.IsValid() {
 		e := p.Apply(mi.extensionOffset).Extensions()
 		size += mi.sizeExtensions(e, opts)
@@ -90,11 +90,11 @@
 }
 
 // marshalAppend is protoreflect.Methods.MarshalAppend.
-func (mi *MessageType) marshalAppend(b []byte, msg pref.ProtoMessage, opts piface.MarshalOptions) ([]byte, error) {
+func (mi *MessageInfo) marshalAppend(b []byte, msg pref.ProtoMessage, opts piface.MarshalOptions) ([]byte, error) {
 	return mi.marshalAppendPointer(b, pointerOfIface(msg), newMarshalOptions(opts))
 }
 
-func (mi *MessageType) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {
+func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {
 	mi.init()
 	if p.IsNil() {
 		return b, nil
@@ -130,7 +130,7 @@
 	return b, nerr.E
 }
 
-func (mi *MessageType) sizeExtensions(ext *legacyExtensionMap, opts marshalOptions) (n int) {
+func (mi *MessageInfo) sizeExtensions(ext *legacyExtensionMap, opts marshalOptions) (n int) {
 	if ext == nil {
 		return 0
 	}
@@ -144,7 +144,7 @@
 	return n
 }
 
-func (mi *MessageType) appendExtensions(b []byte, ext *legacyExtensionMap, opts marshalOptions) ([]byte, error) {
+func (mi *MessageInfo) appendExtensions(b []byte, ext *legacyExtensionMap, opts marshalOptions) ([]byte, error) {
 	if ext == nil {
 		return b, nil
 	}
diff --git a/internal/impl/encode_field.go b/internal/impl/encode_field.go
index 6dbbed1..2e4884d 100644
--- a/internal/impl/encode_field.go
+++ b/internal/impl/encode_field.go
@@ -70,13 +70,13 @@
 }
 
 func makeMessageFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if fi, ok := getMessageType(ft); ok {
+	if fi, ok := getMessageInfo(ft); ok {
 		return pointerCoderFuncs{
 			size: func(p pointer, tagsize int, opts marshalOptions) int {
-				return sizeMessageType(p, fi, tagsize, opts)
+				return sizeMessageInfo(p, fi, tagsize, opts)
 			},
 			marshal: func(b []byte, p pointer, wiretag uint64, opts marshalOptions) ([]byte, error) {
-				return appendMessageType(b, p, wiretag, fi, opts)
+				return appendMessageInfo(b, p, wiretag, fi, opts)
 			},
 		}
 	} else {
@@ -93,11 +93,11 @@
 	}
 }
 
-func sizeMessageType(p pointer, mi *MessageType, tagsize int, opts marshalOptions) int {
+func sizeMessageInfo(p pointer, mi *MessageInfo, tagsize int, opts marshalOptions) int {
 	return wire.SizeBytes(mi.sizePointer(p.Elem(), opts)) + tagsize
 }
 
-func appendMessageType(b []byte, p pointer, wiretag uint64, mi *MessageType, opts marshalOptions) ([]byte, error) {
+func appendMessageInfo(b []byte, p pointer, wiretag uint64, mi *MessageInfo, opts marshalOptions) ([]byte, error) {
 	b = wire.AppendVarint(b, wiretag)
 	b = wire.AppendVarint(b, uint64(mi.sizePointer(p.Elem(), opts)))
 	return mi.marshalAppendPointer(b, p.Elem(), opts)
@@ -129,7 +129,7 @@
 }
 
 func makeGroupFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if fi, ok := getMessageType(ft); ok {
+	if fi, ok := getMessageInfo(ft); ok {
 		return pointerCoderFuncs{
 			size: func(p pointer, tagsize int, opts marshalOptions) int {
 				return sizeGroupType(p, fi, tagsize, opts)
@@ -152,11 +152,11 @@
 	}
 }
 
-func sizeGroupType(p pointer, mi *MessageType, tagsize int, opts marshalOptions) int {
+func sizeGroupType(p pointer, mi *MessageInfo, tagsize int, opts marshalOptions) int {
 	return 2*tagsize + mi.sizePointer(p.Elem(), opts)
 }
 
-func appendGroupType(b []byte, p pointer, wiretag uint64, mi *MessageType, opts marshalOptions) ([]byte, error) {
+func appendGroupType(b []byte, p pointer, wiretag uint64, mi *MessageInfo, opts marshalOptions) ([]byte, error) {
 	b = wire.AppendVarint(b, wiretag) // start group
 	b, err := mi.marshalAppendPointer(b, p.Elem(), opts)
 	b = wire.AppendVarint(b, wiretag+1) // end group
@@ -190,7 +190,7 @@
 }
 
 func makeMessageSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if fi, ok := getMessageType(ft); ok {
+	if fi, ok := getMessageInfo(ft); ok {
 		return pointerCoderFuncs{
 			marshal: func(b []byte, p pointer, wiretag uint64, opts marshalOptions) ([]byte, error) {
 				return appendMessageSliceInfo(b, p, wiretag, fi, opts)
@@ -210,7 +210,7 @@
 	}
 }
 
-func sizeMessageSliceInfo(p pointer, mi *MessageType, tagsize int, opts marshalOptions) int {
+func sizeMessageSliceInfo(p pointer, mi *MessageInfo, tagsize int, opts marshalOptions) int {
 	s := p.PointerSlice()
 	n := 0
 	for _, v := range s {
@@ -219,7 +219,7 @@
 	return n
 }
 
-func appendMessageSliceInfo(b []byte, p pointer, wiretag uint64, mi *MessageType, opts marshalOptions) ([]byte, error) {
+func appendMessageSliceInfo(b []byte, p pointer, wiretag uint64, mi *MessageInfo, opts marshalOptions) ([]byte, error) {
 	s := p.PointerSlice()
 	var nerr errors.NonFatal
 	var err error
@@ -280,7 +280,7 @@
 }
 
 func makeGroupSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if fi, ok := getMessageType(ft); ok {
+	if fi, ok := getMessageInfo(ft); ok {
 		return pointerCoderFuncs{
 			size: func(p pointer, tagsize int, opts marshalOptions) int {
 				return sizeGroupSliceInfo(p, fi, tagsize, opts)
@@ -326,7 +326,7 @@
 	return b, nerr.E
 }
 
-func sizeGroupSliceInfo(p pointer, mi *MessageType, tagsize int, opts marshalOptions) int {
+func sizeGroupSliceInfo(p pointer, mi *MessageInfo, tagsize int, opts marshalOptions) int {
 	s := p.PointerSlice()
 	n := 0
 	for _, v := range s {
@@ -335,7 +335,7 @@
 	return n
 }
 
-func appendGroupSliceInfo(b []byte, p pointer, wiretag uint64, mi *MessageType, opts marshalOptions) ([]byte, error) {
+func appendGroupSliceInfo(b []byte, p pointer, wiretag uint64, mi *MessageInfo, opts marshalOptions) ([]byte, error) {
 	s := p.PointerSlice()
 	var nerr errors.NonFatal
 	var err error
diff --git a/internal/impl/message.go b/internal/impl/message.go
index 1c6ab9b..d64ee7f 100644
--- a/internal/impl/message.go
+++ b/internal/impl/message.go
@@ -18,10 +18,10 @@
 	piface "google.golang.org/protobuf/runtime/protoiface"
 )
 
-// MessageType provides protobuf related functionality for a given Go type
-// that represents a message. A given instance of MessageType is tied to
+// MessageInfo provides protobuf related functionality for a given Go type
+// that represents a message. A given instance of MessageInfo is tied to
 // exactly one Go type, which must be a pointer to a struct type.
-type MessageType struct {
+type MessageInfo struct {
 	// GoType is the underlying message Go type and must be populated.
 	// Once set, this field must never be mutated.
 	GoType reflect.Type // pointer to struct
@@ -53,13 +53,13 @@
 
 var prefMessageType = reflect.TypeOf((*pref.Message)(nil)).Elem()
 
-// getMessageType returns the MessageType (if any) for a type.
+// getMessageInfo returns the MessageInfo (if any) for a type.
 //
-// We find the MessageType by calling the ProtoReflect method on the type's
+// We find the MessageInfo by calling the ProtoReflect method on the type's
 // zero value and looking at the returned type to see if it is a
-// messageReflectWrapper. Note that the MessageType may still be uninitialized
+// messageReflectWrapper. Note that the MessageInfo may still be uninitialized
 // at this point.
-func getMessageType(mt reflect.Type) (mi *MessageType, ok bool) {
+func getMessageInfo(mt reflect.Type) (mi *MessageInfo, ok bool) {
 	method, ok := mt.MethodByName("ProtoReflect")
 	if !ok {
 		return nil, false
@@ -75,7 +75,7 @@
 	return m.mi, true
 }
 
-func (mi *MessageType) init() {
+func (mi *MessageInfo) init() {
 	// This function is called in the hot path. Inline the sync.Once
 	// logic, since allocating a closure for Once.Do is expensive.
 	// Keep init small to ensure that it can be inlined.
@@ -85,7 +85,7 @@
 	mi.initOnce()
 }
 
-func (mi *MessageType) initOnce() {
+func (mi *MessageInfo) initOnce() {
 	mi.initMu.Lock()
 	defer mi.initMu.Unlock()
 	if mi.initDone == 1 {
@@ -108,7 +108,7 @@
 
 var sizecacheType = reflect.TypeOf(int32(0))
 
-func (mi *MessageType) makeMethods(t reflect.Type) {
+func (mi *MessageInfo) makeMethods(t reflect.Type) {
 	mi.extensionOffset = invalidOffset
 	if fx, _ := t.FieldByName("XXX_InternalExtensions"); fx.Type == extType {
 		mi.extensionOffset = offsetOf(fx)
@@ -135,7 +135,7 @@
 	oneofWrappersByNumber map[pref.FieldNumber]reflect.Type
 }
 
-func (mi *MessageType) makeStructInfo(t reflect.Type) structInfo {
+func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {
 	// Generate a mapping of field numbers and names to Go struct field or type.
 	si := structInfo{
 		fieldsByNumber:        map[pref.FieldNumber]reflect.StructField{},
@@ -186,7 +186,7 @@
 //
 // This code assumes that the struct is well-formed and panics if there are
 // any discrepancies.
-func (mi *MessageType) makeKnownFieldsFunc(si structInfo) {
+func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) {
 	mi.fields = map[pref.FieldNumber]*fieldInfo{}
 	mi.fieldsOrdered = make([]*fieldInfo, 0, mi.PBType.Fields().Len())
 	for i := 0; i < mi.PBType.Descriptor().Fields().Len(); i++ {
@@ -230,7 +230,7 @@
 	}
 }
 
-func (mi *MessageType) makeUnknownFieldsFunc(t reflect.Type) {
+func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type) {
 	if f := makeLegacyUnknownFieldsFunc(t); f != nil {
 		mi.unknownFields = f
 		return
@@ -240,7 +240,7 @@
 	}
 }
 
-func (mi *MessageType) makeExtensionFieldsFunc(t reflect.Type) {
+func (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type) {
 	if f := makeLegacyExtensionFieldsFunc(t); f != nil {
 		mi.extensionFields = f
 		return
@@ -250,16 +250,16 @@
 	}
 }
 
-func (mi *MessageType) MessageOf(p interface{}) pref.Message {
+func (mi *MessageInfo) MessageOf(p interface{}) pref.Message {
 	return (*messageReflectWrapper)(mi.dataTypeOf(p))
 }
 
-func (mi *MessageType) Methods() *piface.Methods {
+func (mi *MessageInfo) Methods() *piface.Methods {
 	mi.init()
 	return &mi.methods
 }
 
-func (mi *MessageType) dataTypeOf(p interface{}) *messageDataType {
+func (mi *MessageInfo) dataTypeOf(p interface{}) *messageDataType {
 	// TODO: Remove this check? This API is primarily used by generated code,
 	// and should not violate this assumption. Leave this check in for now to
 	// provide some sanity checks during development. This can be removed if
@@ -273,14 +273,14 @@
 // messageDataType is a tuple of a pointer to the message data and
 // a pointer to the message type.
 //
-// TODO: Unfortunately, we need to close over a pointer and MessageType,
+// TODO: Unfortunately, we need to close over a pointer and MessageInfo,
 // which incurs an an allocation. This pair is similar to a Go interface,
 // which is essentially a tuple of the same thing. We can make this efficient
 // with reflect.NamedOf (see https://golang.org/issues/16522).
 //
 // With that hypothetical API, we could dynamically create a new named type
-// that has the same underlying type as MessageType.GoType, and
-// dynamically create methods that close over MessageType.
+// that has the same underlying type as MessageInfo.GoType, and
+// dynamically create methods that close over MessageInfo.
 // Since the new type would have the same underlying type, we could directly
 // convert between pointers of those types, giving us an efficient way to swap
 // out the method set.
@@ -290,7 +290,7 @@
 //	2. generate more types and methods, at the expense of binary size increase.
 type messageDataType struct {
 	p  pointer
-	mi *MessageType
+	mi *MessageInfo
 }
 
 type messageReflectWrapper messageDataType
diff --git a/internal/impl/message_field_extension.go b/internal/impl/message_field_extension.go
index 47ccc45..ada2f87 100644
--- a/internal/impl/message_field_extension.go
+++ b/internal/impl/message_field_extension.go
@@ -45,7 +45,7 @@
 }
 
 type legacyExtensionFields struct {
-	mi *MessageType
+	mi *MessageInfo
 	x  *legacyExtensionMap
 }
 
diff --git a/internal/impl/message_test.go b/internal/impl/message_test.go
index ba4aa51..26f8db6 100644
--- a/internal/impl/message_test.go
+++ b/internal/impl/message_test.go
@@ -189,7 +189,7 @@
 	MapBytes   map[MyString]MyBytes
 )
 
-var scalarProto2Type = pimpl.MessageType{GoType: reflect.TypeOf(new(ScalarProto2)), PBType: ptype.GoMessage(
+var scalarProto2Type = pimpl.MessageInfo{GoType: reflect.TypeOf(new(ScalarProto2)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto2,
 		FullName: "ScalarProto2",
@@ -304,7 +304,7 @@
 	MyBytesA  MyString  `protobuf:"22"`
 }
 
-var scalarProto3Type = pimpl.MessageType{GoType: reflect.TypeOf(new(ScalarProto3)), PBType: ptype.GoMessage(
+var scalarProto3Type = pimpl.MessageInfo{GoType: reflect.TypeOf(new(ScalarProto3)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto3,
 		FullName: "ScalarProto3",
@@ -437,7 +437,7 @@
 	MyBytes4   ListStrings `protobuf:"19"`
 }
 
-var listScalarsType = pimpl.MessageType{GoType: reflect.TypeOf(new(ListScalars)), PBType: ptype.GoMessage(
+var listScalarsType = pimpl.MessageInfo{GoType: reflect.TypeOf(new(ListScalars)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto2,
 		FullName: "ListScalars",
@@ -628,7 +628,7 @@
 	}
 }
 
-var mapScalarsType = pimpl.MessageType{GoType: reflect.TypeOf(new(MapScalars)), PBType: ptype.GoMessage(
+var mapScalarsType = pimpl.MessageInfo{GoType: reflect.TypeOf(new(MapScalars)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto2,
 		FullName: "MapScalars",
@@ -807,7 +807,7 @@
 	Union isOneofScalars_Union `protobuf_oneof:"union"`
 }
 
-var oneofScalarsType = pimpl.MessageType{GoType: reflect.TypeOf(new(OneofScalars)), PBType: ptype.GoMessage(
+var oneofScalarsType = pimpl.MessageInfo{GoType: reflect.TypeOf(new(OneofScalars)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto2,
 		FullName: "OneofScalars",
@@ -1031,7 +1031,7 @@
 	Union         isEnumMessages_Union     `protobuf_oneof:"union"`
 }
 
-var enumMessagesType = pimpl.MessageType{GoType: reflect.TypeOf(new(EnumMessages)), PBType: ptype.GoMessage(
+var enumMessagesType = pimpl.MessageInfo{GoType: reflect.TypeOf(new(EnumMessages)), PBType: ptype.GoMessage(
 	mustMakeMessageDesc(ptype.StandaloneMessage{
 		Syntax:   pref.Proto2,
 		FullName: "EnumMessages",
diff --git a/internal/legacy/export.go b/internal/legacy/export.go
index 794a5e4..ec87a68 100644
--- a/internal/legacy/export.go
+++ b/internal/legacy/export.go
@@ -34,7 +34,7 @@
 }
 
 func (Export) MessageTypeOf(m interface{}) pref.MessageType {
-	return loadMessageType(reflect.TypeOf(m)).PBType
+	return loadMessageInfo(reflect.TypeOf(m)).PBType
 }
 
 func (Export) MessageDescriptorOf(m interface{}) pref.MessageDescriptor {
diff --git a/internal/legacy/message.go b/internal/legacy/message.go
index 174615d..9919cdb 100644
--- a/internal/legacy/message.go
+++ b/internal/legacy/message.go
@@ -20,30 +20,30 @@
 // wrapMessage wraps v as a protoreflect.ProtoMessage,
 // where v must be a *struct kind and not implement the v2 API already.
 func wrapMessage(v reflect.Value) pref.ProtoMessage {
-	mt := loadMessageType(v.Type())
+	mt := loadMessageInfo(v.Type())
 	return mt.MessageOf(v.Interface()).Interface()
 }
 
-var messageTypeCache sync.Map // map[reflect.Type]*MessageType
+var messageTypeCache sync.Map // map[reflect.Type]*MessageInfo
 
-// loadMessageType dynamically loads a *MessageType for t,
+// loadMessageInfo dynamically loads a *MessageInfo for t,
 // where t must be a *struct kind and not implement the v2 API already.
-func loadMessageType(t reflect.Type) *pimpl.MessageType {
-	// Fast-path: check if a MessageType is cached for this concrete type.
+func loadMessageInfo(t reflect.Type) *pimpl.MessageInfo {
+	// Fast-path: check if a MessageInfo is cached for this concrete type.
 	if mt, ok := messageTypeCache.Load(t); ok {
-		return mt.(*pimpl.MessageType)
+		return mt.(*pimpl.MessageInfo)
 	}
 
-	// Slow-path: derive message descriptor and initialize MessageType.
+	// Slow-path: derive message descriptor and initialize MessageInfo.
 	md := LoadMessageDesc(t)
-	mt := new(pimpl.MessageType)
+	mt := new(pimpl.MessageInfo)
 	mt.GoType = t
 	mt.PBType = ptype.GoMessage(md, func(pref.MessageType) pref.Message {
 		p := reflect.New(t.Elem()).Interface()
 		return mt.MessageOf(p)
 	})
 	if mt, ok := messageTypeCache.LoadOrStore(t, mt); ok {
-		return mt.(*pimpl.MessageType)
+		return mt.(*pimpl.MessageInfo)
 	}
 	return mt
 }
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
index b54a74d..200d5b0 100644
--- a/internal/testprotos/conformance/conformance.pb.go
+++ b/internal/testprotos/conformance/conformance.pb.go
@@ -667,7 +667,7 @@
 }
 
 var file_conformance_conformance_proto_enumTypes = make([]protoreflect.EnumType, 2)
-var file_conformance_conformance_proto_msgTypes = make([]protoimpl.MessageType, 4)
+var file_conformance_conformance_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_conformance_conformance_proto_goTypes = []interface{}{
 	(WireFormat)(0),             // 0: conformance.WireFormat
 	(TestCategory)(0),           // 1: conformance.TestCategory
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
index d9846da..c0f5d52 100644
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto2.pb.go
@@ -1826,7 +1826,7 @@
 }
 
 var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]protoreflect.EnumType, 2)
-var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageType, 26)
+var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
 var file_google_protobuf_test_messages_proto2_proto_goTypes = []interface{}{
 	(ForeignEnumProto2)(0),                   // 0: protobuf_test_messages.proto2.ForeignEnumProto2
 	(TestAllTypesProto2_NestedEnum)(0),       // 1: protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
index 556efd8..b63c506 100644
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ b/internal/testprotos/conformance/test_messages_proto3.pb.go
@@ -2040,7 +2040,7 @@
 }
 
 var file_google_protobuf_test_messages_proto3_proto_enumTypes = make([]protoreflect.EnumType, 3)
-var file_google_protobuf_test_messages_proto3_proto_msgTypes = make([]protoimpl.MessageType, 22)
+var file_google_protobuf_test_messages_proto3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
 var file_google_protobuf_test_messages_proto3_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                         // 0: protobuf_test_messages.proto3.ForeignEnum
 	(TestAllTypesProto3_NestedEnum)(0),       // 1: protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
index 8253547..24b8853 100644
--- a/internal/testprotos/legacy/legacy.pb.go
+++ b/internal/testprotos/legacy/legacy.pb.go
@@ -258,7 +258,7 @@
 	return file_legacy_legacy_proto_rawDescData
 }
 
-var file_legacy_legacy_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_legacy_legacy_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_legacy_legacy_proto_goTypes = []interface{}{
 	(*Legacy)(nil),               // 0: google.golang.org.Legacy
 	(*proto2_v0_0.Message)(nil),  // 1: google.golang.org.proto2_20160225.Message
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
index 91ac82e..cbf1c48 100644
--- a/internal/testprotos/test/test.pb.go
+++ b/internal/testprotos/test/test.pb.go
@@ -3314,7 +3314,7 @@
 }
 
 var file_test_test_proto_enumTypes = make([]protoreflect.EnumType, 4)
-var file_test_test_proto_msgTypes = make([]protoimpl.MessageType, 37)
+var file_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
 var file_test_test_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                          // 0: goproto.proto.test.ForeignEnum
 	(TestReservedEnumFields)(0),               // 1: goproto.proto.test.TestReservedEnumFields
diff --git a/internal/testprotos/test/test_import.pb.go b/internal/testprotos/test/test_import.pb.go
index dc8365c..6bbafe9 100644
--- a/internal/testprotos/test/test_import.pb.go
+++ b/internal/testprotos/test/test_import.pb.go
@@ -124,7 +124,7 @@
 }
 
 var file_test_test_import_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_test_test_import_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_test_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test_test_import_proto_goTypes = []interface{}{
 	(ImportEnum)(0),       // 0: goproto.proto.test.ImportEnum
 	(*ImportMessage)(nil), // 1: goproto.proto.test.ImportMessage
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
index ba065fc..050bf76 100644
--- a/internal/testprotos/test/test_public.pb.go
+++ b/internal/testprotos/test/test_public.pb.go
@@ -67,7 +67,7 @@
 	return file_test_test_public_proto_rawDescData
 }
 
-var file_test_test_public_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_test_test_public_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test_test_public_proto_goTypes = []interface{}{
 	(*PublicImportMessage)(nil), // 0: goproto.proto.test.PublicImportMessage
 }
diff --git a/internal/testprotos/test/weak/test_weak.pb.go b/internal/testprotos/test/weak/test_weak.pb.go
index 2cb834a..187848d 100644
--- a/internal/testprotos/test/weak/test_weak.pb.go
+++ b/internal/testprotos/test/weak/test_weak.pb.go
@@ -77,7 +77,7 @@
 	return file_test_weak_test_weak_proto_rawDescData
 }
 
-var file_test_weak_test_weak_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_test_weak_test_weak_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test_weak_test_weak_proto_goTypes = []interface{}{
 	(*WeakImportMessage)(nil), // 0: goproto.proto.test.weak.WeakImportMessage
 }
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
index 31180d0..88f664f 100644
--- a/internal/testprotos/test3/test.pb.go
+++ b/internal/testprotos/test3/test.pb.go
@@ -1271,7 +1271,7 @@
 }
 
 var file_test3_test_proto_enumTypes = make([]protoreflect.EnumType, 2)
-var file_test3_test_proto_msgTypes = make([]protoimpl.MessageType, 20)
+var file_test3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
 var file_test3_test_proto_goTypes = []interface{}{
 	(ForeignEnum)(0),                   // 0: goproto.proto.test3.ForeignEnum
 	(TestAllTypes_NestedEnum)(0),       // 1: goproto.proto.test3.TestAllTypes.NestedEnum
diff --git a/internal/testprotos/test3/test_import.pb.go b/internal/testprotos/test3/test_import.pb.go
index a281989..c36e2be 100644
--- a/internal/testprotos/test3/test_import.pb.go
+++ b/internal/testprotos/test3/test_import.pb.go
@@ -114,7 +114,7 @@
 }
 
 var file_test3_test_import_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_test3_test_import_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_test3_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_test3_test_import_proto_goTypes = []interface{}{
 	(ImportEnum)(0),       // 0: goproto.proto.test3.ImportEnum
 	(*ImportMessage)(nil), // 1: goproto.proto.test3.ImportMessage
diff --git a/reflect/protoregistry/testprotos/test.pb.go b/reflect/protoregistry/testprotos/test.pb.go
index 5f8495b..2a5453f 100644
--- a/reflect/protoregistry/testprotos/test.pb.go
+++ b/reflect/protoregistry/testprotos/test.pb.go
@@ -437,7 +437,7 @@
 }
 
 var file_test_proto_enumTypes = make([]protoreflect.EnumType, 3)
-var file_test_proto_msgTypes = make([]protoimpl.MessageType, 4)
+var file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_test_proto_goTypes = []interface{}{
 	(Enum1)(0),       // 0: testprotos.Enum1
 	(Enum2)(0),       // 1: testprotos.Enum2
diff --git a/runtime/protoimpl/impl.go b/runtime/protoimpl/impl.go
index ccdc91d..2eec9d9 100644
--- a/runtime/protoimpl/impl.go
+++ b/runtime/protoimpl/impl.go
@@ -38,7 +38,7 @@
 	// integer overflow failure when evaluating the uint constant.
 	EnforceVersion uint
 
-	MessageType = impl.MessageType
+	MessageInfo = impl.MessageInfo
 	FileBuilder = fileinit.FileBuilder
 
 	// TODO: Change these to more efficient data structures.
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
index a954524..d1c6644 100644
--- a/types/descriptorpb/descriptor.pb.go
+++ b/types/descriptorpb/descriptor.pb.go
@@ -3223,7 +3223,7 @@
 }
 
 var file_google_protobuf_descriptor_proto_enumTypes = make([]protoreflect.EnumType, 6)
-var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageType, 27)
+var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
 var file_google_protobuf_descriptor_proto_goTypes = []interface{}{
 	(FieldDescriptorProto_Type)(0),                // 0: google.protobuf.FieldDescriptorProto.Type
 	(FieldDescriptorProto_Label)(0),               // 1: google.protobuf.FieldDescriptorProto.Label
diff --git a/types/known/anypb/any.pb.go b/types/known/anypb/any.pb.go
index bf1109a..6be0eee 100644
--- a/types/known/anypb/any.pb.go
+++ b/types/known/anypb/any.pb.go
@@ -201,7 +201,7 @@
 	return file_google_protobuf_any_proto_rawDescData
 }
 
-var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_any_proto_goTypes = []interface{}{
 	(*Any)(nil), // 0: google.protobuf.Any
 }
diff --git a/types/known/apipb/api.pb.go b/types/known/apipb/api.pb.go
index 63da4b5..230ce50 100644
--- a/types/known/apipb/api.pb.go
+++ b/types/known/apipb/api.pb.go
@@ -432,7 +432,7 @@
 	return file_google_protobuf_api_proto_rawDescData
 }
 
-var file_google_protobuf_api_proto_msgTypes = make([]protoimpl.MessageType, 3)
+var file_google_protobuf_api_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
 var file_google_protobuf_api_proto_goTypes = []interface{}{
 	(*Api)(nil),                           // 0: google.protobuf.Api
 	(*Method)(nil),                        // 1: google.protobuf.Method
diff --git a/types/known/durationpb/duration.pb.go b/types/known/durationpb/duration.pb.go
index acd84b9..39cad77 100644
--- a/types/known/durationpb/duration.pb.go
+++ b/types/known/durationpb/duration.pb.go
@@ -162,7 +162,7 @@
 	return file_google_protobuf_duration_proto_rawDescData
 }
 
-var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_duration_proto_goTypes = []interface{}{
 	(*Duration)(nil), // 0: google.protobuf.Duration
 }
diff --git a/types/known/emptypb/empty.pb.go b/types/known/emptypb/empty.pb.go
index 336bfb5..4fa11b0 100644
--- a/types/known/emptypb/empty.pb.go
+++ b/types/known/emptypb/empty.pb.go
@@ -82,7 +82,7 @@
 	return file_google_protobuf_empty_proto_rawDescData
 }
 
-var file_google_protobuf_empty_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_empty_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_empty_proto_goTypes = []interface{}{
 	(*Empty)(nil), // 0: google.protobuf.Empty
 }
diff --git a/types/known/fieldmaskpb/field_mask.pb.go b/types/known/fieldmaskpb/field_mask.pb.go
index d7d18ac..afd6fa7 100644
--- a/types/known/fieldmaskpb/field_mask.pb.go
+++ b/types/known/fieldmaskpb/field_mask.pb.go
@@ -282,7 +282,7 @@
 	return file_google_protobuf_field_mask_proto_rawDescData
 }
 
-var file_google_protobuf_field_mask_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_field_mask_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_field_mask_proto_goTypes = []interface{}{
 	(*FieldMask)(nil), // 0: google.protobuf.FieldMask
 }
diff --git a/types/known/sourcecontextpb/source_context.pb.go b/types/known/sourcecontextpb/source_context.pb.go
index 8fd0efe..151e3c8 100644
--- a/types/known/sourcecontextpb/source_context.pb.go
+++ b/types/known/sourcecontextpb/source_context.pb.go
@@ -87,7 +87,7 @@
 	return file_google_protobuf_source_context_proto_rawDescData
 }
 
-var file_google_protobuf_source_context_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_source_context_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_source_context_proto_goTypes = []interface{}{
 	(*SourceContext)(nil), // 0: google.protobuf.SourceContext
 }
diff --git a/types/known/structpb/struct.pb.go b/types/known/structpb/struct.pb.go
index 9720ade..29e02a0 100644
--- a/types/known/structpb/struct.pb.go
+++ b/types/known/structpb/struct.pb.go
@@ -374,7 +374,7 @@
 }
 
 var file_google_protobuf_struct_proto_enumTypes = make([]protoreflect.EnumType, 1)
-var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageType, 4)
+var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_google_protobuf_struct_proto_goTypes = []interface{}{
 	(NullValue)(0),    // 0: google.protobuf.NullValue
 	(*Struct)(nil),    // 1: google.protobuf.Struct
diff --git a/types/known/timestamppb/timestamp.pb.go b/types/known/timestamppb/timestamp.pb.go
index 843d8a1..fea5aae 100644
--- a/types/known/timestamppb/timestamp.pb.go
+++ b/types/known/timestamppb/timestamp.pb.go
@@ -182,7 +182,7 @@
 	return file_google_protobuf_timestamp_proto_rawDescData
 }
 
-var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageType, 1)
+var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_google_protobuf_timestamp_proto_goTypes = []interface{}{
 	(*Timestamp)(nil), // 0: google.protobuf.Timestamp
 }
diff --git a/types/known/typepb/type.pb.go b/types/known/typepb/type.pb.go
index 6ed50ba..61626ea 100644
--- a/types/known/typepb/type.pb.go
+++ b/types/known/typepb/type.pb.go
@@ -767,7 +767,7 @@
 }
 
 var file_google_protobuf_type_proto_enumTypes = make([]protoreflect.EnumType, 3)
-var file_google_protobuf_type_proto_msgTypes = make([]protoimpl.MessageType, 5)
+var file_google_protobuf_type_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
 var file_google_protobuf_type_proto_goTypes = []interface{}{
 	(Syntax)(0),                           // 0: google.protobuf.Syntax
 	(Field_Kind)(0),                       // 1: google.protobuf.Field.Kind
diff --git a/types/known/wrapperspb/wrappers.pb.go b/types/known/wrapperspb/wrappers.pb.go
index 125b653..ad60414 100644
--- a/types/known/wrapperspb/wrappers.pb.go
+++ b/types/known/wrapperspb/wrappers.pb.go
@@ -450,7 +450,7 @@
 	return file_google_protobuf_wrappers_proto_rawDescData
 }
 
-var file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageType, 9)
+var file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
 var file_google_protobuf_wrappers_proto_goTypes = []interface{}{
 	(*DoubleValue)(nil), // 0: google.protobuf.DoubleValue
 	(*FloatValue)(nil),  // 1: google.protobuf.FloatValue
diff --git a/types/pluginpb/plugin.pb.go b/types/pluginpb/plugin.pb.go
index 1f422c4..e83b1ea 100644
--- a/types/pluginpb/plugin.pb.go
+++ b/types/pluginpb/plugin.pb.go
@@ -380,7 +380,7 @@
 	return file_google_protobuf_compiler_plugin_proto_rawDescData
 }
 
-var file_google_protobuf_compiler_plugin_proto_msgTypes = make([]protoimpl.MessageType, 4)
+var file_google_protobuf_compiler_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_google_protobuf_compiler_plugin_proto_goTypes = []interface{}{
 	(*Version)(nil),                          // 0: google.protobuf.compiler.Version
 	(*CodeGeneratorRequest)(nil),             // 1: google.protobuf.compiler.CodeGeneratorRequest
