diff --git a/encoding/textpb/decode_test.go b/encoding/textpb/decode_test.go
index 14b7c7c..b463023 100644
--- a/encoding/textpb/decode_test.go
+++ b/encoding/textpb/decode_test.go
@@ -57,7 +57,7 @@
 		inputMessage proto.Message
 		inputText    string
 		wantMessage  proto.Message
-		wantErr      bool
+		wantErr      bool // TODO: Verify error message content.
 	}{{
 		desc:         "proto2 empty message",
 		inputMessage: &pb2.Scalars{},
@@ -1254,8 +1254,7 @@
 		inputText: `
 [pb2.message_set_extension]: {
   opt_string: "another not a messageset extension"
-}
-`,
+}`,
 		wantMessage: func() proto.Message {
 			m := &pb2.MessageSet{}
 			setExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
@@ -1264,59 +1263,41 @@
 			return m
 		}(),
 	}, {
-		// TODO: Change these tests to directly use knownpb.Any type instead once
-		// type has been regenerated with V2 compiler.
 		desc:         "Any not expanded",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
+		inputMessage: &knownpb.Any{},
+		inputText: `
 type_url: "pb2.Nested"
 value: "some bytes"
-}
 `,
-		wantMessage: &pb2.KnownTypes{
-			OptAny: &knownpb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   []byte("some bytes"),
-			},
+		wantMessage: &knownpb.Any{
+			TypeUrl: "pb2.Nested",
+			Value:   []byte("some bytes"),
 		},
 	}, {
 		desc:         "Any not expanded missing value",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-type_url: "pb2.Nested"
-}
-`,
-		wantMessage: &pb2.KnownTypes{
-			OptAny: &knownpb.Any{
-				TypeUrl: "pb2.Nested",
-			},
+		inputMessage: &knownpb.Any{},
+		inputText:    `type_url: "pb2.Nested"`,
+		wantMessage: &knownpb.Any{
+			TypeUrl: "pb2.Nested",
 		},
 	}, {
 		desc:         "Any not expanded missing type_url",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-value: "some bytes"
-}
-`,
-		wantMessage: &pb2.KnownTypes{
-			OptAny: &knownpb.Any{
-				Value: []byte("some bytes"),
-			},
+		inputMessage: &knownpb.Any{},
+		inputText:    `value: "some bytes"`,
+		wantMessage: &knownpb.Any{
+			Value: []byte("some bytes"),
 		},
 	}, {
 		desc: "Any expanded",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.Nested{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-  [foobar/pb2.Nested]: {
-    opt_string: "embedded inside Any"
-    opt_nested: {
-      opt_string: "inception"
-    }
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText: `
+[foobar/pb2.Nested]: {
+  opt_string: "embedded inside Any"
+  opt_nested: {
+    opt_string: "inception"
   }
 }
 `,
@@ -1331,110 +1312,82 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return &pb2.KnownTypes{
-				OptAny: &knownpb.Any{
-					TypeUrl: "foobar/pb2.Nested",
-					Value:   b,
-				},
+			return &knownpb.Any{
+				TypeUrl: "foobar/pb2.Nested",
+				Value:   b,
 			}
 		}(),
 	}, {
 		desc: "Any expanded with empty value",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.Nested{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-[foo.com/pb2.Nested]: {}
-}
-`,
-		wantMessage: &pb2.KnownTypes{
-			OptAny: &knownpb.Any{
-				TypeUrl: "foo.com/pb2.Nested",
-			},
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText:    `[foo.com/pb2.Nested]: {}`,
+		wantMessage: &knownpb.Any{
+			TypeUrl: "foo.com/pb2.Nested",
 		},
 	}, {
 		desc: "Any expanded with missing required error",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.PartialRequired{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-  [pb2.PartialRequired]: {
-    opt_string: "embedded inside Any"
-  }
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.PartialRequired{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText: `
+[pb2.PartialRequired]: {
+  opt_string: "embedded inside Any"
 }
 `,
 		wantMessage: func() proto.Message {
 			m := &pb2.PartialRequired{
 				OptString: scalar.String("embedded inside Any"),
 			}
-			// TODO: Switch to V2 marshal when ready.
-			b, err := protoV1.Marshal(m)
-			// Ignore required not set error.
-			if _, ok := err.(*protoV1.RequiredNotSetError); !ok {
+			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
+			// TODO: Marshal may fail due to required field not set at some
+			// point. Need to ignore required not set error here.
+			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return &pb2.KnownTypes{
-				OptAny: &knownpb.Any{
-					TypeUrl: "pb2.PartialRequired",
-					Value:   b,
-				},
+			return &knownpb.Any{
+				TypeUrl: "pb2.PartialRequired",
+				Value:   b,
 			}
 		}(),
 		wantErr: true,
 	}, {
 		desc:         "Any expanded with unregistered type",
 		umo:          textpb.UnmarshalOptions{Resolver: preg.NewTypes()},
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-[SomeMessage]: {}
-}
-`,
-		wantErr: true,
+		inputMessage: &knownpb.Any{},
+		inputText:    `[SomeMessage]: {}`,
+		wantErr:      true,
 	}, {
 		desc: "Any expanded with invalid value",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.Nested{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
-[pb2.Nested]: 123
-}
-`,
-		wantErr: true,
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText:    `[pb2.Nested]: 123`,
+		wantErr:      true,
 	}, {
 		desc: "Any expanded with unknown fields",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.Nested{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText: `
 [pb2.Nested]: {}
 unknown: ""
-}
 `,
 		wantErr: true,
 	}, {
 		desc: "Any contains expanded and unexpanded fields",
-		umo: func() textpb.UnmarshalOptions {
-			m := &pb2.Nested{}
-			resolver := preg.NewTypes(m.ProtoReflect().Type())
-			return textpb.UnmarshalOptions{Resolver: resolver}
-		}(),
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `opt_any: {
+		umo: textpb.UnmarshalOptions{
+			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
+		},
+		inputMessage: &knownpb.Any{},
+		inputText: `
 [pb2.Nested]: {}
 type_url: "pb2.Nested"
-}
 `,
 		wantErr: true,
 	}}
diff --git a/encoding/textpb/encode_test.go b/encoding/textpb/encode_test.go
index b2fed47..2d7b7de 100644
--- a/encoding/textpb/encode_test.go
+++ b/encoding/textpb/encode_test.go
@@ -10,13 +10,11 @@
 	"strings"
 	"testing"
 
-	protoV1 "github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/protoapi"
 	"github.com/golang/protobuf/v2/encoding/textpb"
 	"github.com/golang/protobuf/v2/internal/detrand"
 	"github.com/golang/protobuf/v2/internal/encoding/pack"
 	"github.com/golang/protobuf/v2/internal/encoding/wire"
-	"github.com/golang/protobuf/v2/internal/impl"
 	"github.com/golang/protobuf/v2/internal/scalar"
 	"github.com/golang/protobuf/v2/proto"
 	preg "github.com/golang/protobuf/v2/reflect/protoregistry"
@@ -61,10 +59,6 @@
 	knownFields.Set(wire.Number(xd.Field), pval)
 }
 
-func wrapV1Message(any *knownpb.Any) proto.Message {
-	return impl.Export{}.MessageOf(any).Interface()
-}
-
 // dhex decodes a hex-string and returns the bytes and panics if s is invalid.
 func dhex(s string) []byte {
 	b, err := hex.DecodeString(s)
@@ -80,7 +74,7 @@
 		mo      textpb.MarshalOptions
 		input   proto.Message
 		want    string
-		wantErr bool
+		wantErr bool // TODO: Verify error message content.
 	}{{
 		desc:  "proto2 optional scalars not set",
 		input: &pb2.Scalars{},
@@ -1033,10 +1027,10 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: "pb2.Nested",
 				Value:   b,
-			})
+			}
 		}(),
 		want: `type_url: "pb2.Nested"
 value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
@@ -1057,10 +1051,10 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: "foo/pb2.Nested",
 				Value:   b,
-			})
+			}
 		}(),
 		want: `[foo/pb2.Nested]: {
   opt_string: "embedded inside Any"
@@ -1078,16 +1072,16 @@
 			m := &pb2.PartialRequired{
 				OptString: scalar.String("embedded inside Any"),
 			}
-			// TODO: Switch to V2 marshal when ready.
-			b, err := protoV1.Marshal(m)
-			// Ignore required not set error.
-			if _, ok := err.(*protoV1.RequiredNotSetError); !ok {
+			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
+			// TODO: Marshal may fail due to required field not set at some
+			// point. Need to ignore required not set error here.
+			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapV1Message(&knownpb.Any{
+			return &knownpb.Any{
 				TypeUrl: string(m.ProtoReflect().Type().FullName()),
 				Value:   b,
-			})
+			}
 		}(),
 		want: `[pb2.PartialRequired]: {
   opt_string: "embedded inside Any"
@@ -1099,10 +1093,10 @@
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
 		},
-		input: wrapV1Message(&knownpb.Any{
+		input: &knownpb.Any{
 			TypeUrl: "foo/pb2.Nested",
 			Value:   dhex("80"),
-		}),
+		},
 		want: `type_url: "foo/pb2.Nested"
 value: "\x80"
 `,
