Continue cleaning up after the GLOBALS experiment.

Merge ClassDataLite and ClassDataFull into ClassData.
Remove dead constructor parameters.

PiperOrigin-RevId: 966749162
diff --git a/src/google/protobuf/BUILD.bazel b/src/google/protobuf/BUILD.bazel
index 097aad9..7a8d97e 100644
--- a/src/google/protobuf/BUILD.bazel
+++ b/src/google/protobuf/BUILD.bazel
@@ -1047,6 +1047,7 @@
     deps = [
         ":port",
         "@abseil-cpp//absl/log:absl_check",
+        "@abseil-cpp//absl/strings:string_view",
     ],
 )
 
diff --git a/src/google/protobuf/class_data.h b/src/google/protobuf/class_data.h
index 8fed1be..ceb805f 100644
--- a/src/google/protobuf/class_data.h
+++ b/src/google/protobuf/class_data.h
@@ -17,8 +17,11 @@
 #include <cstddef>
 #include <cstdint>
 #include <string>
+#include <type_traits>
+#include <variant>
 
 #include "absl/log/absl_check.h"
+#include "absl/strings/string_view.h"
 #include "google/protobuf/port.h"
 
 // Must be included last.
@@ -38,10 +41,10 @@
 
 namespace internal {
 
-struct ClassDataFull;
 struct DescriptorTable;
 class LazyField;
 struct TcParseTableBase;
+struct DescriptorMethods;
 
 class MessageCreator {
  public:
@@ -109,161 +112,11 @@
   Func func_;
 };
 
-// Note: The order of arguments in the functions is chosen so that it has
-// the same ABI as the member function that calls them. Eg the `this`
-// pointer becomes the first argument in the free function.
-//
-// Future work:
-// We could save more data by omitting any optional pointer that would
-// otherwise be null. We can have some metadata in ClassData telling us if we
-// have them and their offset.
-
-struct PROTOBUF_EXPORT ClassData {
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  const MessageLite* prototype;
-  const internal::TcParseTableBase* tc_table;
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-  bool (*is_initialized)(const MessageLite&);
-  void (*merge_to_from)(MessageLite& to, const MessageLite& from_msg);
-  internal::MessageCreator message_creator;
-#if defined(PROTOBUF_CUSTOM_VTABLE)
-  void (*destroy_message)(MessageLite& msg);
-  void (*clear)(MessageLite& msg);
-  size_t (*byte_size_long)(const MessageLite&);
-  uint8_t* (*serialize)(const MessageLite& msg, uint8_t* ptr,
-                        io::EpsCopyOutputStream* stream);
-#endif  // PROTOBUF_CUSTOM_VTABLE
-
-  // Offset of the CachedSize member.
-  uint32_t cached_size_offset;
-  // LITE objects (ie !descriptor_methods) collocate their name as a
-  // char[] just beyond the ClassData.
-  bool is_lite;
-  bool is_dynamic = false;
-
-  // In normal mode we have the small constructor to avoid the cost in
-  // codegen.
-#if !defined(PROTOBUF_CUSTOM_VTABLE)
-  constexpr ClassData(const MessageLite* prototype,
-                      const internal::TcParseTableBase* tc_table,
-                      bool (*is_initialized)(const MessageLite&),
-                      void (*merge_to_from)(MessageLite& to,
-                                            const MessageLite& from_msg),
-                      internal::MessageCreator message_creator,
-                      uint32_t cached_size_offset, bool is_lite)
-      :
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-        prototype(prototype),
-        tc_table(tc_table),
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-        is_initialized(is_initialized),
-        merge_to_from(merge_to_from),
-        message_creator(message_creator),
-        cached_size_offset(cached_size_offset),
-        is_lite(is_lite) {
-  }
-#endif  // !PROTOBUF_CUSTOM_VTABLE
-
-  // But we always provide the full constructor even in normal mode to make
-  // helper code simpler.
-  constexpr ClassData(
-      const MessageLite* prototype, const internal::TcParseTableBase* tc_table,
-      bool (*is_initialized)(const MessageLite&),
-      void (*merge_to_from)(MessageLite& to, const MessageLite& from_msg),
-      internal::MessageCreator message_creator,
-      [[maybe_unused]] void (*destroy_message)(MessageLite& msg),  //
-      [[maybe_unused]] void (*clear)(MessageLite& msg),
-      [[maybe_unused]] size_t (*byte_size_long)(const MessageLite&),
-      [[maybe_unused]] uint8_t* (*serialize)(const MessageLite& msg,
-                                             uint8_t* ptr,
-                                             io::EpsCopyOutputStream* stream),
-      uint32_t cached_size_offset, bool is_lite)
-      :
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-        prototype(prototype),
-        tc_table(tc_table),
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-        is_initialized(is_initialized),
-        merge_to_from(merge_to_from),
-        message_creator(message_creator),
-#if defined(PROTOBUF_CUSTOM_VTABLE)
-        destroy_message(destroy_message),
-        clear(clear),
-        byte_size_long(byte_size_long),
-        serialize(serialize),
-#endif  // PROTOBUF_CUSTOM_VTABLE
-        cached_size_offset(cached_size_offset),
-        is_lite(is_lite) {
-  }
-
-  const ClassDataFull& full() const;
-
-  const TcParseTableBase* GetTcParseTable() const;
-
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  const MessageLite* default_instance() const { return prototype; }
-#else
-  const MessageLite* default_instance() const;
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-
-  // Defined in message_lite.h.
-  MessageLite* New(Arena* arena) const;
-
-  // Defined in message_lite.h.
-  MessageLite* PlacementNew(void* mem, Arena* arena) const;
-
-  uint32_t allocation_size() const { return message_creator.allocation_size(); }
-
-  uint8_t alignment() const { return message_creator.alignment(); }
-
-  template <typename MessageLite = google::protobuf::MessageLite>
-  PROTOBUF_ALWAYS_INLINE void MergeToFrom(MessageLite& to,
-                                          const MessageLite& from) const {
-    ABSL_DCHECK(this == to.GetClassData())
-        << "Incorrect class data passed to MergeToFrom: expected "
-        << to.GetTypeName() << ", got "
-        << TypeDependent<MessageLite>(default_instance())->GetTypeName();
-    ABSL_DCHECK(this == from.GetClassData())
-        << "Invalid call to MergeFrom between types " << to.GetTypeName()
-        << " and " << from.GetTypeName();
-    this->merge_to_from(to, from);
-  }
-
-  std::string DebugName() const;
-};
-
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-struct ClassDataLite : ClassData {
-  constexpr ClassDataLite(ClassData base, const char* type_name)
-      : ClassData(base), type_name_ptr(type_name) {}
-
-  const char* type_name() const { return type_name_ptr; }
-  const char* type_name_ptr;
-
-  constexpr const ClassData* base() const { return this; }
-};
-#else
-using ClassDataLite = ClassDataFull;
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-
-// We use a secondary vtable for descriptor based methods. This way ClassData
-// does not grow with the number of descriptor methods. This avoids extra
-// costs in MessageLite.
-struct PROTOBUF_EXPORT DescriptorMethods {
-  absl::string_view (*get_type_name)(const ClassData* data);
-  std::string (*initialization_error_string)(const MessageLite&);
-  const internal::TcParseTableBase* (*get_tc_table)(const ClassData*);
-  size_t (*space_used_long)(const MessageLite&);
-  std::string (*debug_string)(const MessageLite&);
-  void (*verify_lazy_field_consistency)(const LazyField&);
-};
-
 // ClassData* can and should be placed on read-only section to maximize sharing.
-// However, ClassDataFull has mutable fields for lazy initialization of
-// reflection related data. To keep the lazy initialization and to move the
-// ClassDataFull to the read-only section we use a secondary table. Extra
-// indirection should be tolerable considering that reflection isn't performance
-// critical.
+// However, !LITE has mutable fields for lazy initialization of reflection
+// related data. We move these fields to a separate struct to keep the main
+// ClassData read-only. Extra indirection should be tolerable considering that
+// reflection isn't performance critical.
 struct PROTOBUF_EXPORT ReflectionData {
   constexpr ReflectionData(const DescriptorMethods* descriptor_methods,
                            const internal::DescriptorTable* descriptor_table,
@@ -291,76 +144,105 @@
   void (*get_metadata_tracker)();
 };
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-struct PROTOBUF_EXPORT ClassDataFull : ClassData {
-  constexpr ClassDataFull(ClassData base,
-                          const DescriptorMethods* descriptor_methods,
-                          const internal::DescriptorTable* descriptor_table,
-                          void (*get_metadata_tracker)())
-      : ClassData(base),
-        reflection_ptr(nullptr),
-        descriptor_ptr(nullptr),
-        descriptor_table_ptr(descriptor_table),
-        descriptor_methods_ptr(descriptor_methods),
-        get_metadata_tracker_func(get_metadata_tracker) {}
+// Note: The order of arguments in the functions is chosen so that it has
+// the same ABI as the member function that calls them. Eg the `this`
+// pointer becomes the first argument in the free function.
+//
+// Future work:
+// We could save more data by omitting any optional pointer that would
+// otherwise be null. We can have some metadata in ClassData telling us if we
+// have them and their offset.
 
-  constexpr const ClassData* base() const { return this; }
+struct PROTOBUF_EXPORT ClassData {
+  bool (*is_initialized)(const MessageLite&);
+  void (*merge_to_from)(MessageLite& to, const MessageLite& from_msg);
+  internal::MessageCreator message_creator;
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+  void (*destroy_message)(MessageLite& msg);
+  void (*clear)(MessageLite& msg);
+  size_t (*byte_size_long)(const MessageLite&);
+  uint8_t* (*serialize)(const MessageLite& msg, uint8_t* ptr,
+                        io::EpsCopyOutputStream* stream);
+#endif  // PROTOBUF_CUSTOM_VTABLE
 
-  // Accessors for reflection related data.
-  const Reflection* reflection() const { return reflection_ptr; }
-  const Descriptor* descriptor() const { return descriptor_ptr; }
+  // Offset of the CachedSize member.
+  uint32_t cached_size_offset;
+  // LITE objects (ie !descriptor_methods) collocate their name as a
+  // char[] just beyond the ClassData.
+  bool is_lite;
+  bool is_dynamic = false;
 
-  void set_reflection(const Reflection* reflection) const {
-    reflection_ptr = reflection;
-  }
-  void set_descriptor(const Descriptor* descriptor) const {
-    descriptor_ptr = descriptor;
+  // In normal mode we have the small constructor to avoid the cost in
+  // codegen.
+#if !defined(PROTOBUF_CUSTOM_VTABLE)
+  constexpr ClassData(
+      bool (*is_initialized)(const MessageLite&),
+      void (*merge_to_from)(MessageLite& to, const MessageLite& from_msg),
+      internal::MessageCreator message_creator, uint32_t cached_size_offset,
+      std::variant<ReflectionData*, const char*> reflection_or_name)
+      : ClassData(is_initialized, merge_to_from, message_creator, nullptr,
+                  nullptr, nullptr, nullptr, cached_size_offset,
+                  reflection_or_name) {}
+#endif  // !PROTOBUF_CUSTOM_VTABLE
+
+  // But we always provide the full constructor even in normal mode to make
+  // helper code simpler.
+  constexpr ClassData(
+      bool (*is_initialized)(const MessageLite&),
+      void (*merge_to_from)(MessageLite& to, const MessageLite& from_msg),
+      internal::MessageCreator message_creator,
+      [[maybe_unused]] void (*destroy_message)(MessageLite& msg),  //
+      [[maybe_unused]] void (*clear)(MessageLite& msg),
+      [[maybe_unused]] size_t (*byte_size_long)(const MessageLite&),
+      [[maybe_unused]] uint8_t* (*serialize)(const MessageLite& msg,
+                                             uint8_t* ptr,
+                                             io::EpsCopyOutputStream* stream),
+      uint32_t cached_size_offset,
+      std::variant<ReflectionData*, const char*> reflection_or_name)
+      : is_initialized(is_initialized),
+        merge_to_from(merge_to_from),
+        message_creator(message_creator),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        destroy_message(destroy_message),
+        clear(clear),
+        byte_size_long(byte_size_long),
+        serialize(serialize),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+        cached_size_offset(cached_size_offset),
+        is_lite(std::holds_alternative<const char*>(reflection_or_name)),
+        aux_data(GetAuxFromVariant(reflection_or_name)) {
   }
 
-  const internal::DescriptorTable* descriptor_table() const {
-    return descriptor_table_ptr;
-  }
-  const DescriptorMethods* descriptor_methods() const {
-    return descriptor_methods_ptr;
-  }
-  bool has_get_metadata_tracker() const {
-    return get_metadata_tracker_func != nullptr;
-  }
-  void get_metadata_tracker() const { get_metadata_tracker_func(); }
+  const TcParseTableBase* GetTcParseTable() const;
 
-  // Accesses are protected by the once_flag in `descriptor_table`. When the
-  // table is null these are populated from the beginning and need to
-  // protection.
-  mutable const Reflection* reflection_ptr;
-  mutable const Descriptor* descriptor_ptr;
+  const MessageLite* default_instance() const;
 
-  // Codegen types will provide a DescriptorTable to do lazy
-  // registration/initialization of the reflection objects.
-  // Other types, like DynamicMessage, keep the table as null but eagerly
-  // populate `reflection`/`descriptor` fields.
-  const internal::DescriptorTable* descriptor_table_ptr;
-  const DescriptorMethods* descriptor_methods_ptr;
-  // When an access tracker is installed, this function notifies the tracker
-  // that GetMetadata was called.
-  void (*get_metadata_tracker_func)();
-};
-#else
-// TODO b/474609573 - Rename this type to reflect that is's unified to
-// ClassDataLite as well.
-struct PROTOBUF_EXPORT ClassDataFull : ClassData {
-  constexpr ClassDataFull(ClassData base, ReflectionData* reflection_data)
-      : ClassData(base), aux_data(reflection_data) {
-    ABSL_DCHECK(!is_lite);
+  // Defined in message_lite.h.
+  MessageLite* New(Arena* arena) const;
+
+  // Defined in message_lite.h.
+  MessageLite* PlacementNew(void* mem, Arena* arena) const;
+
+  uint32_t allocation_size() const { return message_creator.allocation_size(); }
+
+  uint8_t alignment() const { return message_creator.alignment(); }
+
+  template <typename MessageLite = google::protobuf::MessageLite>
+  PROTOBUF_ALWAYS_INLINE void MergeToFrom(MessageLite& to,
+                                          const MessageLite& from) const {
+    ABSL_DCHECK(this == to.GetClassData())
+        << "Incorrect class data passed to MergeToFrom: expected "
+        << to.GetTypeName() << ", got "
+        << TypeDependent<MessageLite>(default_instance())->GetTypeName();
+    ABSL_DCHECK(this == from.GetClassData())
+        << "Invalid call to MergeFrom between types " << to.GetTypeName()
+        << " and " << from.GetTypeName();
+    this->merge_to_from(to, from);
   }
 
-  constexpr ClassDataFull(ClassData base, const char* type_name)
-      : ClassData(base), aux_data(type_name) {
-    ABSL_DCHECK(is_lite);
-  }
+  std::string DebugName() const;
 
-  constexpr const ClassData* base() const { return this; }
-
-  // Accessors for reflection related data (ClassDataFull only).
+  // Accessors for reflection related data (!LITE only).
   const Reflection* reflection() const { return reflection_data()->reflection; }
   const Descriptor* descriptor() const { return reflection_data()->descriptor; }
 
@@ -389,7 +271,7 @@
     return aux_data.reflection_data;
   }
 
-  // Accessors for type name (ClassDataLite only).
+  // Accessors for type name (LITE only).
   const char* type_name() const {
     ABSL_DCHECK(is_lite);
     return aux_data.type_name;
@@ -403,13 +285,28 @@
     ReflectionData* reflection_data;
     const char* type_name;
   } aux_data;
-};
-#endif  // PROTOBUF_MESSAGE_GLOBALS
 
-inline const ClassDataFull& ClassData::full() const {
-  ABSL_DCHECK(!is_lite);
-  return *static_cast<const ClassDataFull*>(this);
-}
+  static constexpr ReflectionDataOrTypeName GetAuxFromVariant(
+      std::variant<ReflectionData*, const char*> reflection_or_name) {
+    if (std::holds_alternative<const char*>(reflection_or_name)) {
+      return std::get<const char*>(reflection_or_name);
+    } else {
+      return std::get<ReflectionData*>(reflection_or_name);
+    }
+  }
+};
+
+// We use a secondary vtable for descriptor based methods. This way ClassData
+// does not grow with the number of descriptor methods. This avoids extra
+// costs in MessageLite.
+struct PROTOBUF_EXPORT DescriptorMethods {
+  absl::string_view (*get_type_name)(const ClassData* data);
+  std::string (*initialization_error_string)(const MessageLite&);
+  const internal::TcParseTableBase* (*get_tc_table)(const ClassData*);
+  size_t (*space_used_long)(const MessageLite&);
+  std::string (*debug_string)(const MessageLite&);
+  void (*verify_lazy_field_consistency)(const LazyField&);
+};
 
 }  // namespace internal
 }  // namespace protobuf
diff --git a/src/google/protobuf/compiler/cpp/file.cc b/src/google/protobuf/compiler/cpp/file.cc
index a3263a6..9b64ded 100644
--- a/src/google/protobuf/compiler/cpp/file.cc
+++ b/src/google/protobuf/compiler/cpp/file.cc
@@ -1348,7 +1348,6 @@
               {"globals_name", MsgGlobalsInstanceName(desc, options)},
               {"const",
                IsFileDescriptorProto(desc->file(), options) ? "" : "const"},
-              {"classdata_type", ClassDataType(desc, options)},
           },
           R"cc(
             class $class$;
diff --git a/src/google/protobuf/compiler/cpp/helpers.cc b/src/google/protobuf/compiler/cpp/helpers.cc
index 648a04d..a1b0229 100644
--- a/src/google/protobuf/compiler/cpp/helpers.cc
+++ b/src/google/protobuf/compiler/cpp/helpers.cc
@@ -638,16 +638,6 @@
                       "ptr_");
 }
 
-std::string ClassDataType(const Descriptor* descriptor,
-                          const Options& options) {
-  return HasDescriptorMethods(descriptor->file(), options) ||
-                 // Bootstrap protos are always full, even when lite is forced
-                 // via options.
-                 IsBootstrapProto(options, descriptor->file())
-             ? "ClassDataFull"
-             : "ClassDataLite";
-}
-
 std::string DescriptorTableName(const FileDescriptor* file,
                                 const Options& options) {
   return UniqueName("descriptor_table", file, options);
diff --git a/src/google/protobuf/compiler/cpp/helpers.h b/src/google/protobuf/compiler/cpp/helpers.h
index 55bb465..bf7e9de 100644
--- a/src/google/protobuf/compiler/cpp/helpers.h
+++ b/src/google/protobuf/compiler/cpp/helpers.h
@@ -192,9 +192,6 @@
 std::string QualifiedMsgGlobalsInstancePtr(const Descriptor* descriptor,
                                            const Options& options);
 
-// Name of the ClassData subclass used for a message.
-std::string ClassDataType(const Descriptor* descriptor, const Options& options);
-
 // DescriptorTable variable name.
 std::string DescriptorTableName(const FileDescriptor* file,
                                 const Options& options);
diff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc
index e4591cc..9874c2b 100644
--- a/src/google/protobuf/compiler/cpp/message.cc
+++ b/src/google/protobuf/compiler/cpp/message.cc
@@ -1420,9 +1420,7 @@
 
           $decl_verify_func$;
 
-          static constexpr auto InternalGenerateClassData_(
-              const $pb$::MessageLite& prototype,
-              const $pbi$::TcParseTableBase* $nullable$ tc_table = nullptr);
+          static constexpr auto InternalGenerateClassData_();
 
          private:
           friend class $pb$::MessageLite;
@@ -2093,7 +2091,6 @@
           )cc");
         }},
        {"decl_impl", [&] { GenerateImplDefinition(p); }},
-       {"classdata_type", ClassDataType(descriptor_, options_)},
        {"msg_globals", MsgGlobalsInstanceName(descriptor_, options_)},
        {"split_friend",
         [&] {
@@ -2219,9 +2216,7 @@
           //~ of T_class_data_. However, since it is `constexpr` and has an
           //~ `auto` return type it is not callable from outside the .pb.cc
           //~ without a definition so it is effectively private.
-          static constexpr auto InternalGenerateClassData_(
-              const MessageLite& prototype,
-              const $pbi$::TcParseTableBase* $nullable$ tc_table = nullptr);
+          static constexpr auto InternalGenerateClassData_();
 
           $get_metadata$;
           $decl_split_methods$;
@@ -2337,10 +2332,10 @@
             R"cc(
 #if defined(PROTOBUF_CUSTOM_VTABLE)
               PROTOBUF_ALWAYS_INLINE_NODEBUG $Msg$::$Msg$()
-                  : Super_($globals$.GetClassData()) {}
+                  : Super_(&$globals$.class_data) {}
               PROTOBUF_ALWAYS_INLINE_NODEBUG $Msg$::$Msg$(
                   $pb$::Arena* $nullable$ arena)
-                  : Super_(arena, $globals$.GetClassData()) {}
+                  : Super_(arena, &$globals$.class_data) {}
 #else   // PROTOBUF_CUSTOM_VTABLE
               $Msg$::$Msg$() : Super_() {}
               $Msg$::$Msg$($pb$::Arena* $nullable$ arena) : Super_(arena) {}
@@ -2453,7 +2448,7 @@
               // Same as the base class, but it avoids virtual dispatch.
               p->Emit(R"cc(
                 $pb$::Metadata $Msg$::GetMetadata() const {
-                  return Super_::GetMetadataImpl(GetClassData()->full());
+                  return Super_::GetMetadataImpl($globals$.class_data);
                 }
               )cc");
             }},
@@ -3195,7 +3190,7 @@
                 //~ force alignment
                 const $Msg$& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-                : Super_(arena, $globals$.GetClassData()) {
+                : Super_(arena, &$globals$.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
                 : Super_(arena) {
@@ -3238,7 +3233,7 @@
       R"cc(
         $Msg$::$Msg$($pb$::Arena* $nullable$ arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-            : Super_(arena, $globals$.GetClassData()) {
+            : Super_(arena, &$globals$.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
             : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -3267,7 +3262,7 @@
           //~ Force alignment
           $pb$::Arena* $nullable$ arena, const $Msg$& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          : Super_(arena, $globals$.GetClassData()),
+          : Super_(arena, &$globals$.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
           : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -3849,23 +3844,16 @@
              }},
         },
         R"cc(
-          constexpr auto $Msg$::InternalGenerateClassData_(
-              const MessageLite& prototype,
-              const $pbi$::TcParseTableBase* tc_table) {
-            return $pbi$::ClassDataFull{
-                $pbi$::ClassData{
-                    &prototype,
-                    tc_table,
-                    $is_initialized$,
-                    &$Msg$::MergeImpl,
-                    Super_::GetNewImpl<$Msg$>(),
+          constexpr auto $Msg$::InternalGenerateClassData_() {
+            return $pbi$::ClassData{
+                $is_initialized$,
+                &$Msg$::MergeImpl,
+                Super_::GetNewImpl<$Msg$>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-                    &$Msg$::SharedDtor,
-                    $custom_vtable_methods$,
+                &$Msg$::SharedDtor,
+                $custom_vtable_methods$,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-                    PROTOBUF_FIELD_OFFSET($Msg$, $cached_size$),
-                    false,
-                },
+                PROTOBUF_FIELD_OFFSET($Msg$, $cached_size$),
                 &file_reflection_data[$index_in_file_messages$],
             };
           }
@@ -3877,23 +3865,16 @@
             {"custom_vtable_methods", custom_vtable_methods},
         },
         R"cc(
-          constexpr auto $Msg$::InternalGenerateClassData_(
-              const MessageLite& prototype,
-              const $pbi$::TcParseTableBase* tc_table) {
-            return $pbi$::ClassDataLite{
-                {
-                    &prototype,
-                    tc_table,
-                    $is_initialized$,
-                    &$Msg$::MergeImpl,
-                    Super_::GetNewImpl<$Msg$>(),
+          constexpr auto $Msg$::InternalGenerateClassData_() {
+            return $pbi$::ClassData{
+                $is_initialized$,
+                &$Msg$::MergeImpl,
+                Super_::GetNewImpl<$Msg$>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-                    &$Msg$::SharedDtor,
-                    $custom_vtable_methods$,
+                &$Msg$::SharedDtor,
+                $custom_vtable_methods$,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-                    PROTOBUF_FIELD_OFFSET($Msg$, $cached_size$),
-                    true,
-                },
+                PROTOBUF_FIELD_OFFSET($Msg$, $cached_size$),
                 "$full_name$",
             };
           }
@@ -3943,7 +3924,7 @@
               $pbi$::PrefetchToLocalCache(&$globals$);
               $pbi$::PrefetchToLocalCache(
                   $pbi$::MessageGlobalsBase::ToParseTableBase(&$globals$));
-              return $globals$.GetClassData();
+              return &$globals$.class_data;
             }
           )cc");
     } else {
@@ -3958,7 +3939,7 @@
               $pbi$::PrefetchToLocalCache(&$globals$);
               $pbi$::PrefetchToLocalCache(
                   $pbi$::MessageGlobalsBase::ToParseTableBase(&$globals$));
-              return $globals$.GetClassData();
+              return &$globals$.class_data;
             }
           )cc");
     }
@@ -3967,7 +3948,7 @@
         R"cc(
           PROTOBUF_ATTRIBUTE_WEAK const $pbi$::ClassData* $nonnull$
           $Msg$::GetClassData() const {
-            return $globals$.GetClassData();
+            return &$globals$.class_data;
           }
         )cc");
   }
@@ -5565,8 +5546,7 @@
       R"cc(
         struct $globals_type$ : ::_pbi::MessageGlobalsBase {
           $constexpr$ $globals_type$()
-              : MessageGlobalsBase($Msg$::InternalGenerateClassData_(
-                    _default, &$globals$._table.header)),
+              : MessageGlobalsBase($Msg$::InternalGenerateClassData_()),
                 _default(::_pbi::ConstantInitialized{}, GetClassData()),
                 _table(::_pbi::PrivateAccess::GenerateParseTable<$Msg$>(
                     GetClassData())) {}
diff --git a/src/google/protobuf/compiler/csharp/c_sharp_features.pb.cc b/src/google/protobuf/compiler/csharp/c_sharp_features.pb.cc
index 9ef3fba..fe21c17 100755
--- a/src/google/protobuf/compiler/csharp/c_sharp_features.pb.cc
+++ b/src/google/protobuf/compiler/csharp/c_sharp_features.pb.cc
@@ -100,31 +100,23 @@
 constexpr auto CSharpFeatures::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(CSharpFeatures), alignof(CSharpFeatures));
 }
-constexpr auto CSharpFeatures::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &CSharpFeatures::MergeImpl,
-          Super_::GetNewImpl<CSharpFeatures>(),
+constexpr auto CSharpFeatures::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &CSharpFeatures::MergeImpl,
+      Super_::GetNewImpl<CSharpFeatures>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CSharpFeatures::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CSharpFeatures::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CSharpFeatures, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CSharpFeatures, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct CSharpFeaturesGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CSharpFeaturesGlobalsTypeInternal()
-      : MessageGlobalsBase(CSharpFeatures::InternalGenerateClassData_(
-            _default, &CSharpFeatures_globals_._table.header)),
+      : MessageGlobalsBase(CSharpFeatures::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CSharpFeatures>(
             GetClassData())) {}
@@ -201,7 +193,7 @@
 
 CSharpFeatures::CSharpFeatures(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CSharpFeatures_globals_.GetClassData()) {
+    : Super_(arena, &CSharpFeatures_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -211,7 +203,7 @@
 CSharpFeatures::CSharpFeatures(
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CSharpFeatures& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CSharpFeatures_globals_.GetClassData()),
+    : Super_(arena, &CSharpFeatures_globals_.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -247,7 +239,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CSharpFeatures_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CSharpFeatures_globals_));
-  return CSharpFeatures_globals_.GetClassData();
+  return &CSharpFeatures_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CSharpFeatures::Helpers_::Clear(MessageLite& base) {
@@ -356,7 +348,7 @@
 }
 
 ::google::protobuf::Metadata CSharpFeatures::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CSharpFeatures_globals_.class_data);
 }
 PROTOBUF_CONSTINIT PROTOC_EXPORT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::_pbi::ExtensionIdentifier<
diff --git a/src/google/protobuf/compiler/csharp/c_sharp_features.pb.h b/src/google/protobuf/compiler/csharp/c_sharp_features.pb.h
index 9b58e07..bceef5a 100755
--- a/src/google/protobuf/compiler/csharp/c_sharp_features.pb.h
+++ b/src/google/protobuf/compiler/csharp/c_sharp_features.pb.h
@@ -219,9 +219,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/compiler/java/java_features.pb.cc b/src/google/protobuf/compiler/java/java_features.pb.cc
index ed598b0..d2b4a39 100644
--- a/src/google/protobuf/compiler/java/java_features.pb.cc
+++ b/src/google/protobuf/compiler/java/java_features.pb.cc
@@ -86,30 +86,22 @@
 constexpr auto JavaFeatures_NestInFileClassFeature::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(JavaFeatures_NestInFileClassFeature), alignof(JavaFeatures_NestInFileClassFeature));
 }
-constexpr auto JavaFeatures_NestInFileClassFeature::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &JavaFeatures_NestInFileClassFeature::MergeImpl,
-          Super_::GetNewImpl<JavaFeatures_NestInFileClassFeature>(),
+constexpr auto JavaFeatures_NestInFileClassFeature::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &JavaFeatures_NestInFileClassFeature::MergeImpl,
+      Super_::GetNewImpl<JavaFeatures_NestInFileClassFeature>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &JavaFeatures_NestInFileClassFeature::SharedDtor,
-          &JavaFeatures_NestInFileClassFeature::Clear, &JavaFeatures_NestInFileClassFeature::ByteSizeLong, &JavaFeatures_NestInFileClassFeature::_InternalSerialize,
+      &JavaFeatures_NestInFileClassFeature::SharedDtor,
+      &JavaFeatures_NestInFileClassFeature::Clear, &JavaFeatures_NestInFileClassFeature::ByteSizeLong, &JavaFeatures_NestInFileClassFeature::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(JavaFeatures_NestInFileClassFeature, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(JavaFeatures_NestInFileClassFeature, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct JavaFeatures_NestInFileClassFeatureGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr JavaFeatures_NestInFileClassFeatureGlobalsTypeInternal()
-      : MessageGlobalsBase(JavaFeatures_NestInFileClassFeature::InternalGenerateClassData_(
-            _default, &JavaFeatures_NestInFileClassFeature_globals_._table.header)),
+      : MessageGlobalsBase(JavaFeatures_NestInFileClassFeature::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<JavaFeatures_NestInFileClassFeature>(
             GetClassData())) {}
@@ -227,31 +219,23 @@
 constexpr auto JavaFeatures::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(JavaFeatures), alignof(JavaFeatures));
 }
-constexpr auto JavaFeatures::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &JavaFeatures::MergeImpl,
-          Super_::GetNewImpl<JavaFeatures>(),
+constexpr auto JavaFeatures::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &JavaFeatures::MergeImpl,
+      Super_::GetNewImpl<JavaFeatures>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &JavaFeatures::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &JavaFeatures::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(JavaFeatures, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(JavaFeatures, _impl_._cached_size_),
       &file_reflection_data[1],
   };
 }
 struct JavaFeaturesGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr JavaFeaturesGlobalsTypeInternal()
-      : MessageGlobalsBase(JavaFeatures::InternalGenerateClassData_(
-            _default, &JavaFeatures_globals_._table.header)),
+      : MessageGlobalsBase(JavaFeatures::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<JavaFeatures>(
             GetClassData())) {}
@@ -376,7 +360,7 @@
 
 JavaFeatures_NestInFileClassFeature::JavaFeatures_NestInFileClassFeature(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JavaFeatures_NestInFileClassFeature_globals_.GetClassData()) {
+    : Super_(arena, &JavaFeatures_NestInFileClassFeature_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -386,7 +370,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const JavaFeatures_NestInFileClassFeature& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JavaFeatures_NestInFileClassFeature_globals_.GetClassData()) {
+    : Super_(arena, &JavaFeatures_NestInFileClassFeature_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -404,7 +388,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&JavaFeatures_NestInFileClassFeature_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&JavaFeatures_NestInFileClassFeature_globals_));
-  return JavaFeatures_NestInFileClassFeature_globals_.GetClassData();
+  return &JavaFeatures_NestInFileClassFeature_globals_.class_data;
 }
 
 
@@ -414,13 +398,13 @@
 
 
 ::google::protobuf::Metadata JavaFeatures_NestInFileClassFeature::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(JavaFeatures_NestInFileClassFeature_globals_.class_data);
 }
 // ===================================================================
 
 JavaFeatures::JavaFeatures(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JavaFeatures_globals_.GetClassData()) {
+    : Super_(arena, &JavaFeatures_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -430,7 +414,7 @@
 JavaFeatures::JavaFeatures(
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const JavaFeatures& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JavaFeatures_globals_.GetClassData()),
+    : Super_(arena, &JavaFeatures_globals_.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -471,7 +455,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&JavaFeatures_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&JavaFeatures_globals_));
-  return JavaFeatures_globals_.GetClassData();
+  return &JavaFeatures_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void JavaFeatures::Helpers_::Clear(MessageLite& base) {
@@ -647,7 +631,7 @@
 }
 
 ::google::protobuf::Metadata JavaFeatures::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(JavaFeatures_globals_.class_data);
 }
 PROTOBUF_CONSTINIT PROTOC_EXPORT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::_pbi::ExtensionIdentifier<
diff --git a/src/google/protobuf/compiler/java/java_features.pb.h b/src/google/protobuf/compiler/java/java_features.pb.h
index 410cb12..d4cfb16 100644
--- a/src/google/protobuf/compiler/java/java_features.pb.h
+++ b/src/google/protobuf/compiler/java/java_features.pb.h
@@ -278,9 +278,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -490,9 +488,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/compiler/plugin.pb.cc b/src/google/protobuf/compiler/plugin.pb.cc
index e2aae54..98a5a14 100644
--- a/src/google/protobuf/compiler/plugin.pb.cc
+++ b/src/google/protobuf/compiler/plugin.pb.cc
@@ -131,31 +131,23 @@
 constexpr auto Version::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(Version), alignof(Version));
 }
-constexpr auto Version::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &Version::MergeImpl,
-          Super_::GetNewImpl<Version>(),
+constexpr auto Version::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &Version::MergeImpl,
+      Super_::GetNewImpl<Version>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &Version::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &Version::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(Version, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(Version, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct VersionGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr VersionGlobalsTypeInternal()
-      : MessageGlobalsBase(Version::InternalGenerateClassData_(
-            _default, &Version_globals_._table.header)),
+      : MessageGlobalsBase(Version::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<Version>(
             GetClassData())) {}
@@ -268,31 +260,23 @@
 constexpr auto CodeGeneratorResponse_File::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CodeGeneratorResponse_File), alignof(CodeGeneratorResponse_File));
 }
-constexpr auto CodeGeneratorResponse_File::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &CodeGeneratorResponse_File::MergeImpl,
-          Super_::GetNewImpl<CodeGeneratorResponse_File>(),
+constexpr auto CodeGeneratorResponse_File::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &CodeGeneratorResponse_File::MergeImpl,
+      Super_::GetNewImpl<CodeGeneratorResponse_File>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CodeGeneratorResponse_File::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CodeGeneratorResponse_File::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_._cached_size_),
       &file_reflection_data[2],
   };
 }
 struct CodeGeneratorResponse_FileGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CodeGeneratorResponse_FileGlobalsTypeInternal()
-      : MessageGlobalsBase(CodeGeneratorResponse_File::InternalGenerateClassData_(
-            _default, &CodeGeneratorResponse_File_globals_._table.header)),
+      : MessageGlobalsBase(CodeGeneratorResponse_File::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CodeGeneratorResponse_File>(
             GetClassData())) {}
@@ -415,31 +399,23 @@
 constexpr auto CodeGeneratorResponse::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CodeGeneratorResponse), alignof(CodeGeneratorResponse));
 }
-constexpr auto CodeGeneratorResponse::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &CodeGeneratorResponse::MergeImpl,
-          Super_::GetNewImpl<CodeGeneratorResponse>(),
+constexpr auto CodeGeneratorResponse::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &CodeGeneratorResponse::MergeImpl,
+      Super_::GetNewImpl<CodeGeneratorResponse>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CodeGeneratorResponse::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CodeGeneratorResponse::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_._cached_size_),
       &file_reflection_data[3],
   };
 }
 struct CodeGeneratorResponseGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CodeGeneratorResponseGlobalsTypeInternal()
-      : MessageGlobalsBase(CodeGeneratorResponse::InternalGenerateClassData_(
-            _default, &CodeGeneratorResponse_globals_._table.header)),
+      : MessageGlobalsBase(CodeGeneratorResponse::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CodeGeneratorResponse>(
             GetClassData())) {}
@@ -569,31 +545,23 @@
 constexpr auto CodeGeneratorRequest::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CodeGeneratorRequest), alignof(CodeGeneratorRequest));
 }
-constexpr auto CodeGeneratorRequest::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          CodeGeneratorRequest::IsInitializedImpl,
-          &CodeGeneratorRequest::MergeImpl,
-          Super_::GetNewImpl<CodeGeneratorRequest>(),
+constexpr auto CodeGeneratorRequest::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      CodeGeneratorRequest::IsInitializedImpl,
+      &CodeGeneratorRequest::MergeImpl,
+      Super_::GetNewImpl<CodeGeneratorRequest>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CodeGeneratorRequest::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CodeGeneratorRequest::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_._cached_size_),
       &file_reflection_data[1],
   };
 }
 struct CodeGeneratorRequestGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CodeGeneratorRequestGlobalsTypeInternal()
-      : MessageGlobalsBase(CodeGeneratorRequest::InternalGenerateClassData_(
-            _default, &CodeGeneratorRequest_globals_._table.header)),
+      : MessageGlobalsBase(CodeGeneratorRequest::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CodeGeneratorRequest>(
             GetClassData())) {}
@@ -746,7 +714,7 @@
 
 Version::Version(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, Version_globals_.GetClassData()) {
+    : Super_(arena, &Version_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -764,7 +732,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const Version& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, Version_globals_.GetClassData()) {
+    : Super_(arena, &Version_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -818,7 +786,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&Version_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&Version_globals_));
-  return Version_globals_.GetClassData();
+  return &Version_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void Version::Helpers_::Clear(MessageLite& base) {
@@ -998,7 +966,7 @@
 }
 
 ::google::protobuf::Metadata Version::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(Version_globals_.class_data);
 }
 // ===================================================================
 
@@ -1014,7 +982,7 @@
 }
 CodeGeneratorRequest::CodeGeneratorRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorRequest_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorRequest_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -1053,7 +1021,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const CodeGeneratorRequest& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorRequest_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorRequest_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -1115,7 +1083,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CodeGeneratorRequest_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CodeGeneratorRequest_globals_));
-  return CodeGeneratorRequest_globals_.GetClassData();
+  return &CodeGeneratorRequest_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CodeGeneratorRequest::Helpers_::Clear(MessageLite& base) {
@@ -1356,7 +1324,7 @@
 }
 
 ::google::protobuf::Metadata CodeGeneratorRequest::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CodeGeneratorRequest_globals_.class_data);
 }
 // ===================================================================
 
@@ -1367,7 +1335,7 @@
 }
 CodeGeneratorResponse_File::CodeGeneratorResponse_File(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorResponse_File_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorResponse_File_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -1387,7 +1355,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const CodeGeneratorResponse_File& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorResponse_File_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorResponse_File_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -1438,7 +1406,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CodeGeneratorResponse_File_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CodeGeneratorResponse_File_globals_));
-  return CodeGeneratorResponse_File_globals_.GetClassData();
+  return &CodeGeneratorResponse_File_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CodeGeneratorResponse_File::Helpers_::Clear(MessageLite& base) {
@@ -1624,13 +1592,13 @@
 }
 
 ::google::protobuf::Metadata CodeGeneratorResponse_File::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CodeGeneratorResponse_File_globals_.class_data);
 }
 // ===================================================================
 
 CodeGeneratorResponse::CodeGeneratorResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorResponse_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorResponse_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -1655,7 +1623,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const CodeGeneratorResponse& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CodeGeneratorResponse_globals_.GetClassData()) {
+    : Super_(arena, &CodeGeneratorResponse_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -1714,7 +1682,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CodeGeneratorResponse_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CodeGeneratorResponse_globals_));
-  return CodeGeneratorResponse_globals_.GetClassData();
+  return &CodeGeneratorResponse_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CodeGeneratorResponse::Helpers_::Clear(MessageLite& base) {
@@ -1925,7 +1893,7 @@
 }
 
 ::google::protobuf::Metadata CodeGeneratorResponse::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CodeGeneratorResponse_globals_.class_data);
 }
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace compiler
diff --git a/src/google/protobuf/compiler/plugin.pb.h b/src/google/protobuf/compiler/plugin.pb.h
index f78383b..174f467 100644
--- a/src/google/protobuf/compiler/plugin.pb.h
+++ b/src/google/protobuf/compiler/plugin.pb.h
@@ -274,9 +274,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -538,9 +536,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -816,9 +812,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -1129,9 +1123,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/cpp_features.pb.cc b/src/google/protobuf/cpp_features.pb.cc
index 72db867..5b97e2f 100644
--- a/src/google/protobuf/cpp_features.pb.cc
+++ b/src/google/protobuf/cpp_features.pb.cc
@@ -124,31 +124,23 @@
 constexpr auto CppFeatures::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(CppFeatures), alignof(CppFeatures));
 }
-constexpr auto CppFeatures::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &CppFeatures::MergeImpl,
-          Super_::GetNewImpl<CppFeatures>(),
+constexpr auto CppFeatures::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &CppFeatures::MergeImpl,
+      Super_::GetNewImpl<CppFeatures>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CppFeatures::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CppFeatures::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CppFeatures, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CppFeatures, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct CppFeaturesGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CppFeaturesGlobalsTypeInternal()
-      : MessageGlobalsBase(CppFeatures::InternalGenerateClassData_(
-            _default, &CppFeatures_globals_._table.header)),
+      : MessageGlobalsBase(CppFeatures::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CppFeatures>(
             GetClassData())) {}
@@ -257,7 +249,7 @@
 
 CppFeatures::CppFeatures(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CppFeatures_globals_.GetClassData()) {
+    : Super_(arena, &CppFeatures_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -267,7 +259,7 @@
 CppFeatures::CppFeatures(
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CppFeatures& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CppFeatures_globals_.GetClassData()),
+    : Super_(arena, &CppFeatures_globals_.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -308,7 +300,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CppFeatures_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CppFeatures_globals_));
-  return CppFeatures_globals_.GetClassData();
+  return &CppFeatures_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CppFeatures::Helpers_::Clear(MessageLite& base) {
@@ -474,7 +466,7 @@
 }
 
 ::google::protobuf::Metadata CppFeatures::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CppFeatures_globals_.class_data);
 }
 PROTOBUF_CONSTINIT PROTOBUF_EXPORT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::_pbi::ExtensionIdentifier<
diff --git a/src/google/protobuf/cpp_features.pb.h b/src/google/protobuf/cpp_features.pb.h
index 6ea2256..573ac6e 100644
--- a/src/google/protobuf/cpp_features.pb.h
+++ b/src/google/protobuf/cpp_features.pb.h
@@ -307,9 +307,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/cpp_file_options.pb.cc b/src/google/protobuf/cpp_file_options.pb.cc
index 87effaf..8edde47 100644
--- a/src/google/protobuf/cpp_file_options.pb.cc
+++ b/src/google/protobuf/cpp_file_options.pb.cc
@@ -106,31 +106,23 @@
 constexpr auto CppFileOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CppFileOptions), alignof(CppFileOptions));
 }
-constexpr auto CppFileOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &CppFileOptions::MergeImpl,
-          Super_::GetNewImpl<CppFileOptions>(),
+constexpr auto CppFileOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &CppFileOptions::MergeImpl,
+      Super_::GetNewImpl<CppFileOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &CppFileOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &CppFileOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(CppFileOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(CppFileOptions, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct CppFileOptionsGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr CppFileOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(CppFileOptions::InternalGenerateClassData_(
-            _default, &CppFileOptions_globals_._table.header)),
+      : MessageGlobalsBase(CppFileOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<CppFileOptions>(
             GetClassData())) {}
@@ -207,7 +199,7 @@
 
 CppFileOptions::CppFileOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CppFileOptions_globals_.GetClassData()) {
+    : Super_(arena, &CppFileOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -225,7 +217,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const CppFileOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, CppFileOptions_globals_.GetClassData()) {
+    : Super_(arena, &CppFileOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -266,7 +258,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&CppFileOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CppFileOptions_globals_));
-  return CppFileOptions_globals_.GetClassData();
+  return &CppFileOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void CppFileOptions::Helpers_::Clear(MessageLite& base) {
@@ -387,7 +379,7 @@
 }
 
 ::google::protobuf::Metadata CppFileOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(CppFileOptions_globals_.class_data);
 }
 PROTOBUF_CONSTINIT PROTOBUF_EXPORT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::_pbi::ExtensionIdentifier<
diff --git a/src/google/protobuf/cpp_file_options.pb.h b/src/google/protobuf/cpp_file_options.pb.h
index cb55cbd..ecbfedc 100644
--- a/src/google/protobuf/cpp_file_options.pb.h
+++ b/src/google/protobuf/cpp_file_options.pb.h
@@ -215,9 +215,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 0922968..db44573 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -181,24 +181,17 @@
 constexpr auto UninterpretedOption_NamePart::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(UninterpretedOption_NamePart), alignof(UninterpretedOption_NamePart));
 }
-constexpr auto UninterpretedOption_NamePart::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          UninterpretedOption_NamePart::IsInitializedImpl,
-          &UninterpretedOption_NamePart::MergeImpl,
-          Super_::GetNewImpl<UninterpretedOption_NamePart>(),
+constexpr auto UninterpretedOption_NamePart::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      UninterpretedOption_NamePart::IsInitializedImpl,
+      &UninterpretedOption_NamePart::MergeImpl,
+      Super_::GetNewImpl<UninterpretedOption_NamePart>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &UninterpretedOption_NamePart::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &UninterpretedOption_NamePart::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(UninterpretedOption_NamePart, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(UninterpretedOption_NamePart, _impl_._cached_size_),
       &file_reflection_data[24],
   };
 }
@@ -207,8 +200,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    UninterpretedOption_NamePartGlobalsTypeInternal()
-      : MessageGlobalsBase(UninterpretedOption_NamePart::InternalGenerateClassData_(
-            _default, &UninterpretedOption_NamePart_globals_._table.header)),
+      : MessageGlobalsBase(UninterpretedOption_NamePart::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<UninterpretedOption_NamePart>(
             GetClassData())) {}
@@ -342,24 +334,17 @@
 constexpr auto SourceCodeInfo_Location::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SourceCodeInfo_Location), alignof(SourceCodeInfo_Location));
 }
-constexpr auto SourceCodeInfo_Location::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &SourceCodeInfo_Location::MergeImpl,
-          Super_::GetNewImpl<SourceCodeInfo_Location>(),
+constexpr auto SourceCodeInfo_Location::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &SourceCodeInfo_Location::MergeImpl,
+      Super_::GetNewImpl<SourceCodeInfo_Location>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &SourceCodeInfo_Location::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &SourceCodeInfo_Location::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(SourceCodeInfo_Location, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(SourceCodeInfo_Location, _impl_._cached_size_),
       &file_reflection_data[31],
   };
 }
@@ -368,8 +353,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    SourceCodeInfo_LocationGlobalsTypeInternal()
-      : MessageGlobalsBase(SourceCodeInfo_Location::InternalGenerateClassData_(
-            _default, &SourceCodeInfo_Location_globals_._table.header)),
+      : MessageGlobalsBase(SourceCodeInfo_Location::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<SourceCodeInfo_Location>(
             GetClassData())) {}
@@ -495,24 +479,17 @@
 constexpr auto GeneratedCodeInfo_Annotation::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GeneratedCodeInfo_Annotation), alignof(GeneratedCodeInfo_Annotation));
 }
-constexpr auto GeneratedCodeInfo_Annotation::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &GeneratedCodeInfo_Annotation::MergeImpl,
-          Super_::GetNewImpl<GeneratedCodeInfo_Annotation>(),
+constexpr auto GeneratedCodeInfo_Annotation::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &GeneratedCodeInfo_Annotation::MergeImpl,
+      Super_::GetNewImpl<GeneratedCodeInfo_Annotation>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &GeneratedCodeInfo_Annotation::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &GeneratedCodeInfo_Annotation::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo_Annotation, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo_Annotation, _impl_._cached_size_),
       &file_reflection_data[33],
   };
 }
@@ -521,8 +498,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    GeneratedCodeInfo_AnnotationGlobalsTypeInternal()
-      : MessageGlobalsBase(GeneratedCodeInfo_Annotation::InternalGenerateClassData_(
-            _default, &GeneratedCodeInfo_Annotation_globals_._table.header)),
+      : MessageGlobalsBase(GeneratedCodeInfo_Annotation::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<GeneratedCodeInfo_Annotation>(
             GetClassData())) {}
@@ -648,24 +624,17 @@
 constexpr auto FieldOptions_FeatureSupport::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FieldOptions_FeatureSupport), alignof(FieldOptions_FeatureSupport));
 }
-constexpr auto FieldOptions_FeatureSupport::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &FieldOptions_FeatureSupport::MergeImpl,
-          Super_::GetNewImpl<FieldOptions_FeatureSupport>(),
+constexpr auto FieldOptions_FeatureSupport::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &FieldOptions_FeatureSupport::MergeImpl,
+      Super_::GetNewImpl<FieldOptions_FeatureSupport>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FieldOptions_FeatureSupport::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FieldOptions_FeatureSupport::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FieldOptions_FeatureSupport, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FieldOptions_FeatureSupport, _impl_._cached_size_),
       &file_reflection_data[17],
   };
 }
@@ -674,8 +643,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FieldOptions_FeatureSupportGlobalsTypeInternal()
-      : MessageGlobalsBase(FieldOptions_FeatureSupport::InternalGenerateClassData_(
-            _default, &FieldOptions_FeatureSupport_globals_._table.header)),
+      : MessageGlobalsBase(FieldOptions_FeatureSupport::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FieldOptions_FeatureSupport>(
             GetClassData())) {}
@@ -773,24 +741,17 @@
 constexpr auto FieldOptions_EditionDefault::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FieldOptions_EditionDefault), alignof(FieldOptions_EditionDefault));
 }
-constexpr auto FieldOptions_EditionDefault::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &FieldOptions_EditionDefault::MergeImpl,
-          Super_::GetNewImpl<FieldOptions_EditionDefault>(),
+constexpr auto FieldOptions_EditionDefault::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &FieldOptions_EditionDefault::MergeImpl,
+      Super_::GetNewImpl<FieldOptions_EditionDefault>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FieldOptions_EditionDefault::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FieldOptions_EditionDefault::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FieldOptions_EditionDefault, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FieldOptions_EditionDefault, _impl_._cached_size_),
       &file_reflection_data[16],
   };
 }
@@ -799,8 +760,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FieldOptions_EditionDefaultGlobalsTypeInternal()
-      : MessageGlobalsBase(FieldOptions_EditionDefault::InternalGenerateClassData_(
-            _default, &FieldOptions_EditionDefault_globals_._table.header)),
+      : MessageGlobalsBase(FieldOptions_EditionDefault::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FieldOptions_EditionDefault>(
             GetClassData())) {}
@@ -871,23 +831,16 @@
 constexpr auto FeatureSet_VisibilityFeature::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(FeatureSet_VisibilityFeature), alignof(FeatureSet_VisibilityFeature));
 }
-constexpr auto FeatureSet_VisibilityFeature::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &FeatureSet_VisibilityFeature::MergeImpl,
-          Super_::GetNewImpl<FeatureSet_VisibilityFeature>(),
+constexpr auto FeatureSet_VisibilityFeature::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &FeatureSet_VisibilityFeature::MergeImpl,
+      Super_::GetNewImpl<FeatureSet_VisibilityFeature>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FeatureSet_VisibilityFeature::SharedDtor,
-          &FeatureSet_VisibilityFeature::Clear, &FeatureSet_VisibilityFeature::ByteSizeLong, &FeatureSet_VisibilityFeature::_InternalSerialize,
+      &FeatureSet_VisibilityFeature::SharedDtor,
+      &FeatureSet_VisibilityFeature::Clear, &FeatureSet_VisibilityFeature::ByteSizeLong, &FeatureSet_VisibilityFeature::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FeatureSet_VisibilityFeature, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FeatureSet_VisibilityFeature, _impl_._cached_size_),
       &file_reflection_data[26],
   };
 }
@@ -896,8 +849,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FeatureSet_VisibilityFeatureGlobalsTypeInternal()
-      : MessageGlobalsBase(FeatureSet_VisibilityFeature::InternalGenerateClassData_(
-            _default, &FeatureSet_VisibilityFeature_globals_._table.header)),
+      : MessageGlobalsBase(FeatureSet_VisibilityFeature::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FeatureSet_VisibilityFeature>(
             GetClassData())) {}
@@ -968,23 +920,16 @@
 constexpr auto FeatureSet_ProtoLimitsFeature::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(FeatureSet_ProtoLimitsFeature), alignof(FeatureSet_ProtoLimitsFeature));
 }
-constexpr auto FeatureSet_ProtoLimitsFeature::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &FeatureSet_ProtoLimitsFeature::MergeImpl,
-          Super_::GetNewImpl<FeatureSet_ProtoLimitsFeature>(),
+constexpr auto FeatureSet_ProtoLimitsFeature::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &FeatureSet_ProtoLimitsFeature::MergeImpl,
+      Super_::GetNewImpl<FeatureSet_ProtoLimitsFeature>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FeatureSet_ProtoLimitsFeature::SharedDtor,
-          &FeatureSet_ProtoLimitsFeature::Clear, &FeatureSet_ProtoLimitsFeature::ByteSizeLong, &FeatureSet_ProtoLimitsFeature::_InternalSerialize,
+      &FeatureSet_ProtoLimitsFeature::SharedDtor,
+      &FeatureSet_ProtoLimitsFeature::Clear, &FeatureSet_ProtoLimitsFeature::ByteSizeLong, &FeatureSet_ProtoLimitsFeature::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FeatureSet_ProtoLimitsFeature, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FeatureSet_ProtoLimitsFeature, _impl_._cached_size_),
       &file_reflection_data[27],
   };
 }
@@ -993,8 +938,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FeatureSet_ProtoLimitsFeatureGlobalsTypeInternal()
-      : MessageGlobalsBase(FeatureSet_ProtoLimitsFeature::InternalGenerateClassData_(
-            _default, &FeatureSet_ProtoLimitsFeature_globals_._table.header)),
+      : MessageGlobalsBase(FeatureSet_ProtoLimitsFeature::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FeatureSet_ProtoLimitsFeature>(
             GetClassData())) {}
@@ -1154,24 +1098,17 @@
 constexpr auto FeatureSet::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FeatureSet), alignof(FeatureSet));
 }
-constexpr auto FeatureSet::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FeatureSet::IsInitializedImpl,
-          &FeatureSet::MergeImpl,
-          Super_::GetNewImpl<FeatureSet>(),
+constexpr auto FeatureSet::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FeatureSet::IsInitializedImpl,
+      &FeatureSet::MergeImpl,
+      Super_::GetNewImpl<FeatureSet>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FeatureSet::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FeatureSet::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FeatureSet, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FeatureSet, _impl_._cached_size_),
       &file_reflection_data[28],
   };
 }
@@ -1180,8 +1117,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FeatureSetGlobalsTypeInternal()
-      : MessageGlobalsBase(FeatureSet::InternalGenerateClassData_(
-            _default, &FeatureSet_globals_._table.header)),
+      : MessageGlobalsBase(FeatureSet::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FeatureSet>(
             GetClassData())) {}
@@ -1303,24 +1239,17 @@
 constexpr auto ExtensionRangeOptions_Declaration::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ExtensionRangeOptions_Declaration), alignof(ExtensionRangeOptions_Declaration));
 }
-constexpr auto ExtensionRangeOptions_Declaration::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &ExtensionRangeOptions_Declaration::MergeImpl,
-          Super_::GetNewImpl<ExtensionRangeOptions_Declaration>(),
+constexpr auto ExtensionRangeOptions_Declaration::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &ExtensionRangeOptions_Declaration::MergeImpl,
+      Super_::GetNewImpl<ExtensionRangeOptions_Declaration>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &ExtensionRangeOptions_Declaration::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &ExtensionRangeOptions_Declaration::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(ExtensionRangeOptions_Declaration, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(ExtensionRangeOptions_Declaration, _impl_._cached_size_),
       &file_reflection_data[5],
   };
 }
@@ -1329,8 +1258,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    ExtensionRangeOptions_DeclarationGlobalsTypeInternal()
-      : MessageGlobalsBase(ExtensionRangeOptions_Declaration::InternalGenerateClassData_(
-            _default, &ExtensionRangeOptions_Declaration_globals_._table.header)),
+      : MessageGlobalsBase(ExtensionRangeOptions_Declaration::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<ExtensionRangeOptions_Declaration>(
             GetClassData())) {}
@@ -1424,24 +1352,17 @@
 constexpr auto EnumDescriptorProto_EnumReservedRange::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(EnumDescriptorProto_EnumReservedRange), alignof(EnumDescriptorProto_EnumReservedRange));
 }
-constexpr auto EnumDescriptorProto_EnumReservedRange::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &EnumDescriptorProto_EnumReservedRange::MergeImpl,
-          Super_::GetNewImpl<EnumDescriptorProto_EnumReservedRange>(),
+constexpr auto EnumDescriptorProto_EnumReservedRange::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &EnumDescriptorProto_EnumReservedRange::MergeImpl,
+      Super_::GetNewImpl<EnumDescriptorProto_EnumReservedRange>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &EnumDescriptorProto_EnumReservedRange::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &EnumDescriptorProto_EnumReservedRange::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, _impl_._cached_size_),
       &file_reflection_data[9],
   };
 }
@@ -1450,8 +1371,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    EnumDescriptorProto_EnumReservedRangeGlobalsTypeInternal()
-      : MessageGlobalsBase(EnumDescriptorProto_EnumReservedRange::InternalGenerateClassData_(
-            _default, &EnumDescriptorProto_EnumReservedRange_globals_._table.header)),
+      : MessageGlobalsBase(EnumDescriptorProto_EnumReservedRange::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<EnumDescriptorProto_EnumReservedRange>(
             GetClassData())) {}
@@ -1545,24 +1465,17 @@
 constexpr auto DescriptorProto_ReservedRange::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(DescriptorProto_ReservedRange), alignof(DescriptorProto_ReservedRange));
 }
-constexpr auto DescriptorProto_ReservedRange::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &DescriptorProto_ReservedRange::MergeImpl,
-          Super_::GetNewImpl<DescriptorProto_ReservedRange>(),
+constexpr auto DescriptorProto_ReservedRange::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &DescriptorProto_ReservedRange::MergeImpl,
+      Super_::GetNewImpl<DescriptorProto_ReservedRange>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &DescriptorProto_ReservedRange::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &DescriptorProto_ReservedRange::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(DescriptorProto_ReservedRange, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(DescriptorProto_ReservedRange, _impl_._cached_size_),
       &file_reflection_data[3],
   };
 }
@@ -1571,8 +1484,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    DescriptorProto_ReservedRangeGlobalsTypeInternal()
-      : MessageGlobalsBase(DescriptorProto_ReservedRange::InternalGenerateClassData_(
-            _default, &DescriptorProto_ReservedRange_globals_._table.header)),
+      : MessageGlobalsBase(DescriptorProto_ReservedRange::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<DescriptorProto_ReservedRange>(
             GetClassData())) {}
@@ -1714,24 +1626,17 @@
 constexpr auto UninterpretedOption::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(UninterpretedOption), alignof(UninterpretedOption));
 }
-constexpr auto UninterpretedOption::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          UninterpretedOption::IsInitializedImpl,
-          &UninterpretedOption::MergeImpl,
-          Super_::GetNewImpl<UninterpretedOption>(),
+constexpr auto UninterpretedOption::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      UninterpretedOption::IsInitializedImpl,
+      &UninterpretedOption::MergeImpl,
+      Super_::GetNewImpl<UninterpretedOption>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &UninterpretedOption::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &UninterpretedOption::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(UninterpretedOption, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(UninterpretedOption, _impl_._cached_size_),
       &file_reflection_data[25],
   };
 }
@@ -1740,8 +1645,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    UninterpretedOptionGlobalsTypeInternal()
-      : MessageGlobalsBase(UninterpretedOption::InternalGenerateClassData_(
-            _default, &UninterpretedOption_globals_._table.header)),
+      : MessageGlobalsBase(UninterpretedOption::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<UninterpretedOption>(
             GetClassData())) {}
@@ -1834,24 +1738,17 @@
 constexpr auto SourceCodeInfo::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SourceCodeInfo), alignof(SourceCodeInfo));
 }
-constexpr auto SourceCodeInfo::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          SourceCodeInfo::IsInitializedImpl,
-          &SourceCodeInfo::MergeImpl,
-          Super_::GetNewImpl<SourceCodeInfo>(),
+constexpr auto SourceCodeInfo::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      SourceCodeInfo::IsInitializedImpl,
+      &SourceCodeInfo::MergeImpl,
+      Super_::GetNewImpl<SourceCodeInfo>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &SourceCodeInfo::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &SourceCodeInfo::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(SourceCodeInfo, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(SourceCodeInfo, _impl_._cached_size_),
       &file_reflection_data[32],
   };
 }
@@ -1860,8 +1757,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    SourceCodeInfoGlobalsTypeInternal()
-      : MessageGlobalsBase(SourceCodeInfo::InternalGenerateClassData_(
-            _default, &SourceCodeInfo_globals_._table.header)),
+      : MessageGlobalsBase(SourceCodeInfo::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<SourceCodeInfo>(
             GetClassData())) {}
@@ -1954,24 +1850,17 @@
 constexpr auto GeneratedCodeInfo::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GeneratedCodeInfo), alignof(GeneratedCodeInfo));
 }
-constexpr auto GeneratedCodeInfo::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &GeneratedCodeInfo::MergeImpl,
-          Super_::GetNewImpl<GeneratedCodeInfo>(),
+constexpr auto GeneratedCodeInfo::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &GeneratedCodeInfo::MergeImpl,
+      Super_::GetNewImpl<GeneratedCodeInfo>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &GeneratedCodeInfo::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &GeneratedCodeInfo::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo, _impl_._cached_size_),
       &file_reflection_data[34],
   };
 }
@@ -1980,8 +1869,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    GeneratedCodeInfoGlobalsTypeInternal()
-      : MessageGlobalsBase(GeneratedCodeInfo::InternalGenerateClassData_(
-            _default, &GeneratedCodeInfo_globals_._table.header)),
+      : MessageGlobalsBase(GeneratedCodeInfo::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<GeneratedCodeInfo>(
             GetClassData())) {}
@@ -2087,24 +1975,17 @@
 constexpr auto FeatureSetDefaults_FeatureSetEditionDefault::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(FeatureSetDefaults_FeatureSetEditionDefault), alignof(FeatureSetDefaults_FeatureSetEditionDefault));
 }
-constexpr auto FeatureSetDefaults_FeatureSetEditionDefault::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FeatureSetDefaults_FeatureSetEditionDefault::IsInitializedImpl,
-          &FeatureSetDefaults_FeatureSetEditionDefault::MergeImpl,
-          Super_::GetNewImpl<FeatureSetDefaults_FeatureSetEditionDefault>(),
+constexpr auto FeatureSetDefaults_FeatureSetEditionDefault::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FeatureSetDefaults_FeatureSetEditionDefault::IsInitializedImpl,
+      &FeatureSetDefaults_FeatureSetEditionDefault::MergeImpl,
+      Super_::GetNewImpl<FeatureSetDefaults_FeatureSetEditionDefault>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FeatureSetDefaults_FeatureSetEditionDefault::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FeatureSetDefaults_FeatureSetEditionDefault::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FeatureSetDefaults_FeatureSetEditionDefault, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FeatureSetDefaults_FeatureSetEditionDefault, _impl_._cached_size_),
       &file_reflection_data[29],
   };
 }
@@ -2113,8 +1994,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FeatureSetDefaults_FeatureSetEditionDefaultGlobalsTypeInternal()
-      : MessageGlobalsBase(FeatureSetDefaults_FeatureSetEditionDefault::InternalGenerateClassData_(
-            _default, &FeatureSetDefaults_FeatureSetEditionDefault_globals_._table.header)),
+      : MessageGlobalsBase(FeatureSetDefaults_FeatureSetEditionDefault::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FeatureSetDefaults_FeatureSetEditionDefault>(
             GetClassData())) {}
@@ -2227,24 +2107,17 @@
 constexpr auto ServiceOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ServiceOptions), alignof(ServiceOptions));
 }
-constexpr auto ServiceOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          ServiceOptions::IsInitializedImpl,
-          &ServiceOptions::MergeImpl,
-          Super_::GetNewImpl<ServiceOptions>(),
+constexpr auto ServiceOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      ServiceOptions::IsInitializedImpl,
+      &ServiceOptions::MergeImpl,
+      Super_::GetNewImpl<ServiceOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &ServiceOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &ServiceOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(ServiceOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(ServiceOptions, _impl_._cached_size_),
       &file_reflection_data[22],
   };
 }
@@ -2253,8 +2126,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    ServiceOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(ServiceOptions::InternalGenerateClassData_(
-            _default, &ServiceOptions_globals_._table.header)),
+      : MessageGlobalsBase(ServiceOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<ServiceOptions>(
             GetClassData())) {}
@@ -2359,24 +2231,17 @@
 constexpr auto OneofOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(OneofOptions), alignof(OneofOptions));
 }
-constexpr auto OneofOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          OneofOptions::IsInitializedImpl,
-          &OneofOptions::MergeImpl,
-          Super_::GetNewImpl<OneofOptions>(),
+constexpr auto OneofOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      OneofOptions::IsInitializedImpl,
+      &OneofOptions::MergeImpl,
+      Super_::GetNewImpl<OneofOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &OneofOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &OneofOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(OneofOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(OneofOptions, _impl_._cached_size_),
       &file_reflection_data[19],
   };
 }
@@ -2385,8 +2250,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    OneofOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(OneofOptions::InternalGenerateClassData_(
-            _default, &OneofOptions_globals_._table.header)),
+      : MessageGlobalsBase(OneofOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<OneofOptions>(
             GetClassData())) {}
@@ -2510,24 +2374,17 @@
 constexpr auto MethodOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MethodOptions), alignof(MethodOptions));
 }
-constexpr auto MethodOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          MethodOptions::IsInitializedImpl,
-          &MethodOptions::MergeImpl,
-          Super_::GetNewImpl<MethodOptions>(),
+constexpr auto MethodOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      MethodOptions::IsInitializedImpl,
+      &MethodOptions::MergeImpl,
+      Super_::GetNewImpl<MethodOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &MethodOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &MethodOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(MethodOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(MethodOptions, _impl_._cached_size_),
       &file_reflection_data[23],
   };
 }
@@ -2536,8 +2393,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    MethodOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(MethodOptions::InternalGenerateClassData_(
-            _default, &MethodOptions_globals_._table.header)),
+      : MessageGlobalsBase(MethodOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<MethodOptions>(
             GetClassData())) {}
@@ -2670,24 +2526,17 @@
 constexpr auto MessageOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MessageOptions), alignof(MessageOptions));
 }
-constexpr auto MessageOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          MessageOptions::IsInitializedImpl,
-          &MessageOptions::MergeImpl,
-          Super_::GetNewImpl<MessageOptions>(),
+constexpr auto MessageOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      MessageOptions::IsInitializedImpl,
+      &MessageOptions::MergeImpl,
+      Super_::GetNewImpl<MessageOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &MessageOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &MessageOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(MessageOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(MessageOptions, _impl_._cached_size_),
       &file_reflection_data[15],
   };
 }
@@ -2696,8 +2545,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    MessageOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(MessageOptions::InternalGenerateClassData_(
-            _default, &MessageOptions_globals_._table.header)),
+      : MessageGlobalsBase(MessageOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<MessageOptions>(
             GetClassData())) {}
@@ -2955,24 +2803,17 @@
 constexpr auto FileOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FileOptions), alignof(FileOptions));
 }
-constexpr auto FileOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FileOptions::IsInitializedImpl,
-          &FileOptions::MergeImpl,
-          Super_::GetNewImpl<FileOptions>(),
+constexpr auto FileOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FileOptions::IsInitializedImpl,
+      &FileOptions::MergeImpl,
+      Super_::GetNewImpl<FileOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FileOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FileOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FileOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FileOptions, _impl_._cached_size_),
       &file_reflection_data[14],
   };
 }
@@ -2981,8 +2822,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FileOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(FileOptions::InternalGenerateClassData_(
-            _default, &FileOptions_globals_._table.header)),
+      : MessageGlobalsBase(FileOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FileOptions>(
             GetClassData())) {}
@@ -3173,24 +3013,17 @@
 constexpr auto FieldOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FieldOptions), alignof(FieldOptions));
 }
-constexpr auto FieldOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FieldOptions::IsInitializedImpl,
-          &FieldOptions::MergeImpl,
-          Super_::GetNewImpl<FieldOptions>(),
+constexpr auto FieldOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FieldOptions::IsInitializedImpl,
+      &FieldOptions::MergeImpl,
+      Super_::GetNewImpl<FieldOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FieldOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FieldOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FieldOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FieldOptions, _impl_._cached_size_),
       &file_reflection_data[18],
   };
 }
@@ -3199,8 +3032,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FieldOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(FieldOptions::InternalGenerateClassData_(
-            _default, &FieldOptions_globals_._table.header)),
+      : MessageGlobalsBase(FieldOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FieldOptions>(
             GetClassData())) {}
@@ -3305,24 +3137,17 @@
 constexpr auto FeatureSetDefaults::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FeatureSetDefaults), alignof(FeatureSetDefaults));
 }
-constexpr auto FeatureSetDefaults::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FeatureSetDefaults::IsInitializedImpl,
-          &FeatureSetDefaults::MergeImpl,
-          Super_::GetNewImpl<FeatureSetDefaults>(),
+constexpr auto FeatureSetDefaults::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FeatureSetDefaults::IsInitializedImpl,
+      &FeatureSetDefaults::MergeImpl,
+      Super_::GetNewImpl<FeatureSetDefaults>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FeatureSetDefaults::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FeatureSetDefaults::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FeatureSetDefaults, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FeatureSetDefaults, _impl_._cached_size_),
       &file_reflection_data[30],
   };
 }
@@ -3331,8 +3156,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FeatureSetDefaultsGlobalsTypeInternal()
-      : MessageGlobalsBase(FeatureSetDefaults::InternalGenerateClassData_(
-            _default, &FeatureSetDefaults_globals_._table.header)),
+      : MessageGlobalsBase(FeatureSetDefaults::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FeatureSetDefaults>(
             GetClassData())) {}
@@ -3458,24 +3282,17 @@
 constexpr auto ExtensionRangeOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ExtensionRangeOptions), alignof(ExtensionRangeOptions));
 }
-constexpr auto ExtensionRangeOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          ExtensionRangeOptions::IsInitializedImpl,
-          &ExtensionRangeOptions::MergeImpl,
-          Super_::GetNewImpl<ExtensionRangeOptions>(),
+constexpr auto ExtensionRangeOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      ExtensionRangeOptions::IsInitializedImpl,
+      &ExtensionRangeOptions::MergeImpl,
+      Super_::GetNewImpl<ExtensionRangeOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &ExtensionRangeOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &ExtensionRangeOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(ExtensionRangeOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(ExtensionRangeOptions, _impl_._cached_size_),
       &file_reflection_data[6],
   };
 }
@@ -3484,8 +3301,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    ExtensionRangeOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(ExtensionRangeOptions::InternalGenerateClassData_(
-            _default, &ExtensionRangeOptions_globals_._table.header)),
+      : MessageGlobalsBase(ExtensionRangeOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<ExtensionRangeOptions>(
             GetClassData())) {}
@@ -3613,24 +3429,17 @@
 constexpr auto EnumValueOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EnumValueOptions), alignof(EnumValueOptions));
 }
-constexpr auto EnumValueOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          EnumValueOptions::IsInitializedImpl,
-          &EnumValueOptions::MergeImpl,
-          Super_::GetNewImpl<EnumValueOptions>(),
+constexpr auto EnumValueOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      EnumValueOptions::IsInitializedImpl,
+      &EnumValueOptions::MergeImpl,
+      Super_::GetNewImpl<EnumValueOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &EnumValueOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &EnumValueOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(EnumValueOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(EnumValueOptions, _impl_._cached_size_),
       &file_reflection_data[21],
   };
 }
@@ -3639,8 +3448,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    EnumValueOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(EnumValueOptions::InternalGenerateClassData_(
-            _default, &EnumValueOptions_globals_._table.header)),
+      : MessageGlobalsBase(EnumValueOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<EnumValueOptions>(
             GetClassData())) {}
@@ -3764,24 +3572,17 @@
 constexpr auto EnumOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EnumOptions), alignof(EnumOptions));
 }
-constexpr auto EnumOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          EnumOptions::IsInitializedImpl,
-          &EnumOptions::MergeImpl,
-          Super_::GetNewImpl<EnumOptions>(),
+constexpr auto EnumOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      EnumOptions::IsInitializedImpl,
+      &EnumOptions::MergeImpl,
+      Super_::GetNewImpl<EnumOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &EnumOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &EnumOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(EnumOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(EnumOptions, _impl_._cached_size_),
       &file_reflection_data[20],
   };
 }
@@ -3790,8 +3591,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    EnumOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(EnumOptions::InternalGenerateClassData_(
-            _default, &EnumOptions_globals_._table.header)),
+      : MessageGlobalsBase(EnumOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<EnumOptions>(
             GetClassData())) {}
@@ -3889,24 +3689,17 @@
 constexpr auto OneofDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(OneofDescriptorProto), alignof(OneofDescriptorProto));
 }
-constexpr auto OneofDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          OneofDescriptorProto::IsInitializedImpl,
-          &OneofDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<OneofDescriptorProto>(),
+constexpr auto OneofDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      OneofDescriptorProto::IsInitializedImpl,
+      &OneofDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<OneofDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &OneofDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &OneofDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(OneofDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(OneofDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[8],
   };
 }
@@ -3915,8 +3708,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    OneofDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(OneofDescriptorProto::InternalGenerateClassData_(
-            _default, &OneofDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(OneofDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<OneofDescriptorProto>(
             GetClassData())) {}
@@ -4048,24 +3840,17 @@
 constexpr auto MethodDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MethodDescriptorProto), alignof(MethodDescriptorProto));
 }
-constexpr auto MethodDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          MethodDescriptorProto::IsInitializedImpl,
-          &MethodDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<MethodDescriptorProto>(),
+constexpr auto MethodDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      MethodDescriptorProto::IsInitializedImpl,
+      &MethodDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<MethodDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &MethodDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &MethodDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(MethodDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(MethodDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[13],
   };
 }
@@ -4074,8 +3859,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    MethodDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(MethodDescriptorProto::InternalGenerateClassData_(
-            _default, &MethodDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(MethodDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<MethodDescriptorProto>(
             GetClassData())) {}
@@ -4248,24 +4032,17 @@
 constexpr auto FieldDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FieldDescriptorProto), alignof(FieldDescriptorProto));
 }
-constexpr auto FieldDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FieldDescriptorProto::IsInitializedImpl,
-          &FieldDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<FieldDescriptorProto>(),
+constexpr auto FieldDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FieldDescriptorProto::IsInitializedImpl,
+      &FieldDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<FieldDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FieldDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FieldDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FieldDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FieldDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[7],
   };
 }
@@ -4274,8 +4051,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FieldDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(FieldDescriptorProto::InternalGenerateClassData_(
-            _default, &FieldDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(FieldDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FieldDescriptorProto>(
             GetClassData())) {}
@@ -4381,24 +4157,17 @@
 constexpr auto EnumValueDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EnumValueDescriptorProto), alignof(EnumValueDescriptorProto));
 }
-constexpr auto EnumValueDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          EnumValueDescriptorProto::IsInitializedImpl,
-          &EnumValueDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<EnumValueDescriptorProto>(),
+constexpr auto EnumValueDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      EnumValueDescriptorProto::IsInitializedImpl,
+      &EnumValueDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<EnumValueDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &EnumValueDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &EnumValueDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(EnumValueDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(EnumValueDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[11],
   };
 }
@@ -4407,8 +4176,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    EnumValueDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(EnumValueDescriptorProto::InternalGenerateClassData_(
-            _default, &EnumValueDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(EnumValueDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<EnumValueDescriptorProto>(
             GetClassData())) {}
@@ -4512,24 +4280,17 @@
 constexpr auto DescriptorProto_ExtensionRange::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(DescriptorProto_ExtensionRange), alignof(DescriptorProto_ExtensionRange));
 }
-constexpr auto DescriptorProto_ExtensionRange::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          DescriptorProto_ExtensionRange::IsInitializedImpl,
-          &DescriptorProto_ExtensionRange::MergeImpl,
-          Super_::GetNewImpl<DescriptorProto_ExtensionRange>(),
+constexpr auto DescriptorProto_ExtensionRange::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      DescriptorProto_ExtensionRange::IsInitializedImpl,
+      &DescriptorProto_ExtensionRange::MergeImpl,
+      Super_::GetNewImpl<DescriptorProto_ExtensionRange>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &DescriptorProto_ExtensionRange::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &DescriptorProto_ExtensionRange::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(DescriptorProto_ExtensionRange, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(DescriptorProto_ExtensionRange, _impl_._cached_size_),
       &file_reflection_data[2],
   };
 }
@@ -4538,8 +4299,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    DescriptorProto_ExtensionRangeGlobalsTypeInternal()
-      : MessageGlobalsBase(DescriptorProto_ExtensionRange::InternalGenerateClassData_(
-            _default, &DescriptorProto_ExtensionRange_globals_._table.header)),
+      : MessageGlobalsBase(DescriptorProto_ExtensionRange::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<DescriptorProto_ExtensionRange>(
             GetClassData())) {}
@@ -4650,24 +4410,17 @@
 constexpr auto ServiceDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ServiceDescriptorProto), alignof(ServiceDescriptorProto));
 }
-constexpr auto ServiceDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          ServiceDescriptorProto::IsInitializedImpl,
-          &ServiceDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<ServiceDescriptorProto>(),
+constexpr auto ServiceDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      ServiceDescriptorProto::IsInitializedImpl,
+      &ServiceDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<ServiceDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &ServiceDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &ServiceDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(ServiceDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(ServiceDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[12],
   };
 }
@@ -4676,8 +4429,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    ServiceDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(ServiceDescriptorProto::InternalGenerateClassData_(
-            _default, &ServiceDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(ServiceDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<ServiceDescriptorProto>(
             GetClassData())) {}
@@ -4820,24 +4572,17 @@
 constexpr auto EnumDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EnumDescriptorProto), alignof(EnumDescriptorProto));
 }
-constexpr auto EnumDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          EnumDescriptorProto::IsInitializedImpl,
-          &EnumDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<EnumDescriptorProto>(),
+constexpr auto EnumDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      EnumDescriptorProto::IsInitializedImpl,
+      &EnumDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<EnumDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &EnumDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &EnumDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(EnumDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(EnumDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[10],
   };
 }
@@ -4846,8 +4591,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    EnumDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(EnumDescriptorProto::InternalGenerateClassData_(
-            _default, &EnumDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(EnumDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<EnumDescriptorProto>(
             GetClassData())) {}
@@ -5053,24 +4797,17 @@
 constexpr auto DescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(DescriptorProto), alignof(DescriptorProto));
 }
-constexpr auto DescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          DescriptorProto::IsInitializedImpl,
-          &DescriptorProto::MergeImpl,
-          Super_::GetNewImpl<DescriptorProto>(),
+constexpr auto DescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      DescriptorProto::IsInitializedImpl,
+      &DescriptorProto::MergeImpl,
+      Super_::GetNewImpl<DescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &DescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &DescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(DescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(DescriptorProto, _impl_._cached_size_),
       &file_reflection_data[4],
   };
 }
@@ -5079,8 +4816,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    DescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(DescriptorProto::InternalGenerateClassData_(
-            _default, &DescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(DescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<DescriptorProto>(
             GetClassData())) {}
@@ -5306,24 +5042,17 @@
 constexpr auto FileDescriptorProto::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FileDescriptorProto), alignof(FileDescriptorProto));
 }
-constexpr auto FileDescriptorProto::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FileDescriptorProto::IsInitializedImpl,
-          &FileDescriptorProto::MergeImpl,
-          Super_::GetNewImpl<FileDescriptorProto>(),
+constexpr auto FileDescriptorProto::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FileDescriptorProto::IsInitializedImpl,
+      &FileDescriptorProto::MergeImpl,
+      Super_::GetNewImpl<FileDescriptorProto>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FileDescriptorProto::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FileDescriptorProto::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FileDescriptorProto, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FileDescriptorProto, _impl_._cached_size_),
       &file_reflection_data[1],
   };
 }
@@ -5332,8 +5061,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FileDescriptorProtoGlobalsTypeInternal()
-      : MessageGlobalsBase(FileDescriptorProto::InternalGenerateClassData_(
-            _default, &FileDescriptorProto_globals_._table.header)),
+      : MessageGlobalsBase(FileDescriptorProto::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FileDescriptorProto>(
             GetClassData())) {}
@@ -5426,24 +5154,17 @@
 constexpr auto FileDescriptorSet::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FileDescriptorSet), alignof(FileDescriptorSet));
 }
-constexpr auto FileDescriptorSet::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          FileDescriptorSet::IsInitializedImpl,
-          &FileDescriptorSet::MergeImpl,
-          Super_::GetNewImpl<FileDescriptorSet>(),
+constexpr auto FileDescriptorSet::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      FileDescriptorSet::IsInitializedImpl,
+      &FileDescriptorSet::MergeImpl,
+      Super_::GetNewImpl<FileDescriptorSet>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &FileDescriptorSet::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &FileDescriptorSet::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(FileDescriptorSet, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(FileDescriptorSet, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
@@ -5452,8 +5173,7 @@
   constexpr
   #endif  // PROTOBUF_CONSTINIT_DEFAULT_INSTANCES
    FileDescriptorSetGlobalsTypeInternal()
-      : MessageGlobalsBase(FileDescriptorSet::InternalGenerateClassData_(
-            _default, &FileDescriptorSet_globals_._table.header)),
+      : MessageGlobalsBase(FileDescriptorSet::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<FileDescriptorSet>(
             GetClassData())) {}
@@ -6542,7 +6262,7 @@
 
 FileDescriptorSet::FileDescriptorSet(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileDescriptorSet_globals_.GetClassData()) {
+    : Super_(arena, &FileDescriptorSet_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -6568,7 +6288,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FileDescriptorSet& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileDescriptorSet_globals_.GetClassData()) {
+    : Super_(arena, &FileDescriptorSet_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -6616,7 +6336,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FileDescriptorSet_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FileDescriptorSet_globals_));
-  return FileDescriptorSet_globals_.GetClassData();
+  return &FileDescriptorSet_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FileDescriptorSet::Helpers_::Clear(MessageLite& base) {
@@ -6764,13 +6484,13 @@
 }
 
 ::google::protobuf::Metadata FileDescriptorSet::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FileDescriptorSet_globals_.class_data);
 }
 // ===================================================================
 
 FileDescriptorProto::FileDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &FileDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -6846,7 +6566,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FileDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &FileDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -6947,7 +6667,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FileDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FileDescriptorProto_globals_));
-  return FileDescriptorProto_globals_.GetClassData();
+  return &FileDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FileDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -7415,13 +7135,13 @@
 }
 
 ::google::protobuf::Metadata FileDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FileDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_ExtensionRange_globals_.GetClassData()) {
+    : Super_(arena, &DescriptorProto_ExtensionRange_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -7438,7 +7158,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const DescriptorProto_ExtensionRange& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_ExtensionRange_globals_.GetClassData()) {
+    : Super_(arena, &DescriptorProto_ExtensionRange_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -7496,7 +7216,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&DescriptorProto_ExtensionRange_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DescriptorProto_ExtensionRange_globals_));
-  return DescriptorProto_ExtensionRange_globals_.GetClassData();
+  return &DescriptorProto_ExtensionRange_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void DescriptorProto_ExtensionRange::Helpers_::Clear(MessageLite& base) {
@@ -7674,13 +7394,13 @@
 }
 
 ::google::protobuf::Metadata DescriptorProto_ExtensionRange::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(DescriptorProto_ExtensionRange_globals_.class_data);
 }
 // ===================================================================
 
 DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_ReservedRange_globals_.GetClassData()) {
+    : Super_(arena, &DescriptorProto_ReservedRange_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -7690,7 +7410,7 @@
 DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DescriptorProto_ReservedRange& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_ReservedRange_globals_.GetClassData()),
+    : Super_(arena, &DescriptorProto_ReservedRange_globals_.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -7731,7 +7451,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&DescriptorProto_ReservedRange_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DescriptorProto_ReservedRange_globals_));
-  return DescriptorProto_ReservedRange_globals_.GetClassData();
+  return &DescriptorProto_ReservedRange_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void DescriptorProto_ReservedRange::Helpers_::Clear(MessageLite& base) {
@@ -7876,13 +7596,13 @@
 }
 
 ::google::protobuf::Metadata DescriptorProto_ReservedRange::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(DescriptorProto_ReservedRange_globals_.class_data);
 }
 // ===================================================================
 
 DescriptorProto::DescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &DescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -7956,7 +7676,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const DescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, DescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &DescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -8049,7 +7769,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&DescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DescriptorProto_globals_));
-  return DescriptorProto_globals_.GetClassData();
+  return &DescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void DescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -8468,13 +8188,13 @@
 }
 
 ::google::protobuf::Metadata DescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(DescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 ExtensionRangeOptions_Declaration::ExtensionRangeOptions_Declaration(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ExtensionRangeOptions_Declaration_globals_.GetClassData()) {
+    : Super_(arena, &ExtensionRangeOptions_Declaration_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -8493,7 +8213,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const ExtensionRangeOptions_Declaration& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ExtensionRangeOptions_Declaration_globals_.GetClassData()) {
+    : Super_(arena, &ExtensionRangeOptions_Declaration_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -8549,7 +8269,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&ExtensionRangeOptions_Declaration_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ExtensionRangeOptions_Declaration_globals_));
-  return ExtensionRangeOptions_Declaration_globals_.GetClassData();
+  return &ExtensionRangeOptions_Declaration_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void ExtensionRangeOptions_Declaration::Helpers_::Clear(MessageLite& base) {
@@ -8740,13 +8460,13 @@
 }
 
 ::google::protobuf::Metadata ExtensionRangeOptions_Declaration::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(ExtensionRangeOptions_Declaration_globals_.class_data);
 }
 // ===================================================================
 
 ExtensionRangeOptions::ExtensionRangeOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ExtensionRangeOptions_globals_.GetClassData()) {
+    : Super_(arena, &ExtensionRangeOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -8779,7 +8499,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const ExtensionRangeOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ExtensionRangeOptions_globals_.GetClassData()) {
+    : Super_(arena, &ExtensionRangeOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -8840,7 +8560,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&ExtensionRangeOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ExtensionRangeOptions_globals_));
-  return ExtensionRangeOptions_globals_.GetClassData();
+  return &ExtensionRangeOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void ExtensionRangeOptions::Helpers_::Clear(MessageLite& base) {
@@ -9072,13 +8792,13 @@
 }
 
 ::google::protobuf::Metadata ExtensionRangeOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(ExtensionRangeOptions_globals_.class_data);
 }
 // ===================================================================
 
 FieldDescriptorProto::FieldDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &FieldDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -9100,7 +8820,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FieldDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &FieldDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -9169,7 +8889,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FieldDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FieldDescriptorProto_globals_));
-  return FieldDescriptorProto_globals_.GetClassData();
+  return &FieldDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FieldDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -9491,13 +9211,13 @@
 }
 
 ::google::protobuf::Metadata FieldDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FieldDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 OneofDescriptorProto::OneofDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, OneofDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &OneofDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -9515,7 +9235,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const OneofDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, OneofDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &OneofDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -9562,7 +9282,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&OneofDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&OneofDescriptorProto_globals_));
-  return OneofDescriptorProto_globals_.GetClassData();
+  return &OneofDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void OneofDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -9720,13 +9440,13 @@
 }
 
 ::google::protobuf::Metadata OneofDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(OneofDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumDescriptorProto_EnumReservedRange_globals_.GetClassData()) {
+    : Super_(arena, &EnumDescriptorProto_EnumReservedRange_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -9736,7 +9456,7 @@
 EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EnumDescriptorProto_EnumReservedRange& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumDescriptorProto_EnumReservedRange_globals_.GetClassData()),
+    : Super_(arena, &EnumDescriptorProto_EnumReservedRange_globals_.class_data),
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena),
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -9777,7 +9497,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&EnumDescriptorProto_EnumReservedRange_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EnumDescriptorProto_EnumReservedRange_globals_));
-  return EnumDescriptorProto_EnumReservedRange_globals_.GetClassData();
+  return &EnumDescriptorProto_EnumReservedRange_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void EnumDescriptorProto_EnumReservedRange::Helpers_::Clear(MessageLite& base) {
@@ -9922,13 +9642,13 @@
 }
 
 ::google::protobuf::Metadata EnumDescriptorProto_EnumReservedRange::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(EnumDescriptorProto_EnumReservedRange_globals_.class_data);
 }
 // ===================================================================
 
 EnumDescriptorProto::EnumDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &EnumDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -9967,7 +9687,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const EnumDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &EnumDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -10035,7 +9755,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&EnumDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EnumDescriptorProto_globals_));
-  return EnumDescriptorProto_globals_.GetClassData();
+  return &EnumDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void EnumDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -10298,13 +10018,13 @@
 }
 
 ::google::protobuf::Metadata EnumDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(EnumDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 EnumValueDescriptorProto::EnumValueDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumValueDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &EnumValueDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -10322,7 +10042,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const EnumValueDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumValueDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &EnumValueDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -10375,7 +10095,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&EnumValueDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EnumValueDescriptorProto_globals_));
-  return EnumValueDescriptorProto_globals_.GetClassData();
+  return &EnumValueDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void EnumValueDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -10554,13 +10274,13 @@
 }
 
 ::google::protobuf::Metadata EnumValueDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(EnumValueDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 ServiceDescriptorProto::ServiceDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ServiceDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &ServiceDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -10585,7 +10305,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const ServiceDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ServiceDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &ServiceDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -10637,7 +10357,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&ServiceDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ServiceDescriptorProto_globals_));
-  return ServiceDescriptorProto_globals_.GetClassData();
+  return &ServiceDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void ServiceDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -10825,13 +10545,13 @@
 }
 
 ::google::protobuf::Metadata ServiceDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(ServiceDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 MethodDescriptorProto::MethodDescriptorProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MethodDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &MethodDescriptorProto_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -10851,7 +10571,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const MethodDescriptorProto& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MethodDescriptorProto_globals_.GetClassData()) {
+    : Super_(arena, &MethodDescriptorProto_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -10914,7 +10634,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&MethodDescriptorProto_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MethodDescriptorProto_globals_));
-  return MethodDescriptorProto_globals_.GetClassData();
+  return &MethodDescriptorProto_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void MethodDescriptorProto::Helpers_::Clear(MessageLite& base) {
@@ -11139,13 +10859,13 @@
 }
 
 ::google::protobuf::Metadata MethodDescriptorProto::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(MethodDescriptorProto_globals_.class_data);
 }
 // ===================================================================
 
 FileOptions::FileOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileOptions_globals_.GetClassData()) {
+    : Super_(arena, &FileOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -11181,7 +10901,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FileOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FileOptions_globals_.GetClassData()) {
+    : Super_(arena, &FileOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -11269,7 +10989,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FileOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FileOptions_globals_));
-  return FileOptions_globals_.GetClassData();
+  return &FileOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FileOptions::Helpers_::Clear(MessageLite& base) {
@@ -11762,13 +11482,13 @@
 }
 
 ::google::protobuf::Metadata FileOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FileOptions_globals_.class_data);
 }
 // ===================================================================
 
 MessageOptions::MessageOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MessageOptions_globals_.GetClassData()) {
+    : Super_(arena, &MessageOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -11794,7 +11514,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const MessageOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MessageOptions_globals_.GetClassData()) {
+    : Super_(arena, &MessageOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -11860,7 +11580,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&MessageOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MessageOptions_globals_));
-  return MessageOptions_globals_.GetClassData();
+  return &MessageOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void MessageOptions::Helpers_::Clear(MessageLite& base) {
@@ -12104,13 +11824,13 @@
 }
 
 ::google::protobuf::Metadata MessageOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(MessageOptions_globals_.class_data);
 }
 // ===================================================================
 
 FieldOptions_EditionDefault::FieldOptions_EditionDefault(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_EditionDefault_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_EditionDefault_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -12128,7 +11848,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FieldOptions_EditionDefault& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_EditionDefault_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_EditionDefault_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -12171,7 +11891,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FieldOptions_EditionDefault_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FieldOptions_EditionDefault_globals_));
-  return FieldOptions_EditionDefault_globals_.GetClassData();
+  return &FieldOptions_EditionDefault_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FieldOptions_EditionDefault::Helpers_::Clear(MessageLite& base) {
@@ -12310,13 +12030,13 @@
 }
 
 ::google::protobuf::Metadata FieldOptions_EditionDefault::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FieldOptions_EditionDefault_globals_.class_data);
 }
 // ===================================================================
 
 FieldOptions_FeatureSupport::FieldOptions_FeatureSupport(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_FeatureSupport_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_FeatureSupport_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -12335,7 +12055,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FieldOptions_FeatureSupport& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_FeatureSupport_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_FeatureSupport_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -12391,7 +12111,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FieldOptions_FeatureSupport_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FieldOptions_FeatureSupport_globals_));
-  return FieldOptions_FeatureSupport_globals_.GetClassData();
+  return &FieldOptions_FeatureSupport_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FieldOptions_FeatureSupport::Helpers_::Clear(MessageLite& base) {
@@ -12591,13 +12311,13 @@
 }
 
 ::google::protobuf::Metadata FieldOptions_FeatureSupport::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FieldOptions_FeatureSupport_globals_.class_data);
 }
 // ===================================================================
 
 FieldOptions::FieldOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -12637,7 +12357,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FieldOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FieldOptions_globals_.GetClassData()) {
+    : Super_(arena, &FieldOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -12717,7 +12437,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FieldOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FieldOptions_globals_));
-  return FieldOptions_globals_.GetClassData();
+  return &FieldOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FieldOptions::Helpers_::Clear(MessageLite& base) {
@@ -13107,13 +12827,13 @@
 }
 
 ::google::protobuf::Metadata FieldOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FieldOptions_globals_.class_data);
 }
 // ===================================================================
 
 OneofOptions::OneofOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, OneofOptions_globals_.GetClassData()) {
+    : Super_(arena, &OneofOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -13139,7 +12859,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const OneofOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, OneofOptions_globals_.GetClassData()) {
+    : Super_(arena, &OneofOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -13193,7 +12913,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&OneofOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&OneofOptions_globals_));
-  return OneofOptions_globals_.GetClassData();
+  return &OneofOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void OneofOptions::Helpers_::Clear(MessageLite& base) {
@@ -13376,13 +13096,13 @@
 }
 
 ::google::protobuf::Metadata OneofOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(OneofOptions_globals_.class_data);
 }
 // ===================================================================
 
 EnumOptions::EnumOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumOptions_globals_.GetClassData()) {
+    : Super_(arena, &EnumOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -13408,7 +13128,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const EnumOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumOptions_globals_.GetClassData()) {
+    : Super_(arena, &EnumOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -13474,7 +13194,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&EnumOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EnumOptions_globals_));
-  return EnumOptions_globals_.GetClassData();
+  return &EnumOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void EnumOptions::Helpers_::Clear(MessageLite& base) {
@@ -13696,13 +13416,13 @@
 }
 
 ::google::protobuf::Metadata EnumOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(EnumOptions_globals_.class_data);
 }
 // ===================================================================
 
 EnumValueOptions::EnumValueOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumValueOptions_globals_.GetClassData()) {
+    : Super_(arena, &EnumValueOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -13728,7 +13448,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const EnumValueOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, EnumValueOptions_globals_.GetClassData()) {
+    : Super_(arena, &EnumValueOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -13798,7 +13518,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&EnumValueOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EnumValueOptions_globals_));
-  return EnumValueOptions_globals_.GetClassData();
+  return &EnumValueOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void EnumValueOptions::Helpers_::Clear(MessageLite& base) {
@@ -14036,13 +13756,13 @@
 }
 
 ::google::protobuf::Metadata EnumValueOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(EnumValueOptions_globals_.class_data);
 }
 // ===================================================================
 
 ServiceOptions::ServiceOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ServiceOptions_globals_.GetClassData()) {
+    : Super_(arena, &ServiceOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -14068,7 +13788,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const ServiceOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, ServiceOptions_globals_.GetClassData()) {
+    : Super_(arena, &ServiceOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -14128,7 +13848,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&ServiceOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ServiceOptions_globals_));
-  return ServiceOptions_globals_.GetClassData();
+  return &ServiceOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void ServiceOptions::Helpers_::Clear(MessageLite& base) {
@@ -14328,13 +14048,13 @@
 }
 
 ::google::protobuf::Metadata ServiceOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(ServiceOptions_globals_.class_data);
 }
 // ===================================================================
 
 MethodOptions::MethodOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MethodOptions_globals_.GetClassData()) {
+    : Super_(arena, &MethodOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -14360,7 +14080,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const MethodOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, MethodOptions_globals_.GetClassData()) {
+    : Super_(arena, &MethodOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -14426,7 +14146,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&MethodOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MethodOptions_globals_));
-  return MethodOptions_globals_.GetClassData();
+  return &MethodOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void MethodOptions::Helpers_::Clear(MessageLite& base) {
@@ -14647,13 +14367,13 @@
 }
 
 ::google::protobuf::Metadata MethodOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(MethodOptions_globals_.class_data);
 }
 // ===================================================================
 
 UninterpretedOption_NamePart::UninterpretedOption_NamePart(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, UninterpretedOption_NamePart_globals_.GetClassData()) {
+    : Super_(arena, &UninterpretedOption_NamePart_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -14671,7 +14391,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const UninterpretedOption_NamePart& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, UninterpretedOption_NamePart_globals_.GetClassData()) {
+    : Super_(arena, &UninterpretedOption_NamePart_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -14714,7 +14434,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&UninterpretedOption_NamePart_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&UninterpretedOption_NamePart_globals_));
-  return UninterpretedOption_NamePart_globals_.GetClassData();
+  return &UninterpretedOption_NamePart_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void UninterpretedOption_NamePart::Helpers_::Clear(MessageLite& base) {
@@ -14857,13 +14577,13 @@
 }
 
 ::google::protobuf::Metadata UninterpretedOption_NamePart::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(UninterpretedOption_NamePart_globals_.class_data);
 }
 // ===================================================================
 
 UninterpretedOption::UninterpretedOption(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, UninterpretedOption_globals_.GetClassData()) {
+    : Super_(arena, &UninterpretedOption_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -14890,7 +14610,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const UninterpretedOption& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, UninterpretedOption_globals_.GetClassData()) {
+    : Super_(arena, &UninterpretedOption_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -14953,7 +14673,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&UninterpretedOption_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&UninterpretedOption_globals_));
-  return UninterpretedOption_globals_.GetClassData();
+  return &UninterpretedOption_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void UninterpretedOption::Helpers_::Clear(MessageLite& base) {
@@ -15203,13 +14923,13 @@
 }
 
 ::google::protobuf::Metadata UninterpretedOption::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(UninterpretedOption_globals_.class_data);
 }
 // ===================================================================
 
 FeatureSet_VisibilityFeature::FeatureSet_VisibilityFeature(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_VisibilityFeature_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_VisibilityFeature_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -15219,7 +14939,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FeatureSet_VisibilityFeature& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_VisibilityFeature_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_VisibilityFeature_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -15237,7 +14957,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FeatureSet_VisibilityFeature_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FeatureSet_VisibilityFeature_globals_));
-  return FeatureSet_VisibilityFeature_globals_.GetClassData();
+  return &FeatureSet_VisibilityFeature_globals_.class_data;
 }
 
 
@@ -15247,13 +14967,13 @@
 
 
 ::google::protobuf::Metadata FeatureSet_VisibilityFeature::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FeatureSet_VisibilityFeature_globals_.class_data);
 }
 // ===================================================================
 
 FeatureSet_ProtoLimitsFeature::FeatureSet_ProtoLimitsFeature(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_ProtoLimitsFeature_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_ProtoLimitsFeature_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -15263,7 +14983,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FeatureSet_ProtoLimitsFeature& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_ProtoLimitsFeature_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_ProtoLimitsFeature_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -15281,7 +15001,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FeatureSet_ProtoLimitsFeature_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FeatureSet_ProtoLimitsFeature_globals_));
-  return FeatureSet_ProtoLimitsFeature_globals_.GetClassData();
+  return &FeatureSet_ProtoLimitsFeature_globals_.class_data;
 }
 
 
@@ -15291,13 +15011,13 @@
 
 
 ::google::protobuf::Metadata FeatureSet_ProtoLimitsFeature::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FeatureSet_ProtoLimitsFeature_globals_.class_data);
 }
 // ===================================================================
 
 FeatureSet::FeatureSet(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -15316,7 +15036,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FeatureSet& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSet_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSet_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -15372,7 +15092,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FeatureSet_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FeatureSet_globals_));
-  return FeatureSet_globals_.GetClassData();
+  return &FeatureSet_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FeatureSet::Helpers_::Clear(MessageLite& base) {
@@ -15643,13 +15363,13 @@
 }
 
 ::google::protobuf::Metadata FeatureSet::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FeatureSet_globals_.class_data);
 }
 // ===================================================================
 
 FeatureSetDefaults_FeatureSetEditionDefault::FeatureSetDefaults_FeatureSetEditionDefault(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSetDefaults_FeatureSetEditionDefault_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSetDefaults_FeatureSetEditionDefault_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -15666,7 +15386,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FeatureSetDefaults_FeatureSetEditionDefault& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSetDefaults_FeatureSetEditionDefault_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSetDefaults_FeatureSetEditionDefault_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -15722,7 +15442,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FeatureSetDefaults_FeatureSetEditionDefault_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FeatureSetDefaults_FeatureSetEditionDefault_globals_));
-  return FeatureSetDefaults_FeatureSetEditionDefault_globals_.GetClassData();
+  return &FeatureSetDefaults_FeatureSetEditionDefault_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FeatureSetDefaults_FeatureSetEditionDefault::Helpers_::Clear(MessageLite& base) {
@@ -15908,13 +15628,13 @@
 }
 
 ::google::protobuf::Metadata FeatureSetDefaults_FeatureSetEditionDefault::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FeatureSetDefaults_FeatureSetEditionDefault_globals_.class_data);
 }
 // ===================================================================
 
 FeatureSetDefaults::FeatureSetDefaults(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSetDefaults_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSetDefaults_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -15938,7 +15658,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const FeatureSetDefaults& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, FeatureSetDefaults_globals_.GetClassData()) {
+    : Super_(arena, &FeatureSetDefaults_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -15995,7 +15715,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&FeatureSetDefaults_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FeatureSetDefaults_globals_));
-  return FeatureSetDefaults_globals_.GetClassData();
+  return &FeatureSetDefaults_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void FeatureSetDefaults::Helpers_::Clear(MessageLite& base) {
@@ -16176,13 +15896,13 @@
 }
 
 ::google::protobuf::Metadata FeatureSetDefaults::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(FeatureSetDefaults_globals_.class_data);
 }
 // ===================================================================
 
 SourceCodeInfo_Location::SourceCodeInfo_Location(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, SourceCodeInfo_Location_globals_.GetClassData()) {
+    : Super_(arena, &SourceCodeInfo_Location_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -16222,7 +15942,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const SourceCodeInfo_Location& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, SourceCodeInfo_Location_globals_.GetClassData()) {
+    : Super_(arena, &SourceCodeInfo_Location_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -16280,7 +16000,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&SourceCodeInfo_Location_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SourceCodeInfo_Location_globals_));
-  return SourceCodeInfo_Location_globals_.GetClassData();
+  return &SourceCodeInfo_Location_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void SourceCodeInfo_Location::Helpers_::Clear(MessageLite& base) {
@@ -16499,13 +16219,13 @@
 }
 
 ::google::protobuf::Metadata SourceCodeInfo_Location::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(SourceCodeInfo_Location_globals_.class_data);
 }
 // ===================================================================
 
 SourceCodeInfo::SourceCodeInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, SourceCodeInfo_globals_.GetClassData()) {
+    : Super_(arena, &SourceCodeInfo_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -16531,7 +16251,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const SourceCodeInfo& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, SourceCodeInfo_globals_.GetClassData()) {
+    : Super_(arena, &SourceCodeInfo_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -16579,7 +16299,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&SourceCodeInfo_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SourceCodeInfo_globals_));
-  return SourceCodeInfo_globals_.GetClassData();
+  return &SourceCodeInfo_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void SourceCodeInfo::Helpers_::Clear(MessageLite& base) {
@@ -16725,13 +16445,13 @@
 }
 
 ::google::protobuf::Metadata SourceCodeInfo::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(SourceCodeInfo_globals_.class_data);
 }
 // ===================================================================
 
 GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, GeneratedCodeInfo_Annotation_globals_.GetClassData()) {
+    : Super_(arena, &GeneratedCodeInfo_Annotation_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -16756,7 +16476,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const GeneratedCodeInfo_Annotation& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, GeneratedCodeInfo_Annotation_globals_.GetClassData()) {
+    : Super_(arena, &GeneratedCodeInfo_Annotation_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -16815,7 +16535,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&GeneratedCodeInfo_Annotation_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&GeneratedCodeInfo_Annotation_globals_));
-  return GeneratedCodeInfo_Annotation_globals_.GetClassData();
+  return &GeneratedCodeInfo_Annotation_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void GeneratedCodeInfo_Annotation::Helpers_::Clear(MessageLite& base) {
@@ -17022,13 +16742,13 @@
 }
 
 ::google::protobuf::Metadata GeneratedCodeInfo_Annotation::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(GeneratedCodeInfo_Annotation_globals_.class_data);
 }
 // ===================================================================
 
 GeneratedCodeInfo::GeneratedCodeInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, GeneratedCodeInfo_globals_.GetClassData()) {
+    : Super_(arena, &GeneratedCodeInfo_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -17052,7 +16772,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const GeneratedCodeInfo& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, GeneratedCodeInfo_globals_.GetClassData()) {
+    : Super_(arena, &GeneratedCodeInfo_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -17096,7 +16816,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&GeneratedCodeInfo_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&GeneratedCodeInfo_globals_));
-  return GeneratedCodeInfo_globals_.GetClassData();
+  return &GeneratedCodeInfo_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void GeneratedCodeInfo::Helpers_::Clear(MessageLite& base) {
@@ -17225,7 +16945,7 @@
 }
 
 ::google::protobuf::Metadata GeneratedCodeInfo::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(GeneratedCodeInfo_globals_.class_data);
 }
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace protobuf
diff --git a/src/google/protobuf/descriptor.pb.h b/src/google/protobuf/descriptor.pb.h
index 61648c7..5e0b9fc 100644
--- a/src/google/protobuf/descriptor.pb.h
+++ b/src/google/protobuf/descriptor.pb.h
@@ -1238,9 +1238,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -1476,9 +1474,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -1791,9 +1787,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -2098,9 +2092,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -2380,9 +2372,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -2585,9 +2575,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -2765,9 +2753,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -2981,9 +2967,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -3647,9 +3631,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -3929,9 +3911,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -4162,9 +4142,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -4400,9 +4378,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -4728,9 +4704,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -5149,9 +5123,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -5384,9 +5356,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -5643,9 +5613,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -6098,9 +6066,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -6540,9 +6506,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -7029,9 +6993,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -7536,9 +7498,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -8296,9 +8256,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -9009,9 +8967,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -9270,9 +9226,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -9768,9 +9722,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -10253,9 +10205,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -10734,9 +10684,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -10981,9 +10929,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -11290,9 +11236,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -11731,9 +11675,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -11991,9 +11933,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -12246,9 +12186,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -12515,9 +12453,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -12848,9 +12784,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -13292,9 +13226,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
@@ -13791,9 +13723,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/dynamic_message.cc b/src/google/protobuf/dynamic_message.cc
index e5babaa..b2367d7 100644
--- a/src/google/protobuf/dynamic_message.cc
+++ b/src/google/protobuf/dynamic_message.cc
@@ -363,10 +363,8 @@
 using internal::MessageGlobalsBase;
 
 struct DynamicMessageGlobalsInternalType : MessageGlobalsBase {
-#ifdef PROTOBUF_MESSAGE_GLOBALS
-  explicit DynamicMessageGlobalsInternalType(internal::ClassDataFull data)
+  explicit DynamicMessageGlobalsInternalType(internal::ClassData data)
       : MessageGlobalsBase(data) {}
-#endif  // PROTOBUF_MESSAGE_GLOBALS
   union {
     alignas(internal::kMaxMessageAlignment) DynamicMessage _default;  // NOLINT
   };
@@ -427,28 +425,12 @@
 
   TypeInfo() = default;
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  const internal::ClassDataFull& GetClassDataFull() const { return class_data; }
-  internal::ClassDataFull& MutableClassDataFull() { return class_data; }
-
-  const Message* GetPrototype() const {
-    return static_cast<const Message*>(class_data.prototype);
-  }
-#else   // !PROTOBUF_MESSAGE_GLOBALS
-  const internal::ClassDataFull& GetClassDataFull() const {
-    return globals->class_data;
-  }
-  internal::ClassDataFull& MutableClassDataFull() {
-    return globals->class_data;
-  }
-
   const Message* GetPrototype() const {
     return static_cast<const Message*>(&globals->_default);
   }
-#endif  // PROTOBUF_MESSAGE_GLOBALS
 
   ~TypeInfo() {
-    const auto& class_data = GetClassDataFull();
+    const auto& class_data = globals->class_data;
     DynamicMessage::DestroyImpl(const_cast<Message&>(*GetPrototype()));
     // With PROTOBUF_MESSAGE_GLOBALS, deleting globals means deleting
     // class_data. Access class_data beforehand.
@@ -475,14 +457,13 @@
 
 DynamicMessage::DynamicMessage(const DynamicMessageFactory::TypeInfo* type_info,
                                Arena* arena)
-    : Message(arena, type_info->GetClassDataFull().base()),
-      type_info_(type_info) {
+    : Message(arena, &type_info->globals->class_data), type_info_(type_info) {
   SharedCtor(true);
 }
 
 DynamicMessage::DynamicMessage(DynamicMessageFactory::TypeInfo* type_info,
                                bool lock_factory)
-    : Message(type_info->GetClassDataFull().base()), type_info_(type_info) {
+    : Message(&type_info->globals->class_data), type_info_(type_info) {
   // The prototype in type_info has to be set before creating the prototype
   // instance on memory. e.g., message Foo { map<int32_t, Foo> a = 1; }. When
   // creating prototype for Foo, prototype of the map entry will also be
@@ -520,9 +501,9 @@
 }
 inline void* DynamicMessage::MutableOneofFieldRaw(const FieldDescriptor* f) {
   return OffsetToPointer(
-      type_info_
-          ->offsets[type_info_->GetClassDataFull().descriptor()->field_count() +
-                    f->containing_oneof()->index()]);
+      type_info_->offsets[type_info_->globals->class_data.descriptor()
+                              ->field_count() +
+                          f->containing_oneof()->index()]);
 }
 
 void DynamicMessage::SharedCtor(bool lock_factory) {
@@ -535,7 +516,7 @@
   // in practice that's not strictly necessary for types that don't have a
   // constructor.)
 
-  const Descriptor* descriptor = type_info_->GetClassDataFull().descriptor();
+  const Descriptor* descriptor = type_info_->globals->class_data.descriptor();
   Arena* arena = GetArena();
 
   // Initialize oneof cases.
@@ -675,14 +656,14 @@
 #if defined(__cpp_lib_destroying_delete) && defined(__cpp_sized_deallocation)
 void DynamicMessage::operator delete(DynamicMessage* msg,
                                      std::destroying_delete_t) {
-  const size_t size = msg->type_info_->GetClassDataFull().allocation_size();
+  const size_t size = msg->type_info_->globals->class_data.allocation_size();
   msg->~DynamicMessage();
   ::operator delete(msg, size);
 }
 #endif
 
 DynamicMessage::~DynamicMessage() {
-  const Descriptor* descriptor = type_info_->GetClassDataFull().descriptor();
+  const Descriptor* descriptor = type_info_->globals->class_data.descriptor();
 
   _internal_metadata_.Delete<UnknownFieldSet>();
 
@@ -810,7 +791,7 @@
 void* DynamicMessage::NewImpl(const void* prototype, void* mem, Arena* arena) {
   const auto* type_info =
       static_cast<const DynamicMessage*>(prototype)->type_info_;
-  memset(mem, 0, type_info->GetClassDataFull().allocation_size());
+  memset(mem, 0, type_info->globals->class_data.allocation_size());
   return new (mem) DynamicMessage(type_info, arena);
 }
 
@@ -823,7 +804,7 @@
   ABSL_CHECK(is_prototype());
 
   DynamicMessageFactory* factory = type_info_->factory;
-  const Descriptor* descriptor = type_info_->GetClassDataFull().descriptor();
+  const Descriptor* descriptor = type_info_->globals->class_data.descriptor();
 
   // Cross-link default messages.
   for (int i = 0; i < descriptor->field_count(); i++) {
@@ -845,7 +826,7 @@
 }
 
 const internal::ClassData* DynamicMessage::GetClassData() const {
-  return type_info_->GetClassDataFull().base();
+  return &type_info_->globals->class_data;
 }
 
 // ===================================================================
@@ -888,10 +869,6 @@
   TypeInfo* type_info = new TypeInfo;
   *target = type_info;
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  type_info->MutableClassDataFull().set_descriptor(type);
-  type_info->MutableClassDataFull().is_dynamic = true;
-#endif  // !PROTOBUF_MESSAGE_GLOBALS
   type_info->pool = (pool_ == nullptr) ? type->file()->pool() : pool_;
   type_info->factory = this;
 
@@ -1025,11 +1002,6 @@
     size += kMaxOneofUnionSize;
   }
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  type_info->MutableClassDataFull().message_creator =
-      internal::MessageCreator(DynamicMessage::NewImpl, size, kSafeAlignment);
-#endif  // !PROTOBUF_MESSAGE_GLOBALS
-
   // Construct the reflection object.
 
   // Allocate the message globals object that contains the default instance.
@@ -1038,28 +1010,20 @@
   memset(globals_base, 0, globals_size);
   auto* msg_base = DynamicMessageGlobalsToDefaultInstance(globals_base);
 
-#ifdef PROTOBUF_MESSAGE_GLOBALS
-  type_info->globals = new (globals_base)
-      DynamicMessageGlobalsInternalType(internal::ClassDataFull{
-          internal::ClassData{
-              reinterpret_cast<const DynamicMessage*>(msg_base),  // prototype
-              nullptr,                                            // tc_table
-              &DynamicMessage::IsInitializedImpl,
-              &DynamicMessage::MergeImpl,
-              internal::MessageCreator(DynamicMessage::NewImpl, size,
-                                       kSafeAlignment),
-              &DynamicMessage::DestroyImpl,
-              &DynamicMessage::ClearImpl,
-              DynamicMessage::ByteSizeLongImpl,
-              DynamicMessage::_InternalSerializeImpl,
-              PROTOBUF_FIELD_OFFSET(DynamicMessage, cached_byte_size_),
-              false,
-          },
-          &type_info->reflection_data,
-      });
+  type_info->globals = new (
+      globals_base) DynamicMessageGlobalsInternalType(internal::ClassData{
+      &DynamicMessage::IsInitializedImpl,
+      &DynamicMessage::MergeImpl,
+      internal::MessageCreator(DynamicMessage::NewImpl, size, kSafeAlignment),
+      &DynamicMessage::DestroyImpl,
+      &DynamicMessage::ClearImpl,
+      DynamicMessage::ByteSizeLongImpl,
+      DynamicMessage::_InternalSerializeImpl,
+      PROTOBUF_FIELD_OFFSET(DynamicMessage, cached_byte_size_),
+      &type_info->reflection_data,
+  });
   type_info->globals->class_data.set_descriptor(type);
   type_info->globals->class_data.is_dynamic = true;
-#endif  // PROTOBUF_MESSAGE_GLOBALS
 
   // We have already locked the factory so we should not lock in the constructor
   // of dynamic message to avoid dead lock.
@@ -1072,12 +1036,12 @@
       type_info->has_bits_offset, type_info->extensions_offset,
       type_info->oneof_case_offset,
       /*object_size=*/
-      static_cast<int>(type_info->GetClassDataFull().allocation_size()),
+      static_cast<int>(type_info->globals->class_data.allocation_size()),
       /*split_offset=*/-1,
       /*sizeof_split=*/-1);
 
-  type_info->MutableClassDataFull().set_reflection(
-      new Reflection(type_info->GetClassDataFull().descriptor(), schema,
+  type_info->globals->class_data.set_reflection(
+      new Reflection(type_info->globals->class_data.descriptor(), schema,
                      type_info->pool, this));
 
   // Cross link prototypes.
diff --git a/src/google/protobuf/generated_message_reflection.cc b/src/google/protobuf/generated_message_reflection.cc
index a99ade9..3e8796f 100644
--- a/src/google/protobuf/generated_message_reflection.cc
+++ b/src/google/protobuf/generated_message_reflection.cc
@@ -3933,7 +3933,7 @@
     if (message_globals_data_[0] != nullptr) {
       auto* default_instance =
           MessageGlobalsBase::ToDefaultInstance(message_globals_data_[0]);
-      auto& class_data = internal::GetClassData(*default_instance)->full();
+      auto& class_data = *internal::GetClassData(*default_instance);
       // If there is no descriptor_table in the class data, then it is not
       // interested in receiving reflection information either.
       if (class_data.descriptor_table() != nullptr) {
diff --git a/src/google/protobuf/generated_message_tctable_lite_test.cc b/src/google/protobuf/generated_message_tctable_lite_test.cc
index 971b7af..ad68626 100644
--- a/src/google/protobuf/generated_message_tctable_lite_test.cc
+++ b/src/google/protobuf/generated_message_tctable_lite_test.cc
@@ -95,9 +95,9 @@
   constexpr uint8_t kHasBitIndex = 0;
   constexpr uint8_t kFieldOffset = 24;
 
-  const ClassData class_data(
-      nullptr, nullptr, nullptr, nullptr, MessageCreator(), nullptr, nullptr,
-      nullptr, nullptr, /*cached_size_offset=*/16, /*is_lite*/ true);
+  const ClassData class_data(nullptr, nullptr, MessageCreator(), nullptr,
+                             nullptr, nullptr, nullptr,
+                             /*cached_size_offset=*/16, "type_name");
 
   const TcParseTable<0, 1, 0, 0, 2> parse_table = {
       {
diff --git a/src/google/protobuf/implicit_weak_message.cc b/src/google/protobuf/implicit_weak_message.cc
index c757346..e2d43b6 100644
--- a/src/google/protobuf/implicit_weak_message.cc
+++ b/src/google/protobuf/implicit_weak_message.cc
@@ -44,29 +44,18 @@
   static_cast<ImplicitWeakMessage&>(msg).data_->clear();
 }
 
-constexpr auto ImplicitWeakMessage::InternalGenerateClassData_(
-    const MessageLite& prototype, const TcParseTableBase* tc_table) {
-  return ClassDataLite{
-      ClassData{
-          &prototype,
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-          &table_.header,
-#else
-          tc_table,
-#endif              // PROTOBUF_MESSAGE_GLOBALS
-          nullptr,  // is_initialized (always true)
-          MergeImpl,
-          internal::MessageCreator(NewImpl<ImplicitWeakMessage>,
-                                   sizeof(ImplicitWeakMessage),
-                                   alignof(ImplicitWeakMessage)),
-          &DestroyImpl,
-          &ClearImpl,
-          &ByteSizeLongImpl,
-          &_InternalSerializeImpl,
-          PROTOBUF_FIELD_OFFSET(ImplicitWeakMessage, cached_size_),
-          true,
-      },
-      /*type_name=*/""};
+constexpr auto ImplicitWeakMessage::InternalGenerateClassData_() {
+  return ClassData{nullptr,  // is_initialized (always true)
+                   MergeImpl,
+                   internal::MessageCreator(NewImpl<ImplicitWeakMessage>,
+                                            sizeof(ImplicitWeakMessage),
+                                            alignof(ImplicitWeakMessage)),
+                   &DestroyImpl,
+                   &ClearImpl,
+                   &ByteSizeLongImpl,
+                   &_InternalSerializeImpl,
+                   PROTOBUF_FIELD_OFFSET(ImplicitWeakMessage, cached_size_),
+                   /*type_name=*/""};
 }
 
 constexpr auto ImplicitWeakMessage::InternalGenerateParseTable_(
@@ -74,23 +63,11 @@
   return CreateStubTcParseTable<ImplicitWeakMessage, ParseImpl>(class_data);
 }
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
 struct ImplicitWeakMessageDefaultType : MessageGlobalsBase {
   constexpr ImplicitWeakMessageDefaultType()
-      : _default(ConstantInitialized{}) {}
-  ~ImplicitWeakMessageDefaultType() {}
-  union {
-    ImplicitWeakMessage _default;  // NOLINT
-  };
-};
-#else
-struct ImplicitWeakMessageDefaultType : MessageGlobalsBase {
-  constexpr ImplicitWeakMessageDefaultType()
-      : MessageGlobalsBase(ImplicitWeakMessage::InternalGenerateClassData_(
-            _default, &implicit_weak_message_globals._table.header)),
+      : MessageGlobalsBase(ImplicitWeakMessage::InternalGenerateClassData_()),
         _default(ConstantInitialized{}),
-        _table(
-            ImplicitWeakMessage::InternalGenerateParseTable_(GetClassData())) {}
+        _table(ImplicitWeakMessage::InternalGenerateParseTable_(&class_data)) {}
   ~ImplicitWeakMessageDefaultType() {}
   union {
     alignas(kMaxMessageAlignment) ImplicitWeakMessage _default;  // NOLINT
@@ -99,18 +76,9 @@
 };
 static_assert(PROTOBUF_FIELD_OFFSET(ImplicitWeakMessageDefaultType, _default) ==
               MessageGlobalsBase::OffsetToDefault());
-#endif  // PROTOBUF_MESSAGE_GLOBALS
 
 constexpr ImplicitWeakMessage::ImplicitWeakMessage(ConstantInitialized)
-    : MessageLite(
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-          class_data_.base()
-#else
-          implicit_weak_message_globals.GetClassData()
-#endif  // PROTOBUF_MESSAGE_GLOBALS
-              ),
-      data_(nullptr) {
-}
+    : MessageLite(&implicit_weak_message_globals.class_data), data_(nullptr) {}
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ImplicitWeakMessageDefaultType
     implicit_weak_message_globals;
@@ -119,21 +87,8 @@
   return implicit_weak_message_globals._default;
 }
 
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-const TcParseTable<0> ImplicitWeakMessage::table_ =
-    internal::CreateStubTcParseTable<ImplicitWeakMessage, ParseImpl>(
-        class_data_.base());
-constexpr ClassDataLite ImplicitWeakMessage::class_data_ =
-    ImplicitWeakMessage::InternalGenerateClassData_(
-        implicit_weak_message_globals._default);
-#endif  // !PROTOBUF_MESSAGE_GLOBALS
-
 const ClassData* ImplicitWeakMessage::GetClassData() const {
-#ifndef PROTOBUF_MESSAGE_GLOBALS
-  return class_data_.base();
-#else
-  return implicit_weak_message_globals.GetClassData();
-#endif  // PROTOBUF_MESSAGE_GLOBALS
+  return &implicit_weak_message_globals.class_data;
 }
 
 }  // namespace internal
diff --git a/src/google/protobuf/implicit_weak_message.h b/src/google/protobuf/implicit_weak_message.h
index c5a1aea..6555dbb 100644
--- a/src/google/protobuf/implicit_weak_message.h
+++ b/src/google/protobuf/implicit_weak_message.h
@@ -97,8 +97,7 @@
   static PROTOBUF_CC const char* ParseImpl(ImplicitWeakMessage* msg,
                                            const char* ptr, ParseContext* ctx);
 
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype, const TcParseTableBase* tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
   static constexpr auto InternalGenerateParseTable_(
       const ClassData* class_data);
 
diff --git a/src/google/protobuf/json_enumvalue_options.pb.cc b/src/google/protobuf/json_enumvalue_options.pb.cc
index 1bed36a..5d7300b 100644
--- a/src/google/protobuf/json_enumvalue_options.pb.cc
+++ b/src/google/protobuf/json_enumvalue_options.pb.cc
@@ -106,31 +106,23 @@
 constexpr auto JsonEnumValueOptions::InternalNewImpl_() {
   return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(JsonEnumValueOptions), alignof(JsonEnumValueOptions));
 }
-constexpr auto JsonEnumValueOptions::InternalGenerateClassData_(
-    const MessageLite& prototype,
-    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
-  return ::google::protobuf::internal::ClassDataFull{
-      ::google::protobuf::internal::ClassData{
-          &prototype,
-          tc_table,
-          nullptr,  // IsInitialized
-          &JsonEnumValueOptions::MergeImpl,
-          Super_::GetNewImpl<JsonEnumValueOptions>(),
+constexpr auto JsonEnumValueOptions::InternalGenerateClassData_() {
+  return ::google::protobuf::internal::ClassData{
+      nullptr,  // IsInitialized
+      &JsonEnumValueOptions::MergeImpl,
+      Super_::GetNewImpl<JsonEnumValueOptions>(),
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-          &JsonEnumValueOptions::SharedDtor,
-          &Helpers_::Clear, &Helpers_::ByteSizeLong,
-              &Helpers_::_InternalSerialize,
+      &JsonEnumValueOptions::SharedDtor,
+      &Helpers_::Clear, &Helpers_::ByteSizeLong,
+          &Helpers_::_InternalSerialize,
 #endif  // PROTOBUF_CUSTOM_VTABLE
-          PROTOBUF_FIELD_OFFSET(JsonEnumValueOptions, _impl_._cached_size_),
-          false,
-      },
+      PROTOBUF_FIELD_OFFSET(JsonEnumValueOptions, _impl_._cached_size_),
       &file_reflection_data[0],
   };
 }
 struct JsonEnumValueOptionsGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
   constexpr JsonEnumValueOptionsGlobalsTypeInternal()
-      : MessageGlobalsBase(JsonEnumValueOptions::InternalGenerateClassData_(
-            _default, &JsonEnumValueOptions_globals_._table.header)),
+      : MessageGlobalsBase(JsonEnumValueOptions::InternalGenerateClassData_()),
         _default(::_pbi::ConstantInitialized{}, GetClassData()),
         _table(::_pbi::PrivateAccess::GenerateParseTable<JsonEnumValueOptions>(
             GetClassData())) {}
@@ -208,7 +200,7 @@
 
 JsonEnumValueOptions::JsonEnumValueOptions(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JsonEnumValueOptions_globals_.GetClassData()) {
+    : Super_(arena, &JsonEnumValueOptions_globals_.class_data) {
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
 #endif  // PROTOBUF_CUSTOM_VTABLE
@@ -226,7 +218,7 @@
     ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
     const JsonEnumValueOptions& from)
 #if defined(PROTOBUF_CUSTOM_VTABLE)
-    : Super_(arena, JsonEnumValueOptions_globals_.GetClassData()) {
+    : Super_(arena, &JsonEnumValueOptions_globals_.class_data) {
 
 #else   // PROTOBUF_CUSTOM_VTABLE
     : Super_(arena) {
@@ -267,7 +259,7 @@
   ::google::protobuf::internal::PrefetchToLocalCache(&JsonEnumValueOptions_globals_);
   ::google::protobuf::internal::PrefetchToLocalCache(
       ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&JsonEnumValueOptions_globals_));
-  return JsonEnumValueOptions_globals_.GetClassData();
+  return &JsonEnumValueOptions_globals_.class_data;
 }
 #if defined(PROTOBUF_CUSTOM_VTABLE)
 PROTOBUF_NOINLINE void JsonEnumValueOptions::Helpers_::Clear(MessageLite& base) {
@@ -388,7 +380,7 @@
 }
 
 ::google::protobuf::Metadata JsonEnumValueOptions::GetMetadata() const {
-  return Super_::GetMetadataImpl(GetClassData()->full());
+  return Super_::GetMetadataImpl(JsonEnumValueOptions_globals_.class_data);
 }
 PROTOBUF_CONSTINIT PROTOBUF_EXPORT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::_pbi::ExtensionIdentifier<
diff --git a/src/google/protobuf/json_enumvalue_options.pb.h b/src/google/protobuf/json_enumvalue_options.pb.h
index 2a9f862..343b27c 100644
--- a/src/google/protobuf/json_enumvalue_options.pb.h
+++ b/src/google/protobuf/json_enumvalue_options.pb.h
@@ -215,9 +215,7 @@
   static constexpr auto InternalNewImpl_();
 
  public:
-  static constexpr auto InternalGenerateClassData_(
-      const MessageLite& prototype,
-      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);
+  static constexpr auto InternalGenerateClassData_();
 
   [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
   // nested types ----------------------------------------------------
diff --git a/src/google/protobuf/map.cc b/src/google/protobuf/map.cc
index 83a7c37..f6d3458 100644
--- a/src/google/protobuf/map.cc
+++ b/src/google/protobuf/map.cc
@@ -207,8 +207,7 @@
         [&](const MessageLite* msg) -> size_t {
           const auto* class_data = GetClassData(*msg);
           if (class_data->is_lite) return 0;
-          return class_data->full().descriptor_methods()->space_used_long(
-                     *msg) -
+          return class_data->descriptor_methods()->space_used_long(*msg) -
                  class_data->allocation_size();
         },
         [](const void*) -> size_t { return 0; }};
diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc
index 679d5bb..7e73b8e 100644
--- a/src/google/protobuf/message.cc
+++ b/src/google/protobuf/message.cc
@@ -74,7 +74,7 @@
 
 namespace {
 
-Metadata GetMetadataImpl(const internal::ClassDataFull& data) {
+Metadata GetMetadataImpl(const internal::ClassData& data) {
   auto* table = data.descriptor_table();
   // Only codegen types provide a table. DynamicMessage does not provide a table
   // and instead eagerly initializes the descriptor/reflection members.
@@ -91,7 +91,7 @@
 
 // Helper function to get type name - logic from Message::GetTypeNameImpl
 absl::string_view GetTypeNameImpl(const ClassData* data) {
-  return GetMetadataImpl(data->full()).descriptor->full_name();
+  return GetMetadataImpl(*data).descriptor->full_name();
 }
 
 // Helper function for InitializationErrorString - logic from existing static
@@ -104,7 +104,7 @@
 
 struct DescriptorMethodsFriend {
   static const TcParseTableBase* GetTcParseTable(const ClassData* data) {
-    return GetMetadataImpl(data->full()).reflection->GetTcParseTable();
+    return GetMetadataImpl(*data).reflection->GetTcParseTable();
   }
 };
 
@@ -431,10 +431,10 @@
 }
 
 Metadata Message::GetMetadata() const {
-  return GetMetadataImpl(GetClassData()->full());
+  return GetMetadataImpl(*GetClassData());
 }
 
-Metadata Message::GetMetadataImpl(const internal::ClassDataFull& data) {
+Metadata Message::GetMetadataImpl(const internal::ClassData& data) {
   return internal::GetMetadataImpl(data);
 }
 
@@ -470,7 +470,7 @@
 }
 
 size_t Message::SpaceUsedLong() const {
-  return GetClassData()->full().descriptor_methods()->space_used_long(*this);
+  return GetClassData()->descriptor_methods()->space_used_long(*this);
 }
 
 namespace internal {
diff --git a/src/google/protobuf/message.h b/src/google/protobuf/message.h
index 996902f..63b8396 100644
--- a/src/google/protobuf/message.h
+++ b/src/google/protobuf/message.h
@@ -434,7 +434,7 @@
   // Get a struct containing the metadata for the Message, which is used in turn
   // to implement GetDescriptor() and GetReflection() above.
   Metadata GetMetadata() const;
-  static Metadata GetMetadataImpl(const internal::ClassDataFull& data);
+  static Metadata GetMetadataImpl(const internal::ClassData& data);
 
   // For CODE_SIZE types
   static bool IsInitializedImpl(const MessageLite&);
diff --git a/src/google/protobuf/message_lite.cc b/src/google/protobuf/message_lite.cc
index 23f810f..f8eefa7 100644
--- a/src/google/protobuf/message_lite.cc
+++ b/src/google/protobuf/message_lite.cc
@@ -120,8 +120,7 @@
 
   if (!data->is_lite) {
     // For !LITE messages, we use the descriptor method function.
-    return data->full().descriptor_methods()->initialization_error_string(
-        *this);
+    return data->descriptor_methods()->initialization_error_string(*this);
   }
 
   return "(cannot determine missing fields for lite message)";
@@ -131,7 +130,7 @@
   auto* data = GetClassData();
   ABSL_DCHECK(data != nullptr);
   if (!data->is_lite) {
-    return data->full().descriptor_methods()->debug_string(*this);
+    return data->descriptor_methods()->debug_string(*this);
   }
 
   return absl::StrCat("MessageLite at 0x", absl::Hex(this));
diff --git a/src/google/protobuf/message_lite.h b/src/google/protobuf/message_lite.h
index 3d56700..319a214 100644
--- a/src/google/protobuf/message_lite.h
+++ b/src/google/protobuf/message_lite.h
@@ -302,15 +302,15 @@
   }
 
   static constexpr const ClassData* GetClassData(const void* globals) {
-    return static_cast<const MessageGlobalsBase*>(globals)->class_data.base();
+    return &(static_cast<const MessageGlobalsBase*>(globals)->class_data);
   }
-  constexpr const ClassData* GetClassData() const { return class_data.base(); }
+  constexpr const ClassData* GetClassData() const { return &class_data; }
 
   static const MessageGlobalsBase* FromClassData(const void* class_data) {
     return reinterpret_cast<const MessageGlobalsBase*>(class_data);
   }
 
-  explicit constexpr MessageGlobalsBase(ClassDataFull class_data)
+  explicit constexpr MessageGlobalsBase(ClassData class_data)
       : class_data(class_data) {}
 
   static const TcParseTableBase* ToParseTableBase(const void* g) {
@@ -322,8 +322,7 @@
         RoundUpTo<8, alignof(void*)>(globals->class_data.allocation_size()));
   }
 
-  // It also aliases to ClassDataLite.
-  ClassDataFull class_data;
+  ClassData class_data;
 };
 
 template <const auto* kGlobals>
@@ -355,7 +354,7 @@
   if (ABSL_PREDICT_FALSE(tc_table == nullptr)) {
 #endif
     ABSL_DCHECK(!is_lite);
-    return full().descriptor_methods()->get_tc_table(this);
+    return descriptor_methods()->get_tc_table(this);
   }
 #ifdef PROTOBUF_MESSAGE_GLOBALS
   return MessageGlobalsBase::ToParseTableBase(this);
diff --git a/src/google/protobuf/type_id.cc b/src/google/protobuf/type_id.cc
index 36be1d7..0e96ab7 100644
--- a/src/google/protobuf/type_id.cc
+++ b/src/google/protobuf/type_id.cc
@@ -9,11 +9,11 @@
 absl::string_view TypeId::name() const {
   if (!data_->is_lite) {
     // For !LITE messages, we use the descriptor method function.
-    return data_->full().descriptor_methods()->get_type_name(data_);
+    return data_->descriptor_methods()->get_type_name(data_);
   }
 
   // For LITE messages, the type name is accessed via ClassDataLite.
-  return static_cast<const internal::ClassDataLite*>(data_)->type_name();
+  return data_->type_name();
 }
 
 }  // namespace protobuf