[ObjC] Internal helper for getting the unknown field data from a message

PiperOrigin-RevId: 655202619
diff --git a/objectivec/GPBUnknownFields.m b/objectivec/GPBUnknownFields.m
index f3073ad..836e249 100644
--- a/objectivec/GPBUnknownFields.m
+++ b/objectivec/GPBUnknownFields.m
@@ -14,6 +14,7 @@
 #import "GPBCodedOutputStream_PackagePrivate.h"
 #import "GPBDescriptor.h"
 #import "GPBMessage.h"
+#import "GPBMessage_PackagePrivate.h"
 #import "GPBUnknownField.h"
 #import "GPBUnknownFieldSet_PackagePrivate.h"
 #import "GPBUnknownField_PackagePrivate.h"
@@ -196,22 +197,8 @@
   self = [super init];
   if (self) {
     fields_ = [[NSMutableArray alloc] init];
-    // TODO: b/349146447 - Move off the legacy class and directly to the data once Message is
-    // updated.
-    GPBUnknownFieldSet *legacyUnknownFields = [message unknownFields];
-    if (legacyUnknownFields) {
-      NSData *data;
-      if (message.descriptor.isWireFormat) {
-        NSMutableData *mutableData =
-            [NSMutableData dataWithLength:legacyUnknownFields.serializedSizeAsMessageSet];
-        GPBCodedOutputStream *output = [[GPBCodedOutputStream alloc] initWithData:mutableData];
-        [legacyUnknownFields writeAsMessageSetTo:output];
-        [output flush];
-        [output release];
-        data = mutableData;
-      } else {
-        data = [legacyUnknownFields data];
-      }
+    NSData *data = GPBMessageUnknownFieldsData(message);
+    if (data) {
       GPBCodedInputStream *input = [[GPBCodedInputStream alloc] initWithData:data];
       // Parse until the end of the data (tag will be zero).
       if (!MergeFromInputStream(self, input, 0)) {