diff --git a/internal/impl/codec_messageset.go b/internal/impl/codec_messageset.go
index 2493028..0b3746d 100644
--- a/internal/impl/codec_messageset.go
+++ b/internal/impl/codec_messageset.go
@@ -33,7 +33,7 @@
 		return 0
 	}
 	for _, x := range ext {
-		xi := mi.extensionFieldInfo(x.GetType())
+		xi := mi.extensionFieldInfo(x.Type())
 		if xi.funcs.size == nil {
 			continue
 		}
@@ -85,7 +85,7 @@
 }
 
 func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {
-	xi := mi.extensionFieldInfo(x.GetType())
+	xi := mi.extensionFieldInfo(x.Type())
 	num, _ := wire.DecodeTag(xi.wiretag)
 	b = messageset.AppendFieldStart(b, num)
 	b, err := xi.funcs.marshal(b, x.Value(), wire.EncodeTag(messageset.FieldMessage, wire.BytesType), opts)
diff --git a/internal/impl/decode.go b/internal/impl/decode.go
index 4441d4b..757bbde 100644
--- a/internal/impl/decode.go
+++ b/internal/impl/decode.go
@@ -136,7 +136,7 @@
 
 func (mi *MessageInfo) unmarshalExtension(b []byte, num wire.Number, wtyp wire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (n int, err error) {
 	x := exts[int32(num)]
-	xt := x.GetType()
+	xt := x.Type()
 	if xt == nil {
 		var err error
 		xt, err = opts.Resolver().FindExtensionByNumber(mi.Desc.FullName(), num)
diff --git a/internal/impl/message_reflect.go b/internal/impl/message_reflect.go
index 594ed9e..bc50303 100644
--- a/internal/impl/message_reflect.go
+++ b/internal/impl/message_reflect.go
@@ -145,7 +145,7 @@
 func (m *extensionMap) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
 	if m != nil {
 		for _, x := range *m {
-			xt := x.GetType()
+			xt := x.Type()
 			if !f(xt.TypeDescriptor(), x.Value()) {
 				return
 			}
