From cdb362c50a59e7189059172c40a11d33c63498d6 Mon Sep 17 00:00:00 2001
From: Protobuf Team Bot <protobuf-github-bot@google.com>
Date: Mon, 19 Dec 2022 10:57:02 -0800
Subject: [PATCH] Factor out field listener annotation processing into a
 separate file.

This is part of the Printer::Emit() migration, since it allows us to drop some relatively complex logic out of ClassVars/FieldVars, which is an impediment to further migration of message.cc.

The factored-out logic is not the prettiest, but cleaning it up further will require more refactors throughout the compiler.

This CL also changes std::initializer_lists in Printer's interface into absl::Spans, which were not available when the new Printer API was designed, but which are necessary for the new API to work with Printer.

PiperOrigin-RevId: 496441433
---
 src/file_lists.cmake                         |  67 ++--
 src/google/protobuf/compiler/cpp/BUILD.bazel |  15 +-
 src/google/protobuf/compiler/cpp/field.cc    | 186 ----------
 src/google/protobuf/compiler/cpp/message.cc  | 135 ++------
 src/google/protobuf/compiler/cpp/tracker.cc  | 339 +++++++++++++++++++
 src/google/protobuf/compiler/cpp/tracker.h   |  58 ++++
 src/google/protobuf/compiler/plugin.pb.cc    |  20 --
 src/google/protobuf/descriptor.pb.cc         | 135 --------
 src/google/protobuf/descriptor.pb.h          | 153 ---------
 src/google/protobuf/io/printer.cc            |   2 +-
 src/google/protobuf/io/printer.h             |  33 +-
 11 files changed, 480 insertions(+), 663 deletions(-)
 create mode 100644 src/google/protobuf/compiler/cpp/tracker.cc
 create mode 100644 src/google/protobuf/compiler/cpp/tracker.h

diff --git a/src/file_lists.cmake b/src/file_lists.cmake
index 287344117a..e903305820 100644
--- a/src/file_lists.cmake
+++ b/src/file_lists.cmake
@@ -1,4 +1,4 @@
-# Auto-generated by @//pkg:gen_src_file_lists_cmake
+# Auto-generated by //pkg:gen_src_file_lists_cmake
 #
 # This file contains lists of sources based on Bazel rules. It should
 # be included from a hand-written CMake file that defines targets.
@@ -9,7 +9,7 @@ if(${CMAKE_VERSION} VERSION_GREATER 3.10 OR ${CMAKE_VERSION} VERSION_EQUAL 3.10)
   include_guard()
 endif()
 
-# @//pkg:protobuf
+# //pkg:protobuf
 set(libprotobuf_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.cc
@@ -85,7 +85,7 @@ set(libprotobuf_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.cc
 )
 
-# @//pkg:protobuf
+# //pkg:protobuf
 set(libprotobuf_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any.pb.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/api.pb.h
@@ -192,7 +192,7 @@ set(libprotobuf_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.h
 )
 
-# @//pkg:protobuf_lite
+# //pkg:protobuf_lite
 set(libprotobuf_lite_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any_lite.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.cc
@@ -220,7 +220,7 @@ set(libprotobuf_lite_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.cc
 )
 
-# @//pkg:protobuf_lite
+# //pkg:protobuf_lite
 set(libprotobuf_lite_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/arena.h
@@ -270,7 +270,7 @@ set(libprotobuf_lite_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_lite.h
 )
 
-# @//pkg:protoc
+# //pkg:protoc
 set(libprotoc_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.cc
@@ -289,6 +289,7 @@ set(libprotoc_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/primitive_field.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/service.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/string_field.cc
+  ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/tracker.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/csharp/csharp_enum_field.cc
@@ -365,7 +366,7 @@ set(libprotoc_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/zip_writer.cc
 )
 
-# @//pkg:protoc
+# //pkg:protoc
 set(libprotoc_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/code_generator.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface.h
@@ -468,7 +469,7 @@ set(libprotoc_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/zip_writer.h
 )
 
-# @//src/google/protobuf:well_known_type_protos
+# //src/google/protobuf:well_known_type_protos
 set(wkt_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/api.proto
@@ -482,68 +483,68 @@ set(wkt_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wrappers.proto
 )
 
-# @//src/google/protobuf:descriptor_proto
+# //src/google/protobuf:descriptor_proto
 set(descriptor_proto_proto_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto
 )
 
-# @//src/google/protobuf:descriptor_proto
+# //src/google/protobuf:descriptor_proto
 set(descriptor_proto_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto.pb.cc
 )
 
-# @//src/google/protobuf:descriptor_proto
+# //src/google/protobuf:descriptor_proto
 set(descriptor_proto_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor.proto.pb.h
 )
 
-# @//src/google/protobuf:descriptor_proto
+# //src/google/protobuf:descriptor_proto
 set(descriptor_proto_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/descriptor_proto-descriptor-set.proto.bin
 )
 
-# @//src/google/protobuf/compiler:plugin_proto
+# //src/google/protobuf/compiler:plugin_proto
 set(plugin_proto_proto_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto
 )
 
-# @//src/google/protobuf/compiler:plugin_proto
+# //src/google/protobuf/compiler:plugin_proto
 set(plugin_proto_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto.pb.cc
 )
 
-# @//src/google/protobuf/compiler:plugin_proto
+# //src/google/protobuf/compiler:plugin_proto
 set(plugin_proto_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin.proto.pb.h
 )
 
-# @//src/google/protobuf/compiler:plugin_proto
+# //src/google/protobuf/compiler:plugin_proto
 set(plugin_proto_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/plugin_proto-descriptor-set.proto.bin
 )
 
-# @//pkg:common_test
+# //pkg:common_test
 set(common_test_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/googletest.cc
 )
 
-# @//pkg:common_test
+# //pkg:common_test
 set(common_test_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/mock_code_generator.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/file.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/testing/googletest.h
 )
 
-# @//pkg:lite_test_util
+# //pkg:lite_test_util
 set(lite_test_util_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_test_util.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_test_util.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.cc
 )
 
-# @//pkg:lite_test_util
+# //pkg:lite_test_util
 set(lite_test_util_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_test_util.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_test_util.h
@@ -554,14 +555,14 @@ set(lite_test_util_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util_lite.h
 )
 
-# @//pkg:test_util
+# //pkg:test_util
 set(test_util_srcs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/reflection_tester.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/test_util.cc
 )
 
-# @//pkg:test_util
+# //pkg:test_util
 set(test_util_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/annotation_test_util.h
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/unittest.h
@@ -576,7 +577,7 @@ set(test_util_hdrs
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.inc
 )
 
-# @//src/google/protobuf:full_test_srcs
+# //src/google/protobuf:full_test_srcs
 set(protobuf_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/arena_align_test.cc
@@ -608,7 +609,7 @@ set(protobuf_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/wire_format_unittest.cc
 )
 
-# @//src/google/protobuf:test_proto_srcs
+# //src/google/protobuf:test_proto_srcs
 set(protobuf_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/any_test.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/map_proto2_unittest.proto
@@ -641,13 +642,13 @@ set(protobuf_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_well_known_types.proto
 )
 
-# @//src/google/protobuf:lite_test_srcs
+# //src/google/protobuf:lite_test_srcs
 set(protobuf_lite_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_arena_unittest.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/lite_unittest.cc
 )
 
-# @//src/google/protobuf:lite_test_proto_srcs
+# //src/google/protobuf:lite_test_proto_srcs
 set(protobuf_lite_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/map_lite_unittest.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_import_lite.proto
@@ -655,7 +656,7 @@ set(protobuf_lite_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/unittest_lite.proto
 )
 
-# @//src/google/protobuf/compiler:test_srcs
+# //src/google/protobuf/compiler:test_srcs
 set(compiler_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/command_line_interface_unittest.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/bootstrap_unittest.cc
@@ -678,18 +679,18 @@ set(compiler_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc
 )
 
-# @//src/google/protobuf/compiler:test_proto_srcs
+# //src/google/protobuf/compiler:test_proto_srcs
 set(compiler_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_bad_identifiers.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/cpp/test_large_enum_value.proto
 )
 
-# @//src/google/protobuf/compiler:test_plugin_srcs
+# //src/google/protobuf/compiler:test_plugin_srcs
 set(test_plugin_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/compiler/test_plugin.cc
 )
 
-# @//src/google/protobuf/io:test_srcs
+# //src/google/protobuf/io:test_srcs
 set(io_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/io/coded_stream_unittest.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/io/io_win32_unittest.cc
@@ -700,7 +701,7 @@ set(io_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/io/zero_copy_stream_unittest.cc
 )
 
-# @//src/google/protobuf/util:test_srcs
+# //src/google/protobuf/util:test_srcs
 set(util_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/delimited_message_util_test.cc
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/field_comparator_test.cc
@@ -710,14 +711,14 @@ set(util_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/type_resolver_util_test.cc
 )
 
-# @//src/google/protobuf/util:test_proto_srcs
+# //src/google/protobuf/util:test_proto_srcs
 set(util_test_protos_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/json_format_proto3.proto
   ${protobuf_SOURCE_DIR}/src/google/protobuf/util/message_differencer_unittest.proto
 )
 
-# @//src/google/protobuf/stubs:test_srcs
+# //src/google/protobuf/stubs:test_srcs
 set(stubs_test_files
   ${protobuf_SOURCE_DIR}/src/google/protobuf/stubs/common_unittest.cc
 )
diff --git a/src/google/protobuf/compiler/cpp/BUILD.bazel b/src/google/protobuf/compiler/cpp/BUILD.bazel
index 2f2b709cd8..c1b73a212d 100644
--- a/src/google/protobuf/compiler/cpp/BUILD.bazel
+++ b/src/google/protobuf/compiler/cpp/BUILD.bazel
@@ -15,27 +15,27 @@ cc_library(
     visibility = ["//visibility:public"],
     deps = [
         ":names_internal",
-        "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf/compiler:code_generator",
     ],
 )
 
 cc_library(
     name = "names_internal",
+    srcs = [
+        "helpers.cc",
+    ],
     hdrs = [
         "helpers.h",
         "names.h",
         "options.h",
     ],
-    srcs = [
-        "helpers.cc",
-    ],
     copts = COPTS,
     include_prefix = "google/protobuf/compiler/cpp",
     visibility = ["//pkg:__pkg__"],
     deps = [
-        "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf/compiler:code_generator",
     ],
 )
 
@@ -56,6 +56,7 @@ cc_library(
         "primitive_field.cc",
         "service.cc",
         "string_field.cc",
+        "tracker.cc",
     ],
     hdrs = [
         "enum.h",
@@ -73,6 +74,7 @@ cc_library(
         "primitive_field.h",
         "service.h",
         "string_field.h",
+        "tracker.h",
     ],
     copts = COPTS,
     include_prefix = "google/protobuf/compiler/cpp",
@@ -82,9 +84,8 @@ cc_library(
         "@io_kythe//kythe/cxx/tools:__subpackages__",
     ],
     deps = [
-        ":names_internal",
         ":names",
-        "//src/google/protobuf:protobuf_nowkt",
+        ":names_internal",
         "//src/google/protobuf/compiler:code_generator",
         "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/container:btree",
diff --git a/src/google/protobuf/compiler/cpp/field.cc b/src/google/protobuf/compiler/cpp/field.cc
index 04d0183b0f..523426b049 100644
--- a/src/google/protobuf/compiler/cpp/field.cc
+++ b/src/google/protobuf/compiler/cpp/field.cc
@@ -58,183 +58,8 @@ namespace google {
 namespace protobuf {
 namespace compiler {
 namespace cpp {
-
 using internal::WireFormat;
 
-namespace {
-
-void MaySetAnnotationVariable(
-    const Options& options, absl::string_view annotation_name,
-    absl::string_view substitute_template_prefix,
-    absl::string_view prepared_template, int field_index,
-    absl::string_view access_type,
-    absl::flat_hash_map<absl::string_view, std::string>* variables) {
-  if (options.field_listener_options.forbidden_field_listener_events.contains(
-          annotation_name))
-    return;
-  (*variables)[absl::StrCat("annotate_", annotation_name)] = absl::Substitute(
-      absl::StrCat(substitute_template_prefix, prepared_template, ");\n"),
-      field_index, access_type);
-}
-
-std::string GenerateTemplateForOneofString(const FieldDescriptor* descriptor,
-                                           absl::string_view proto_ns,
-                                           absl::string_view field_member) {
-  std::string field_name = google::protobuf::compiler::cpp::FieldName(descriptor);
-  std::string field_pointer =
-      descriptor->options().ctype() == google::protobuf::FieldOptions::STRING
-          ? "$0.UnsafeGetPointer()"
-          : "$0";
-  std::string has_field = absl::StrFormat(
-      "%s_case() == k%s", descriptor->containing_oneof()->name(),
-      UnderscoresToCamelCase(descriptor->name(), true));
-
-  if (descriptor->default_value_string().empty()) {
-    return absl::Substitute(
-        absl::StrCat(has_field, " ? ", field_pointer, ": nullptr"),
-        field_member);
-  }
-
-  if (descriptor->options().ctype() == google::protobuf::FieldOptions::STRING_PIECE) {
-    return absl::Substitute(
-        absl::StrCat(has_field, " ? ", field_pointer, ": nullptr"),
-        field_member);
-  }
-
-  std::string default_value_pointer =
-      descriptor->options().ctype() == google::protobuf::FieldOptions::STRING
-          ? "&$1.get()"
-          : "&$1";
-  return absl::Substitute(absl::StrCat(has_field, " ? ", field_pointer, " : ",
-                                       default_value_pointer),
-                          field_member, MakeDefaultFieldName(descriptor));
-}
-
-std::string GenerateTemplateForSingleString(const FieldDescriptor* descriptor,
-                                            absl::string_view field_member) {
-  if (descriptor->default_value_string().empty()) {
-    return absl::StrCat("&", field_member);
-  }
-
-  if (descriptor->options().ctype() == google::protobuf::FieldOptions::STRING) {
-    return absl::Substitute(
-        "$0.IsDefault() ? &$1.get() : $0.UnsafeGetPointer()", field_member,
-        MakeDefaultFieldName(descriptor));
-  }
-
-  return absl::StrCat("&", field_member);
-}
-
-}  // namespace
-
-void AddAccessorAnnotations(
-    const FieldDescriptor* descriptor, const Options& options,
-    absl::flat_hash_map<absl::string_view, std::string>* variables) {
-  // Can be expanded to include more specific calls, for example, for arena or
-  // clear calls.
-  static constexpr const char* kAccessorsAnnotations[] = {
-      "annotate_add",     "annotate_get",         "annotate_has",
-      "annotate_list",    "annotate_mutable",     "annotate_mutable_list",
-      "annotate_release", "annotate_set",         "annotate_size",
-      "annotate_clear",   "annotate_add_mutable",
-  };
-  for (size_t i = 0; i < ABSL_ARRAYSIZE(kAccessorsAnnotations); ++i) {
-    (*variables)[kAccessorsAnnotations[i]] = "";
-  }
-  if (options.annotate_accessor) {
-    for (size_t i = 0; i < ABSL_ARRAYSIZE(kAccessorsAnnotations); ++i) {
-      (*variables)[kAccessorsAnnotations[i]] = absl::StrCat(
-          "  ", FieldName(descriptor), "_AccessedNoStrip = true;\n");
-    }
-  }
-  if (!options.field_listener_options.inject_field_listener_events) {
-    return;
-  }
-  if (descriptor->file()->options().optimize_for() ==
-      google::protobuf::FileOptions::LITE_RUNTIME) {
-    return;
-  }
-  std::string field_member = (*variables)["field"];
-  const google::protobuf::OneofDescriptor* oneof_member =
-      descriptor->real_containing_oneof();
-  const std::string substitute_template_prefix =
-      absl::StrCat("  ", (*variables)["tracker"], ".$1<$0>(this, ");
-  std::string prepared_template;
-
-  // Flat template is needed if the prepared one is introspecting the values
-  // inside the returned values, for example, for repeated fields and maps.
-  std::string prepared_flat_template;
-  std::string prepared_add_template;
-  // TODO(b/190614678): Support fields with type Message or Map.
-  if (descriptor->is_repeated() && !descriptor->is_map()) {
-    if (descriptor->type() != FieldDescriptor::TYPE_MESSAGE &&
-        descriptor->type() != FieldDescriptor::TYPE_GROUP) {
-      prepared_template = absl::Substitute("&$0.Get(index)", field_member);
-      prepared_add_template =
-          absl::Substitute("&$0.Get($0.size() - 1)", field_member);
-    } else {
-      prepared_template = "nullptr";
-      prepared_add_template = "nullptr";
-    }
-  } else if (descriptor->is_map()) {
-    prepared_template = "nullptr";
-  } else if (descriptor->type() == FieldDescriptor::TYPE_MESSAGE &&
-             !IsExplicitLazy(descriptor)) {
-    prepared_template = "nullptr";
-  } else if (descriptor->cpp_type() == FieldDescriptor::CPPTYPE_STRING) {
-    if (oneof_member) {
-      prepared_template = GenerateTemplateForOneofString(
-          descriptor, ProtobufNamespace(options), field_member);
-    } else {
-      prepared_template =
-          GenerateTemplateForSingleString(descriptor, field_member);
-    }
-  } else {
-    prepared_template = absl::StrCat("&", field_member);
-  }
-  if (descriptor->is_repeated() && !descriptor->is_map() &&
-      descriptor->type() != FieldDescriptor::TYPE_MESSAGE &&
-      descriptor->type() != FieldDescriptor::TYPE_GROUP) {
-    prepared_flat_template = absl::StrCat("&", field_member);
-  } else {
-    prepared_flat_template = prepared_template;
-  }
-
-  MaySetAnnotationVariable(options, "get", substitute_template_prefix,
-                           prepared_template, descriptor->index(), "OnGet",
-                           variables);
-  MaySetAnnotationVariable(options, "set", substitute_template_prefix,
-                           prepared_template, descriptor->index(), "OnSet",
-                           variables);
-  MaySetAnnotationVariable(options, "has", substitute_template_prefix,
-                           prepared_template, descriptor->index(), "OnHas",
-                           variables);
-  MaySetAnnotationVariable(options, "mutable", substitute_template_prefix,
-                           prepared_template, descriptor->index(), "OnMutable",
-                           variables);
-  MaySetAnnotationVariable(options, "release", substitute_template_prefix,
-                           prepared_template, descriptor->index(), "OnRelease",
-                           variables);
-  MaySetAnnotationVariable(options, "clear", substitute_template_prefix,
-                           prepared_flat_template, descriptor->index(),
-                           "OnClear", variables);
-  MaySetAnnotationVariable(options, "size", substitute_template_prefix,
-                           prepared_flat_template, descriptor->index(),
-                           "OnSize", variables);
-  MaySetAnnotationVariable(options, "list", substitute_template_prefix,
-                           prepared_flat_template, descriptor->index(),
-                           "OnList", variables);
-  MaySetAnnotationVariable(options, "mutable_list", substitute_template_prefix,
-                           prepared_flat_template, descriptor->index(),
-                           "OnMutableList", variables);
-  MaySetAnnotationVariable(options, "add", substitute_template_prefix,
-                           prepared_add_template, descriptor->index(), "OnAdd",
-                           variables);
-  MaySetAnnotationVariable(options, "add_mutable", substitute_template_prefix,
-                           prepared_add_template, descriptor->index(),
-                           "OnAddMutable", variables);
-}
-
 absl::flat_hash_map<absl::string_view, std::string> FieldVars(
     const FieldDescriptor* desc, const Options& opts) {
   bool split = ShouldSplit(desc, opts);
@@ -262,17 +87,6 @@ absl::flat_hash_map<absl::string_view, std::string> FieldVars(
       {"}", ""},
   };
 
-  // TODO(b/245791219): Refactor AddAccessorAnnotations to avoid this
-  // workaround.
-  absl::flat_hash_map<absl::string_view, std::string> workaround = {
-      {"field", vars["field"]},
-      {"tracker", "Impl_::_tracker_"},
-  };
-  AddAccessorAnnotations(desc, opts, &workaround);
-  for (auto& pair : workaround) {
-    vars.emplace(pair);
-  }
-
   return vars;
 }
 
diff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc
index 5935860445..f641d9cba7 100644
--- a/src/google/protobuf/compiler/cpp/message.cc
+++ b/src/google/protobuf/compiler/cpp/message.cc
@@ -67,6 +67,7 @@
 #include "google/protobuf/compiler/cpp/names.h"
 #include "google/protobuf/compiler/cpp/padding_optimizer.h"
 #include "google/protobuf/compiler/cpp/parse_function_generator.h"
+#include "google/protobuf/compiler/cpp/tracker.h"
 #include "google/protobuf/descriptor.pb.h"
 #include "google/protobuf/io/printer.h"
 #include "google/protobuf/wire_format.h"
@@ -493,18 +494,6 @@ bool ColdChunkSkipper::OnEndChunk(int chunk, io::Printer* p) {
   return true;
 }
 
-void AnnotationVar(const Descriptor* desc, const Options& options,
-                   absl::flat_hash_map<absl::string_view, std::string>& vars,
-                   absl::string_view name, absl::string_view val) {
-  if (!HasTracker(desc, options) ||
-      options.field_listener_options.forbidden_field_listener_events.contains(
-          absl::StripPrefix(name, "annotate_"))) {
-    val = "";
-  }
-
-  vars.emplace(name, absl::StrCat(absl::StripAsciiWhitespace(val), "\n"));
-}
-
 absl::flat_hash_map<absl::string_view, std::string> ClassVars(
     const Descriptor* desc, Options opts) {
   absl::flat_hash_map<absl::string_view, std::string> vars = MessageVars(desc);
@@ -524,107 +513,6 @@ absl::flat_hash_map<absl::string_view, std::string> ClassVars(
     vars.emplace(pair);
   }
 
-  AnnotationVar(desc, opts, vars, "annotate_serialize", R"cc(
-    Impl_::_tracker_.OnSerialize(this);
-  )cc");
-  AnnotationVar(desc, opts, vars, "annotate_deserialize", R"cc(
-    Impl_::_tracker_.OnDeserialize(this);
-  )cc");
-  // TODO(danilak): Ideally annotate_reflection should not exist and we need
-  // to annotate all reflective calls on our own, however, as this is a cause
-  // for side effects, i.e. reading values dynamically, we want the users know
-  // that dynamic access can happen.
-  AnnotationVar(desc, opts, vars, "annotate_reflection", R"cc(
-    Impl_::_tracker_.OnGetMetadata();
-  )cc");
-  AnnotationVar(desc, opts, vars, "annotate_bytesize", R"cc(
-    Impl_::_tracker_.OnByteSize(this);
-  )cc");
-  AnnotationVar(desc, opts, vars, "annotate_mergefrom", R"cc(
-    Impl_::_tracker_.OnMergeFrom(_this, &from);
-  )cc");
-
-  static constexpr std::array<std::pair<absl::string_view, absl::string_view>,
-                              14>
-      kVarToHook = {{
-          {"annotate_extension_has", "OnHasExtension"},
-          {"annotate_extension_clear", "OnClearExtension"},
-          {"annotate_extension_repeated_size", "OnExtensionSize"},
-          {"annotate_extension_get", "OnGetExtension"},
-          {"annotate_extension_mutable", "OnMutableExtension"},
-          {"annotate_extension_set", "OnSetExtension"},
-          {"annotate_extension_release", "OnReleaseExtension"},
-          {"annotate_repeated_extension_get", "OnGetExtension"},
-          {"annotate_repeated_extension_mutable", "OnMutableExtension"},
-          {"annotate_repeated_extension_set", "OnSetExtension"},
-          {"annotate_repeated_extension_add", "OnAddExtension"},
-          {"annotate_repeated_extension_add_mutable", "OnAddMutableExtension"},
-          {"annotate_repeated_extension_list", "OnListExtension"},
-          {"annotate_repeated_extension_list_mutable",
-           "OnMutableListExtension"},
-      }};
-
-  for (const auto& annotation : kVarToHook) {
-    vars[annotation.first] = "";
-  }
-  if (!HasTracker(desc, opts)) {
-    return vars;
-  }
-
-  absl::string_view extensions = vars["extensions"];
-  for (const auto& annotation : kVarToHook) {
-    absl::string_view name = annotation.first;
-    absl::string_view call = annotation.second;
-
-    if (!absl::StrContains(name, "repeated") &&
-        !absl::StrContains(name, "size") && !absl::StrContains(name, "clear")) {
-      // Primitive fields accessors.
-      // "Has" is here as users calling "has" on a repeated field is a mistake.
-      vars[name] = std::string(absl::StripAsciiWhitespace(absl::Substitute(
-          R"cc(
-            Impl_::_tracker_.$0(this, id.number(),
-                                _proto_TypeTraits::GetPtr(
-                                    id.number(), $1, id.default_value_ref()));
-          )cc",
-          call, extensions)));
-      continue;
-    }
-
-    if (absl::StrContains(name, "repeated") &&
-        !absl::StrContains(name, "list") && !absl::StrContains(name, "size")) {
-      // Repeated index accessors.
-      std::string str_index = "index";
-      if (absl::StrContains(name, "add")) {
-        str_index = absl::StrCat(extensions, ".ExtensionSize(id.number()) - 1");
-      }
-      vars[name] = std::string(absl::StripAsciiWhitespace(absl::Substitute(
-          R"cc(
-            Impl_::_tracker_.$0(this, id.number(),
-                                _proto_TypeTraits::GetPtr(id.number(), $1, $2));
-          )cc",
-          call, extensions, str_index)));
-      continue;
-    }
-
-    if (absl::StrContains(name, "list") || absl::StrContains(name, "size")) {
-      // Repeated full accessors.
-      vars[name] = std::string(absl::StripAsciiWhitespace(absl::Substitute(
-          R"cc(
-            Impl_::_tracker_.$0(this, id.number(),
-                                _proto_TypeTraits::GetRepeatedPtr(id.number(),
-                                                                  $1));
-          )cc",
-          call, extensions)));
-      continue;
-    }
-
-    // Generic accessors such as "clear".
-    // TODO(b/190614678): Generalize clear from both repeated and non repeated
-    // calls, currently their underlying memory interfaces are very different.
-    // Or think of removing clear callback as no usages are needed and no
-    // memory exist after calling clear().
-  }
-
   return vars;
 }
 
@@ -803,6 +691,7 @@ void MessageGenerator::GenerateFieldAccessorDeclarations(io::Printer* p) {
     auto name = FieldName(field);
 
     auto v = p->WithVars(FieldVars(field, options_));
+    auto t = p->WithVars(MakeTrackerCalls(field, options_));
     p->Emit(
         {{"field_comment", FieldComment(field)},
          Sub("const_impl", !stripped ? "const;" : "const { __builtin_trap(); }")
@@ -1084,6 +973,7 @@ void MessageGenerator::GenerateFieldAccessorDeclarations(io::Printer* p) {
 
 void MessageGenerator::GenerateSingularFieldHasBits(
     const FieldDescriptor* field, io::Printer* p) {
+  auto t = p->WithVars(MakeTrackerCalls(field, options_));
   Formatter format(p);
   if (IsFieldStripped(field, options_)) {
     format(
@@ -1163,6 +1053,7 @@ void MessageGenerator::GenerateOneofHasBits(io::Printer* p) {
 void MessageGenerator::GenerateOneofMemberHasBits(const FieldDescriptor* field,
                                                   io::Printer* p) {
   auto v = p->WithVars(OneofFieldVars(field));
+  auto t = p->WithVars(MakeTrackerCalls(field, options_));
   Formatter format(p);
   if (IsFieldStripped(field, options_)) {
     if (HasHasMethod(field)) {
@@ -1202,6 +1093,7 @@ void MessageGenerator::GenerateOneofMemberHasBits(const FieldDescriptor* field,
 
 void MessageGenerator::GenerateFieldClear(const FieldDescriptor* field,
                                           bool is_inline, io::Printer* p) {
+  auto t = p->WithVars(MakeTrackerCalls(field, options_));
   Formatter format(p);
   if (IsFieldStripped(field, options_)) {
     format("void $classname$::clear_$name$() { __builtin_trap(); }\n");
@@ -1220,6 +1112,7 @@ void MessageGenerator::GenerateFieldClear(const FieldDescriptor* field,
     // Clear this field only if it is the active field in this oneof,
     // otherwise ignore
     auto v = p->WithVars(OneofFieldVars(field));
+    auto t = p->WithVars(MakeTrackerCalls(field, options_));
     format("if ($has_field$) {\n");
     format.Indent();
     field_generators_.get(field).GenerateClearingCode(p);
@@ -1254,6 +1147,7 @@ void MessageGenerator::GenerateFieldAccessorDefinitions(io::Printer* p) {
     }
 
     auto v = p->WithVars(FieldVars(field, options_));
+    auto t = p->WithVars(MakeTrackerCalls(field, options_));
     // Generate has_$name$() or $name$_size().
     if (field->is_repeated()) {
       if (IsFieldStripped(field, options_)) {
@@ -1298,6 +1192,7 @@ void MessageGenerator::GenerateFieldAccessorDefinitions(io::Printer* p) {
 
 void MessageGenerator::GenerateClassDefinition(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
 
   if (IsMapEntryMessage(descriptor_)) {
@@ -2000,6 +1895,7 @@ void MessageGenerator::GenerateClassDefinition(io::Printer* p) {
 
 void MessageGenerator::GenerateInlineMethods(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   if (IsMapEntryMessage(descriptor_)) return;
   GenerateFieldAccessorDefinitions(p);
 
@@ -2024,6 +1920,7 @@ void MessageGenerator::GenerateInlineMethods(io::Printer* p) {
 void MessageGenerator::GenerateSchema(io::Printer* p, int offset,
                                       int has_offset) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
   has_offset = !has_bit_indices_.empty() || IsMapEntryMessage(descriptor_)
                    ? offset + has_offset
@@ -2042,6 +1939,7 @@ void MessageGenerator::GenerateSchema(io::Printer* p, int offset,
 
 void MessageGenerator::GenerateClassMethods(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
   if (IsMapEntryMessage(descriptor_)) {
     format(
@@ -2111,6 +2009,7 @@ void MessageGenerator::GenerateClassMethods(io::Printer* p) {
         "  PROTOBUF_FIELD_OFFSET($classtype$, $oneof_case$);\n");
   }
   for (auto field : FieldRange(descriptor_)) {
+    auto t = p->WithVars(MakeTrackerCalls(field, options_));
     field_generators_.get(field).GenerateInternalAccessorDeclarations(p);
     if (IsFieldStripped(field, options_)) {
       continue;
@@ -2148,10 +2047,12 @@ void MessageGenerator::GenerateClassMethods(io::Printer* p) {
     if (IsFieldStripped(field, options_)) {
       continue;
     }
+
+    auto v = p->WithVars(FieldVars(field, options_));
+    auto t = p->WithVars(MakeTrackerCalls(field, options_));
     field_generators_.get(field).GenerateNonInlineAccessorDefinitions(p);
     if (IsCrossFileMaybeMap(field)) {
-      auto v1 = p->WithVars(FieldVars(field, options_));
-      auto v2 = p->WithVars(OneofFieldVars(field));
+      auto v = p->WithVars(OneofFieldVars(field));
       GenerateFieldClear(field, false, p);
     }
   }
@@ -2250,6 +2151,7 @@ void MessageGenerator::GenerateClassMethods(io::Printer* p) {
 
 std::pair<size_t, size_t> MessageGenerator::GenerateOffsets(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
 
   if (!has_bit_indices_.empty() || IsMapEntryMessage(descriptor_)) {
@@ -2498,6 +2400,7 @@ void MessageGenerator::GenerateInitDefaultSplitInstance(io::Printer* p) {
   if (!ShouldSplit(descriptor_, options_)) return;
 
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
   const char* field_sep = " ";
   const auto put_sep = [&] {
@@ -2630,6 +2533,7 @@ void MessageGenerator::GenerateArenaDestructorCode(io::Printer* p) {
 
 void MessageGenerator::GenerateConstexprConstructor(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
 
   if (IsMapEntryMessage(descriptor_) || !HasImplData(descriptor_, options_)) {
@@ -3019,6 +2923,7 @@ void MessageGenerator::GenerateStructors(io::Printer* p) {
 
 void MessageGenerator::GenerateSourceInProto2Namespace(io::Printer* p) {
   auto v = p->WithVars(ClassVars(descriptor_, options_));
+  auto t = p->WithVars(MakeTrackerCalls(descriptor_, options_));
   Formatter format(p);
   format(
       "template<> "
diff --git a/src/google/protobuf/compiler/cpp/tracker.cc b/src/google/protobuf/compiler/cpp/tracker.cc
new file mode 100644
index 0000000000..003c0cdd53
--- /dev/null
+++ b/src/google/protobuf/compiler/cpp/tracker.cc
@@ -0,0 +1,339 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2022 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "google/protobuf/compiler/cpp/tracker.h"
+
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "google/protobuf/descriptor.h"
+#include "absl/strings/str_cat.h"
+#include "absl/strings/str_format.h"
+#include "absl/strings/string_view.h"
+#include "absl/strings/substitute.h"
+#include "absl/types/optional.h"
+#include "google/protobuf/compiler/cpp/helpers.h"
+#include "google/protobuf/compiler/cpp/options.h"
+#include "google/protobuf/io/printer.h"
+
+namespace google {
+namespace protobuf {
+namespace compiler {
+namespace cpp {
+namespace {
+using Sub = ::google::protobuf::io::Printer::Sub;
+
+constexpr absl::string_view kTracker = "Impl_::_tracker_";
+constexpr absl::string_view kVarPrefix = "annotate_";
+constexpr absl::string_view kTypeTraits = "_proto_TypeTraits";
+
+struct Call {
+  Call(absl::string_view var, absl::string_view call) : var(var), call(call) {}
+  Call(absl::optional<int> field_index, absl::string_view var,
+       absl::string_view call)
+      : var(var), call(call), field_index(field_index) {}
+
+  Call This(absl::optional<absl::string_view> thiz) && {
+    this->thiz = thiz;
+    return std::move(*this);
+  }
+
+  template <typename... SubArgs>
+  Call Arg(absl::string_view format, const SubArgs&... args) && {
+    this->args.emplace_back(absl::Substitute(format, args...));
+    return std::move(*this);
+  }
+
+  Call Suppressed() && {
+    suppressed = true;
+    return std::move(*this);
+  }
+
+  absl::string_view var;
+  absl::string_view call;
+  absl::optional<int> field_index;
+  absl::optional<absl::string_view> thiz = "this";
+  std::vector<std::string> args;
+  bool suppressed = false;
+};
+
+std::vector<Sub> GenerateTrackerCalls(
+    const Options& opts, const Descriptor* message,
+    absl::optional<std::string> alt_annotation, absl::Span<const Call> calls) {
+  bool enable_tracking = HasTracker(message, opts);
+  const auto& forbidden =
+      opts.field_listener_options.forbidden_field_listener_events;
+
+  std::vector<Sub> subs;
+  for (const auto& call : calls) {
+    std::string call_str;
+    if (enable_tracking && !call.suppressed && !forbidden.contains(call.var)) {
+      absl::SubstituteAndAppend(&call_str, "$0.$1", kTracker, call.call);
+      if (call.field_index.has_value()) {
+        absl::SubstituteAndAppend(&call_str, "<$0>", *call.field_index);
+      }
+      absl::StrAppend(&call_str, "(");
+
+      absl::string_view arg_sep = "";
+      if (call.thiz.has_value()) {
+        absl::StrAppend(&call_str, *call.thiz);
+        arg_sep = ", ";
+      }
+
+      for (const auto& arg : call.args) {
+        absl::StrAppend(&call_str, arg_sep, arg);
+        arg_sep = ", ";
+      }
+
+      absl::StrAppend(&call_str, ");");
+    } else if (opts.annotate_accessor && alt_annotation.has_value()) {
+      call_str = *alt_annotation;
+    }
+
+    if (!call_str.empty()) {
+      // TODO(b/245791219): Until we migrate all of the C++ backend to use
+      // Emit(), we need to include a newline here so that the line that follows
+      // the annotation is on its own line.
+      call_str.push_back('\n');
+    }
+
+    subs.push_back(
+        Sub(absl::StrCat(kVarPrefix, call.var), call_str).WithSuffix(";"));
+  }
+
+  return subs;
+}
+}  // namespace
+
+std::vector<Sub> MakeTrackerCalls(const Descriptor* message,
+                                  const Options& opts) {
+  absl::string_view extns =
+      IsMapEntryMessage(message) ? "_extensions_" : "_impl_._extensions_";
+
+  auto primitive_extn_accessor = [extns](absl::string_view var,
+                                         absl::string_view call) {
+    return Call(var, call)
+        .Arg("id.number()")
+        .Arg("$0::GetPtr(id.number(), $1, id.default_value_ref())", kTypeTraits,
+             extns);
+  };
+
+  auto index_extn_accessor = [extns](absl::string_view var,
+                                     absl::string_view call) {
+    return Call(var, call)
+        .Arg("id.number()")
+        .Arg("$0::GetPtr(id.number(), $1, index)", kTypeTraits, extns);
+  };
+
+  auto add_extn_accessor = [extns](absl::string_view var,
+                                   absl::string_view call) {
+    return Call(var, call)
+        .Arg("id.number()")
+        .Arg("$0::GetPtr(id.number(), $1, $1.ExtensionSize(id.number()) - 1)",
+             kTypeTraits, extns);
+  };
+
+  auto list_extn_accessor = [extns](absl::string_view var,
+                                    absl::string_view call) {
+    return Call(var, call)
+        .Arg("id.number()")
+        .Arg("$0::GetRepeatedPtr(id.number(), $1)", kTypeTraits, extns);
+  };
+
+  return GenerateTrackerCalls(
+      opts, message, absl::nullopt,
+      {
+          Call("serialize", "OnSerialize"),
+          Call("deserialize", "OnDeserialize"),
+          // TODO(danilak): Ideally annotate_reflection should not exist and we
+          // need to annotate all reflective calls on our own, however, as this
+          // is a cause for side effects, i.e. reading values dynamically, we
+          // want the users know that dynamic access can happen.
+          Call("reflection", "OnGetMetadata").This(absl::nullopt),
+          Call("bytesize", "OnByteSize"),
+          Call("mergefrom", "OnMergeFrom").This("_this").Arg("&from"),
+
+          // "Has" is here as users calling "has" on a repeated field is a
+          // mistake.
+          primitive_extn_accessor("extension_has", "OnHasExtension"),
+          primitive_extn_accessor("extension_get", "OnGetExtension"),
+          primitive_extn_accessor("extension_mutable", "OnMutableExtension"),
+          primitive_extn_accessor("extension_set", "OnSetExtension"),
+          primitive_extn_accessor("extension_release", "OnReleaseExtension"),
+
+          index_extn_accessor("repeated_extension_get", "OnGetExtension"),
+          index_extn_accessor("repeated_extension_mutable",
+                              "OnMutableExtension"),
+          index_extn_accessor("repeated_extension_set", "OnSetExtension"),
+
+          add_extn_accessor("repeated_extension_add", "OnAddExtension"),
+          add_extn_accessor("repeated_extension_add_mutable",
+                            "OnAddMutableExtension"),
+
+          list_extn_accessor("extension_repeated_size", "OnExtensionSize"),
+          list_extn_accessor("repeated_extension_list", "OnListExtension"),
+          list_extn_accessor("repeated_extension_list_mutable",
+                             "OnMutableListExtension"),
+
+          // Generic accessors such as "clear".
+          // TODO(b/190614678): Generalize clear from both repeated and non
+          // repeated calls, currently their underlying memory interfaces are
+          // very different. Or think of removing clear callback as no usages
+          // are needed and no memory exist
+          Call("extension_clear", "OnClearExtension").Suppressed(),
+      });
+}
+
+namespace {
+struct Getters {
+  std::string base = "nullptr";
+  std::string for_last = "nullptr";
+  std::string for_flat = "nullptr";
+};
+
+Getters RepeatedFieldGetters(const FieldDescriptor* field,
+                             const Options& opts) {
+  std::string member = FieldMemberName(field, ShouldSplit(field, opts));
+
+  Getters getters;
+  if (!field->is_map() &&
+      field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) {
+    getters.base = absl::Substitute("&$0.Get(index)", member);
+    getters.for_last = absl::Substitute("&$0.Get($0.size() - 1)", member);
+    getters.for_flat = absl::StrCat("&", member);
+  }
+
+  return getters;
+}
+
+Getters StringFieldGetters(const FieldDescriptor* field, const Options& opts) {
+  std::string member = FieldMemberName(field, ShouldSplit(field, opts));
+  bool is_std_string = field->options().ctype() == FieldOptions::STRING;
+
+  Getters getters;
+  if (is_std_string && !field->default_value_string().empty()) {
+    getters.base =
+        absl::Substitute("$0.IsDefault() ? &$1.get() : $0.UnsafeGetPointer()",
+                         member, MakeDefaultFieldName(field));
+  } else {
+    getters.base = absl::StrCat("&", member);
+  }
+
+  getters.for_flat = getters.base;
+  return getters;
+}
+
+Getters StringOneofGetters(const FieldDescriptor* field,
+                           const OneofDescriptor* oneof, const Options& opts) {
+  GOOGLE_ABSL_CHECK(oneof != nullptr);
+
+  std::string member = FieldMemberName(field, ShouldSplit(field, opts));
+  bool is_std_string = field->options().ctype() == FieldOptions::STRING;
+
+  std::string field_ptr = member;
+  if (is_std_string) {
+    field_ptr = absl::Substitute("$0.UnsafeGetPointer()", member);
+  }
+
+  std::string has =
+      absl::Substitute("$0_case() == k$1", oneof->name(),
+                       UnderscoresToCamelCase(field->name(), true));
+
+  std::string default_field = MakeDefaultFieldName(field);
+  if (is_std_string) {
+    absl::StrAppend(&default_field, ".get()");
+  }
+
+  Getters getters;
+  if (field->default_value_string().empty() ||
+      field->options().ctype() == FieldOptions::STRING_PIECE) {
+    getters.base = absl::Substitute("$0 ? $1 : nullptr", has, field_ptr);
+  } else {
+    getters.base =
+        absl::Substitute("$0 ? $1 : &$2", has, field_ptr, default_field);
+  }
+
+  getters.for_flat = getters.base;
+  return getters;
+}
+
+Getters SingularFieldGetters(const FieldDescriptor* field,
+                             const Options& opts) {
+  std::string member = FieldMemberName(field, ShouldSplit(field, opts));
+
+  Getters getters;
+  getters.base = absl::StrCat("&", member);
+  if (field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) {
+    getters.for_flat = absl::StrCat("&", member);
+  }
+  return getters;
+}
+}  // namespace
+
+std::vector<Sub> MakeTrackerCalls(const FieldDescriptor* field,
+                                  const Options& opts) {
+  Getters getters;
+  if (field->is_repeated()) {
+    getters = RepeatedFieldGetters(field, opts);
+  } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_STRING) {
+    const auto* oneof = field->real_containing_oneof();
+    if (oneof != nullptr) {
+      getters = StringOneofGetters(field, oneof, opts);
+    } else {
+      getters = StringFieldGetters(field, opts);
+    }
+  } else if (field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE ||
+             IsExplicitLazy(field)) {
+    getters = SingularFieldGetters(field, opts);
+  }
+
+  auto index = field->index();
+  return GenerateTrackerCalls(
+      opts, field->containing_type(),
+      absl::Substitute("$0_AccessedNoStrip = true;", FieldName(field)),
+      {
+          Call(index, "get", "OnGet").Arg(getters.base),
+          Call(index, "set", "OnSet").Arg(getters.base),
+          Call(index, "has", "OnHas").Arg(getters.base),
+          Call(index, "mutable", "OnMutable").Arg(getters.base),
+          Call(index, "release", "OnRelease").Arg(getters.base),
+          Call(index, "clear", "OnClear").Arg(getters.for_flat),
+          Call(index, "size", "OnSize").Arg(getters.for_flat),
+          Call(index, "list", "OnList").Arg(getters.for_flat),
+          Call(index, "mutable_list", "OnMutableList").Arg(getters.for_flat),
+          Call(index, "add", "OnAdd").Arg(getters.for_last),
+          Call(index, "add_mutable", "OnAddMutable").Arg(getters.for_last),
+      });
+}
+}  // namespace cpp
+}  // namespace compiler
+}  // namespace protobuf
+}  // namespace google
diff --git a/src/google/protobuf/compiler/cpp/tracker.h b/src/google/protobuf/compiler/cpp/tracker.h
new file mode 100644
index 0000000000..9f00495291
--- /dev/null
+++ b/src/google/protobuf/compiler/cpp/tracker.h
@@ -0,0 +1,58 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2022 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_TRACKER_H__
+#define GOOGLE_PROTOBUF_COMPILER_CPP_TRACKER_H__
+
+#include <vector>
+
+#include "google/protobuf/descriptor.h"
+#include "google/protobuf/compiler/cpp/options.h"
+#include "google/protobuf/io/printer.h"
+
+namespace google {
+namespace protobuf {
+namespace compiler {
+namespace cpp {
+
+// Generates printer substitutions for message-level tracker callbacks.
+std::vector<google::protobuf::io::Printer::Sub> MakeTrackerCalls(
+    const google::protobuf::Descriptor* message, const Options& opts);
+
+// Generates printer substitutions for field-specific tracker callbacks.
+std::vector<google::protobuf::io::Printer::Sub> MakeTrackerCalls(
+    const google::protobuf::FieldDescriptor* field, const Options& opts);
+
+}  // namespace cpp
+}  // namespace compiler
+}  // namespace protobuf
+}  // namespace google
+
+#endif  // GOOGLE_PROTOBUF_COMPILER_CPP_TRACKER_H__
diff --git a/src/google/protobuf/compiler/plugin.pb.cc b/src/google/protobuf/compiler/plugin.pb.cc
index 81826dbee5..0acc9ffb26 100644
--- a/src/google/protobuf/compiler/plugin.pb.cc
+++ b/src/google/protobuf/compiler/plugin.pb.cc
@@ -371,7 +371,6 @@ void Version::Clear() {
 }
 
 const char* Version::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -447,7 +446,6 @@ failure:
 
 ::uint8_t* Version::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.compiler.Version)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -490,7 +488,6 @@ failure:
 }
 
 ::size_t Version::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.compiler.Version)
   ::size_t total_size = 0;
 
@@ -536,7 +533,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Version::GetClassData() const
 void Version::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<Version*>(&to_msg);
   auto& from = static_cast<const Version&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.compiler.Version)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -591,7 +587,6 @@ void Version::InternalSwap(Version* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata Version::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_getter, &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fcompiler_2fplugin_2eproto[0]);
@@ -710,7 +705,6 @@ void CodeGeneratorRequest::Clear() {
 }
 
 const char* CodeGeneratorRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -797,7 +791,6 @@ failure:
 
 ::uint8_t* CodeGeneratorRequest::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.compiler.CodeGeneratorRequest)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -847,7 +840,6 @@ failure:
 }
 
 ::size_t CodeGeneratorRequest::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.compiler.CodeGeneratorRequest)
   ::size_t total_size = 0;
 
@@ -900,7 +892,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*CodeGeneratorRequest::GetClass
 void CodeGeneratorRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<CodeGeneratorRequest*>(&to_msg);
   auto& from = static_cast<const CodeGeneratorRequest&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.compiler.CodeGeneratorRequest)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -950,7 +941,6 @@ void CodeGeneratorRequest::InternalSwap(CodeGeneratorRequest* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata CodeGeneratorRequest::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_getter, &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fcompiler_2fplugin_2eproto[1]);
@@ -1104,7 +1094,6 @@ void CodeGeneratorResponse_File::Clear() {
 }
 
 const char* CodeGeneratorResponse_File::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -1185,7 +1174,6 @@ failure:
 
 ::uint8_t* CodeGeneratorResponse_File::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.compiler.CodeGeneratorResponse.File)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -1237,7 +1225,6 @@ failure:
 }
 
 ::size_t CodeGeneratorResponse_File::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.compiler.CodeGeneratorResponse.File)
   ::size_t total_size = 0;
 
@@ -1289,7 +1276,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*CodeGeneratorResponse_File::Ge
 void CodeGeneratorResponse_File::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<CodeGeneratorResponse_File*>(&to_msg);
   auto& from = static_cast<const CodeGeneratorResponse_File&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.compiler.CodeGeneratorResponse.File)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -1347,7 +1333,6 @@ void CodeGeneratorResponse_File::InternalSwap(CodeGeneratorResponse_File* other)
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata CodeGeneratorResponse_File::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_getter, &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fcompiler_2fplugin_2eproto[2]);
@@ -1446,7 +1431,6 @@ void CodeGeneratorResponse::Clear() {
 }
 
 const char* CodeGeneratorResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -1516,7 +1500,6 @@ failure:
 
 ::uint8_t* CodeGeneratorResponse::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.compiler.CodeGeneratorResponse)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -1555,7 +1538,6 @@ failure:
 }
 
 ::size_t CodeGeneratorResponse::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.compiler.CodeGeneratorResponse)
   ::size_t total_size = 0;
 
@@ -1598,7 +1580,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*CodeGeneratorResponse::GetClas
 void CodeGeneratorResponse::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<CodeGeneratorResponse*>(&to_msg);
   auto& from = static_cast<const CodeGeneratorResponse&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.compiler.CodeGeneratorResponse)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -1644,7 +1625,6 @@ void CodeGeneratorResponse::InternalSwap(CodeGeneratorResponse* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata CodeGeneratorResponse::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_getter, &descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fcompiler_2fplugin_2eproto[3]);
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 7d22e7ff58..35ab4b9857 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -1546,7 +1546,6 @@ void FileDescriptorSet::Clear() {
 }
 
 const char* FileDescriptorSet::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     ::uint32_t tag;
@@ -1591,7 +1590,6 @@ failure:
 
 ::uint8_t* FileDescriptorSet::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorSet)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -1613,7 +1611,6 @@ failure:
 }
 
 ::size_t FileDescriptorSet::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorSet)
   ::size_t total_size = 0;
 
@@ -1641,7 +1638,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FileDescriptorSet::GetClassDat
 void FileDescriptorSet::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<FileDescriptorSet*>(&to_msg);
   auto& from = static_cast<const FileDescriptorSet&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorSet)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -1671,7 +1667,6 @@ void FileDescriptorSet::InternalSwap(FileDescriptorSet* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata FileDescriptorSet::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[0]);
@@ -1888,7 +1883,6 @@ void FileDescriptorProto::Clear() {
 }
 
 const char* FileDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -2099,7 +2093,6 @@ failure:
 
 ::uint8_t* FileDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -2222,7 +2215,6 @@ failure:
 }
 
 ::size_t FileDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorProto)
   ::size_t total_size = 0;
 
@@ -2342,7 +2334,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FileDescriptorProto::GetClassD
 void FileDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<FileDescriptorProto*>(&to_msg);
   auto& from = static_cast<const FileDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -2441,7 +2432,6 @@ void FileDescriptorProto::InternalSwap(FileDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata FileDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[1]);
@@ -2544,7 +2534,6 @@ void DescriptorProto_ExtensionRange::Clear() {
 }
 
 const char* DescriptorProto_ExtensionRange::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -2606,7 +2595,6 @@ failure:
 
 ::uint8_t* DescriptorProto_ExtensionRange::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ExtensionRange)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -2640,7 +2628,6 @@ failure:
 }
 
 ::size_t DescriptorProto_ExtensionRange::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ExtensionRange)
   ::size_t total_size = 0;
 
@@ -2681,7 +2668,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DescriptorProto_ExtensionRange
 void DescriptorProto_ExtensionRange::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<DescriptorProto_ExtensionRange*>(&to_msg);
   auto& from = static_cast<const DescriptorProto_ExtensionRange&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ExtensionRange)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -2731,7 +2717,6 @@ void DescriptorProto_ExtensionRange::InternalSwap(DescriptorProto_ExtensionRange
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata DescriptorProto_ExtensionRange::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[2]);
@@ -2807,7 +2792,6 @@ void DescriptorProto_ReservedRange::Clear() {
 }
 
 const char* DescriptorProto_ReservedRange::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -2860,7 +2844,6 @@ failure:
 
 ::uint8_t* DescriptorProto_ReservedRange::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ReservedRange)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -2887,7 +2870,6 @@ failure:
 }
 
 ::size_t DescriptorProto_ReservedRange::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ReservedRange)
   ::size_t total_size = 0;
 
@@ -2921,7 +2903,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DescriptorProto_ReservedRange:
 void DescriptorProto_ReservedRange::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<DescriptorProto_ReservedRange*>(&to_msg);
   auto& from = static_cast<const DescriptorProto_ReservedRange&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ReservedRange)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -2964,7 +2945,6 @@ void DescriptorProto_ReservedRange::InternalSwap(DescriptorProto_ReservedRange*
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata DescriptorProto_ReservedRange::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[3]);
@@ -3104,7 +3084,6 @@ void DescriptorProto::Clear() {
 }
 
 const char* DescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -3275,7 +3254,6 @@ failure:
 
 ::uint8_t* DescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -3373,7 +3351,6 @@ failure:
 }
 
 ::size_t DescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto)
   ::size_t total_size = 0;
 
@@ -3468,7 +3445,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DescriptorProto::GetClassData(
 void DescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<DescriptorProto*>(&to_msg);
   auto& from = static_cast<const DescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -3543,7 +3519,6 @@ void DescriptorProto::InternalSwap(DescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata DescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[4]);
@@ -3612,7 +3587,6 @@ void ExtensionRangeOptions::Clear() {
 }
 
 const char* ExtensionRangeOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     ::uint32_t tag;
@@ -3662,7 +3636,6 @@ failure:
 
 ::uint8_t* ExtensionRangeOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ExtensionRangeOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -3688,7 +3661,6 @@ failure:
 }
 
 ::size_t ExtensionRangeOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ExtensionRangeOptions)
   ::size_t total_size = 0;
 
@@ -3718,7 +3690,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ExtensionRangeOptions::GetClas
 void ExtensionRangeOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<ExtensionRangeOptions*>(&to_msg);
   auto& from = static_cast<const ExtensionRangeOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ExtensionRangeOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -3754,7 +3725,6 @@ void ExtensionRangeOptions::InternalSwap(ExtensionRangeOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata ExtensionRangeOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[5]);
@@ -3984,7 +3954,6 @@ void FieldDescriptorProto::Clear() {
 }
 
 const char* FieldDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -4149,7 +4118,6 @@ failure:
 
 ::uint8_t* FieldDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -4253,7 +4221,6 @@ failure:
 }
 
 ::size_t FieldDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldDescriptorProto)
   ::size_t total_size = 0;
 
@@ -4348,7 +4315,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FieldDescriptorProto::GetClass
 void FieldDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<FieldDescriptorProto*>(&to_msg);
   auto& from = static_cast<const FieldDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -4447,7 +4413,6 @@ void FieldDescriptorProto::InternalSwap(FieldDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata FieldDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[6]);
@@ -4555,7 +4520,6 @@ void OneofDescriptorProto::Clear() {
 }
 
 const char* OneofDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -4610,7 +4574,6 @@ failure:
 
 ::uint8_t* OneofDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -4642,7 +4605,6 @@ failure:
 }
 
 ::size_t OneofDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofDescriptorProto)
   ::size_t total_size = 0;
 
@@ -4680,7 +4642,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*OneofDescriptorProto::GetClass
 void OneofDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<OneofDescriptorProto*>(&to_msg);
   auto& from = static_cast<const OneofDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -4727,7 +4688,6 @@ void OneofDescriptorProto::InternalSwap(OneofDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata OneofDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[7]);
@@ -4803,7 +4763,6 @@ void EnumDescriptorProto_EnumReservedRange::Clear() {
 }
 
 const char* EnumDescriptorProto_EnumReservedRange::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -4856,7 +4815,6 @@ failure:
 
 ::uint8_t* EnumDescriptorProto_EnumReservedRange::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -4883,7 +4841,6 @@ failure:
 }
 
 ::size_t EnumDescriptorProto_EnumReservedRange::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
   ::size_t total_size = 0;
 
@@ -4917,7 +4874,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EnumDescriptorProto_EnumReserv
 void EnumDescriptorProto_EnumReservedRange::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<EnumDescriptorProto_EnumReservedRange*>(&to_msg);
   auto& from = static_cast<const EnumDescriptorProto_EnumReservedRange&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -4960,7 +4916,6 @@ void EnumDescriptorProto_EnumReservedRange::InternalSwap(EnumDescriptorProto_Enu
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata EnumDescriptorProto_EnumReservedRange::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[8]);
@@ -5080,7 +5035,6 @@ void EnumDescriptorProto::Clear() {
 }
 
 const char* EnumDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -5181,7 +5135,6 @@ failure:
 
 ::uint8_t* EnumDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -5239,7 +5192,6 @@ failure:
 }
 
 ::size_t EnumDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto)
   ::size_t total_size = 0;
 
@@ -5299,7 +5251,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EnumDescriptorProto::GetClassD
 void EnumDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<EnumDescriptorProto*>(&to_msg);
   auto& from = static_cast<const EnumDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -5354,7 +5305,6 @@ void EnumDescriptorProto::InternalSwap(EnumDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata EnumDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[9]);
@@ -5469,7 +5419,6 @@ void EnumValueDescriptorProto::Clear() {
 }
 
 const char* EnumValueDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -5534,7 +5483,6 @@ failure:
 
 ::uint8_t* EnumValueDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -5572,7 +5520,6 @@ failure:
 }
 
 ::size_t EnumValueDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueDescriptorProto)
   ::size_t total_size = 0;
 
@@ -5615,7 +5562,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EnumValueDescriptorProto::GetC
 void EnumValueDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<EnumValueDescriptorProto*>(&to_msg);
   auto& from = static_cast<const EnumValueDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -5671,7 +5617,6 @@ void EnumValueDescriptorProto::InternalSwap(EnumValueDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata EnumValueDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[10]);
@@ -5783,7 +5728,6 @@ void ServiceDescriptorProto::Clear() {
 }
 
 const char* ServiceDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -5852,7 +5796,6 @@ failure:
 
 ::uint8_t* ServiceDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -5892,7 +5835,6 @@ failure:
 }
 
 ::size_t ServiceDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceDescriptorProto)
   ::size_t total_size = 0;
 
@@ -5937,7 +5879,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ServiceDescriptorProto::GetCla
 void ServiceDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<ServiceDescriptorProto*>(&to_msg);
   auto& from = static_cast<const ServiceDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -5988,7 +5929,6 @@ void ServiceDescriptorProto::InternalSwap(ServiceDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata ServiceDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[11]);
@@ -6154,7 +6094,6 @@ void MethodDescriptorProto::Clear() {
 }
 
 const char* MethodDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -6255,7 +6194,6 @@ failure:
 
 ::uint8_t* MethodDescriptorProto::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodDescriptorProto)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -6319,7 +6257,6 @@ failure:
 }
 
 ::size_t MethodDescriptorProto::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodDescriptorProto)
   ::size_t total_size = 0;
 
@@ -6381,7 +6318,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MethodDescriptorProto::GetClas
 void MethodDescriptorProto::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<MethodDescriptorProto*>(&to_msg);
   auto& from = static_cast<const MethodDescriptorProto&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodDescriptorProto)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -6454,7 +6390,6 @@ void MethodDescriptorProto::InternalSwap(MethodDescriptorProto* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata MethodDescriptorProto::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[12]);
@@ -6809,7 +6744,6 @@ void FileOptions::Clear() {
 }
 
 const char* FileOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -7095,7 +7029,6 @@ failure:
 
 ::uint8_t* FileOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7283,7 +7216,6 @@ failure:
 }
 
 ::size_t FileOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileOptions)
   ::size_t total_size = 0;
 
@@ -7441,7 +7373,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FileOptions::GetClassData() co
 void FileOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<FileOptions*>(&to_msg);
   auto& from = static_cast<const FileOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -7595,7 +7526,6 @@ void FileOptions::InternalSwap(FileOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata FileOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[13]);
@@ -7704,7 +7634,6 @@ void MessageOptions::Clear() {
 }
 
 const char* MessageOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -7806,7 +7735,6 @@ failure:
 
 ::uint8_t* MessageOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MessageOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7863,7 +7791,6 @@ failure:
 }
 
 ::size_t MessageOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MessageOptions)
   ::size_t total_size = 0;
 
@@ -7921,7 +7848,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MessageOptions::GetClassData()
 void MessageOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<MessageOptions*>(&to_msg);
   auto& from = static_cast<const MessageOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MessageOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -7983,7 +7909,6 @@ void MessageOptions::InternalSwap(MessageOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata MessageOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[14]);
@@ -8107,7 +8032,6 @@ void FieldOptions::Clear() {
 }
 
 const char* FieldOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -8247,7 +8171,6 @@ failure:
 
 ::uint8_t* FieldOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -8324,7 +8247,6 @@ failure:
 }
 
 ::size_t FieldOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldOptions)
   ::size_t total_size = 0;
 
@@ -8399,7 +8321,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FieldOptions::GetClassData() c
 void FieldOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<FieldOptions*>(&to_msg);
   auto& from = static_cast<const FieldOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -8470,7 +8391,6 @@ void FieldOptions::InternalSwap(FieldOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata FieldOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[15]);
@@ -8539,7 +8459,6 @@ void OneofOptions::Clear() {
 }
 
 const char* OneofOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     ::uint32_t tag;
@@ -8589,7 +8508,6 @@ failure:
 
 ::uint8_t* OneofOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -8615,7 +8533,6 @@ failure:
 }
 
 ::size_t OneofOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofOptions)
   ::size_t total_size = 0;
 
@@ -8645,7 +8562,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*OneofOptions::GetClassData() c
 void OneofOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<OneofOptions*>(&to_msg);
   auto& from = static_cast<const OneofOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -8681,7 +8597,6 @@ void OneofOptions::InternalSwap(OneofOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata OneofOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[16]);
@@ -8777,7 +8692,6 @@ void EnumOptions::Clear() {
 }
 
 const char* EnumOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -8859,7 +8773,6 @@ failure:
 
 ::uint8_t* EnumOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -8904,7 +8817,6 @@ failure:
 }
 
 ::size_t EnumOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumOptions)
   ::size_t total_size = 0;
 
@@ -8952,7 +8864,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EnumOptions::GetClassData() co
 void EnumOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<EnumOptions*>(&to_msg);
   auto& from = static_cast<const EnumOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -9008,7 +8919,6 @@ void EnumOptions::InternalSwap(EnumOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata EnumOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[17]);
@@ -9090,7 +9000,6 @@ void EnumValueOptions::Clear() {
 }
 
 const char* EnumValueOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -9152,7 +9061,6 @@ failure:
 
 ::uint8_t* EnumValueOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -9185,7 +9093,6 @@ failure:
 }
 
 ::size_t EnumValueOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueOptions)
   ::size_t total_size = 0;
 
@@ -9221,7 +9128,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EnumValueOptions::GetClassData
 void EnumValueOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<EnumValueOptions*>(&to_msg);
   auto& from = static_cast<const EnumValueOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -9262,7 +9168,6 @@ void EnumValueOptions::InternalSwap(EnumValueOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata EnumValueOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[18]);
@@ -9344,7 +9249,6 @@ void ServiceOptions::Clear() {
 }
 
 const char* ServiceOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -9406,7 +9310,6 @@ failure:
 
 ::uint8_t* ServiceOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -9439,7 +9342,6 @@ failure:
 }
 
 ::size_t ServiceOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceOptions)
   ::size_t total_size = 0;
 
@@ -9475,7 +9377,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ServiceOptions::GetClassData()
 void ServiceOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<ServiceOptions*>(&to_msg);
   auto& from = static_cast<const ServiceOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -9516,7 +9417,6 @@ void ServiceOptions::InternalSwap(ServiceOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata ServiceOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[19]);
@@ -9610,7 +9510,6 @@ void MethodOptions::Clear() {
 }
 
 const char* MethodOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -9686,7 +9585,6 @@ failure:
 
 ::uint8_t* MethodOptions::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodOptions)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -9726,7 +9624,6 @@ failure:
 }
 
 ::size_t MethodOptions::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodOptions)
   ::size_t total_size = 0;
 
@@ -9770,7 +9667,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MethodOptions::GetClassData()
 void MethodOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<MethodOptions*>(&to_msg);
   auto& from = static_cast<const MethodOptions&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodOptions)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -9823,7 +9719,6 @@ void MethodOptions::InternalSwap(MethodOptions* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata MethodOptions::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[20]);
@@ -9921,7 +9816,6 @@ void UninterpretedOption_NamePart::Clear() {
 }
 
 const char* UninterpretedOption_NamePart::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -9977,7 +9871,6 @@ failure:
 
 ::uint8_t* UninterpretedOption_NamePart::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption.NamePart)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -10026,7 +9919,6 @@ failure:
   return total_size;
 }
 ::size_t UninterpretedOption_NamePart::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption.NamePart)
   ::size_t total_size = 0;
 
@@ -10059,7 +9951,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*UninterpretedOption_NamePart::
 void UninterpretedOption_NamePart::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<UninterpretedOption_NamePart*>(&to_msg);
   auto& from = static_cast<const UninterpretedOption_NamePart&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption.NamePart)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -10104,7 +9995,6 @@ void UninterpretedOption_NamePart::InternalSwap(UninterpretedOption_NamePart* ot
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata UninterpretedOption_NamePart::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[21]);
@@ -10263,7 +10153,6 @@ void UninterpretedOption::Clear() {
 }
 
 const char* UninterpretedOption::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -10376,7 +10265,6 @@ failure:
 
 ::uint8_t* UninterpretedOption::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -10443,7 +10331,6 @@ failure:
 }
 
 ::size_t UninterpretedOption::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption)
   ::size_t total_size = 0;
 
@@ -10510,7 +10397,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*UninterpretedOption::GetClassD
 void UninterpretedOption::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<UninterpretedOption*>(&to_msg);
   auto& from = static_cast<const UninterpretedOption&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -10583,7 +10469,6 @@ void UninterpretedOption::InternalSwap(UninterpretedOption* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata UninterpretedOption::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[22]);
@@ -10710,7 +10595,6 @@ void SourceCodeInfo_Location::Clear() {
 }
 
 const char* SourceCodeInfo_Location::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -10811,7 +10695,6 @@ failure:
 
 ::uint8_t* SourceCodeInfo_Location::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo.Location)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -10874,7 +10757,6 @@ failure:
 }
 
 ::size_t SourceCodeInfo_Location::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo.Location)
   ::size_t total_size = 0;
 
@@ -10946,7 +10828,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SourceCodeInfo_Location::GetCl
 void SourceCodeInfo_Location::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<SourceCodeInfo_Location*>(&to_msg);
   auto& from = static_cast<const SourceCodeInfo_Location&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo.Location)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -10998,7 +10879,6 @@ void SourceCodeInfo_Location::InternalSwap(SourceCodeInfo_Location* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata SourceCodeInfo_Location::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[23]);
@@ -11062,7 +10942,6 @@ void SourceCodeInfo::Clear() {
 }
 
 const char* SourceCodeInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     ::uint32_t tag;
@@ -11107,7 +10986,6 @@ failure:
 
 ::uint8_t* SourceCodeInfo::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -11129,7 +11007,6 @@ failure:
 }
 
 ::size_t SourceCodeInfo::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo)
   ::size_t total_size = 0;
 
@@ -11157,7 +11034,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SourceCodeInfo::GetClassData()
 void SourceCodeInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<SourceCodeInfo*>(&to_msg);
   auto& from = static_cast<const SourceCodeInfo&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -11185,7 +11061,6 @@ void SourceCodeInfo::InternalSwap(SourceCodeInfo* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata SourceCodeInfo::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[24]);
@@ -11302,7 +11177,6 @@ void GeneratedCodeInfo_Annotation::Clear() {
 }
 
 const char* GeneratedCodeInfo_Annotation::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   _Internal::HasBits has_bits{};
   while (!ctx->Done(&ptr)) {
@@ -11394,7 +11268,6 @@ failure:
 
 ::uint8_t* GeneratedCodeInfo_Annotation::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo.Annotation)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -11447,7 +11320,6 @@ failure:
 }
 
 ::size_t GeneratedCodeInfo_Annotation::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo.Annotation)
   ::size_t total_size = 0;
 
@@ -11507,7 +11379,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GeneratedCodeInfo_Annotation::
 void GeneratedCodeInfo_Annotation::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<GeneratedCodeInfo_Annotation*>(&to_msg);
   auto& from = static_cast<const GeneratedCodeInfo_Annotation&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -11564,7 +11435,6 @@ void GeneratedCodeInfo_Annotation::InternalSwap(GeneratedCodeInfo_Annotation* ot
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata GeneratedCodeInfo_Annotation::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[25]);
@@ -11628,7 +11498,6 @@ void GeneratedCodeInfo::Clear() {
 }
 
 const char* GeneratedCodeInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
-
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     ::uint32_t tag;
@@ -11673,7 +11542,6 @@ failure:
 
 ::uint8_t* GeneratedCodeInfo::_InternalSerialize(
     ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-
   // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo)
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -11695,7 +11563,6 @@ failure:
 }
 
 ::size_t GeneratedCodeInfo::ByteSizeLong() const {
-
 // @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo)
   ::size_t total_size = 0;
 
@@ -11723,7 +11590,6 @@ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GeneratedCodeInfo::GetClassDat
 void GeneratedCodeInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
   auto* const _this = static_cast<GeneratedCodeInfo*>(&to_msg);
   auto& from = static_cast<const GeneratedCodeInfo&>(from_msg);
-
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo)
   GOOGLE_ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
@@ -11751,7 +11617,6 @@ void GeneratedCodeInfo::InternalSwap(GeneratedCodeInfo* other) {
 }
 
 ::PROTOBUF_NAMESPACE_ID::Metadata GeneratedCodeInfo::GetMetadata() const {
-
   return ::_pbi::AssignDescriptors(
       &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_google_2fprotobuf_2fdescriptor_2eproto_once,
       file_level_metadata_google_2fprotobuf_2fdescriptor_2eproto[26]);
diff --git a/src/google/protobuf/descriptor.pb.h b/src/google/protobuf/descriptor.pb.h
index 445985d01d..5edf01cbad 100644
--- a/src/google/protobuf/descriptor.pb.h
+++ b/src/google/protobuf/descriptor.pb.h
@@ -1811,7 +1811,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -1821,7 +1820,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -1829,7 +1827,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -1838,7 +1835,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -1847,7 +1843,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -1858,7 +1853,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -1869,7 +1863,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -1879,7 +1872,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -1888,7 +1880,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -1897,7 +1888,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -1908,7 +1898,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -1918,7 +1907,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -1929,7 +1917,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -1939,7 +1926,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -1951,7 +1937,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -1960,7 +1945,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -1970,7 +1954,6 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ExtensionRangeOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -3958,7 +3941,6 @@ class PROTOBUF_EXPORT FileOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -3968,7 +3950,6 @@ class PROTOBUF_EXPORT FileOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -3976,7 +3957,6 @@ class PROTOBUF_EXPORT FileOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -3985,7 +3965,6 @@ class PROTOBUF_EXPORT FileOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -3994,7 +3973,6 @@ class PROTOBUF_EXPORT FileOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -4005,7 +3983,6 @@ class PROTOBUF_EXPORT FileOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4016,7 +3993,6 @@ class PROTOBUF_EXPORT FileOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4026,7 +4002,6 @@ class PROTOBUF_EXPORT FileOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4035,7 +4010,6 @@ class PROTOBUF_EXPORT FileOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4044,7 +4018,6 @@ class PROTOBUF_EXPORT FileOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -4055,7 +4028,6 @@ class PROTOBUF_EXPORT FileOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -4065,7 +4037,6 @@ class PROTOBUF_EXPORT FileOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -4076,7 +4047,6 @@ class PROTOBUF_EXPORT FileOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4086,7 +4056,6 @@ class PROTOBUF_EXPORT FileOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -4098,7 +4067,6 @@ class PROTOBUF_EXPORT FileOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4107,7 +4075,6 @@ class PROTOBUF_EXPORT FileOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -4117,7 +4084,6 @@ class PROTOBUF_EXPORT FileOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FileOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -4361,7 +4327,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -4371,7 +4336,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4379,7 +4343,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -4388,7 +4351,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -4397,7 +4359,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -4408,7 +4369,6 @@ class PROTOBUF_EXPORT MessageOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4419,7 +4379,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4429,7 +4388,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4438,7 +4396,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4447,7 +4404,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -4458,7 +4414,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -4468,7 +4423,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -4479,7 +4433,6 @@ class PROTOBUF_EXPORT MessageOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4489,7 +4442,6 @@ class PROTOBUF_EXPORT MessageOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -4501,7 +4453,6 @@ class PROTOBUF_EXPORT MessageOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4510,7 +4461,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -4520,7 +4470,6 @@ class PROTOBUF_EXPORT MessageOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MessageOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -4821,7 +4770,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -4831,7 +4779,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4839,7 +4786,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -4848,7 +4794,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -4857,7 +4802,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -4868,7 +4812,6 @@ class PROTOBUF_EXPORT FieldOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4879,7 +4822,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4889,7 +4831,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -4898,7 +4839,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4907,7 +4847,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -4918,7 +4857,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -4928,7 +4866,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -4939,7 +4876,6 @@ class PROTOBUF_EXPORT FieldOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4949,7 +4885,6 @@ class PROTOBUF_EXPORT FieldOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -4961,7 +4896,6 @@ class PROTOBUF_EXPORT FieldOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -4970,7 +4904,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -4980,7 +4913,6 @@ class PROTOBUF_EXPORT FieldOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<FieldOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -5162,7 +5094,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -5172,7 +5103,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5180,7 +5110,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -5189,7 +5118,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -5198,7 +5126,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -5209,7 +5136,6 @@ class PROTOBUF_EXPORT OneofOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5220,7 +5146,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5230,7 +5155,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5239,7 +5163,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5248,7 +5171,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -5259,7 +5181,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -5269,7 +5190,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -5280,7 +5200,6 @@ class PROTOBUF_EXPORT OneofOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5290,7 +5209,6 @@ class PROTOBUF_EXPORT OneofOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -5302,7 +5220,6 @@ class PROTOBUF_EXPORT OneofOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5311,7 +5228,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -5321,7 +5237,6 @@ class PROTOBUF_EXPORT OneofOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<OneofOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -5524,7 +5439,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -5534,7 +5448,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5542,7 +5455,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -5551,7 +5463,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -5560,7 +5471,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -5571,7 +5481,6 @@ class PROTOBUF_EXPORT EnumOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5582,7 +5491,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5592,7 +5500,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5601,7 +5508,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5610,7 +5516,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -5621,7 +5526,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -5631,7 +5535,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -5642,7 +5545,6 @@ class PROTOBUF_EXPORT EnumOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5652,7 +5554,6 @@ class PROTOBUF_EXPORT EnumOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -5664,7 +5565,6 @@ class PROTOBUF_EXPORT EnumOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5673,7 +5573,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -5683,7 +5582,6 @@ class PROTOBUF_EXPORT EnumOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -5870,7 +5768,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -5880,7 +5777,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5888,7 +5784,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -5897,7 +5792,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -5906,7 +5800,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -5917,7 +5810,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5928,7 +5820,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5938,7 +5829,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -5947,7 +5837,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5956,7 +5845,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -5967,7 +5855,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -5977,7 +5864,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -5988,7 +5874,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -5998,7 +5883,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -6010,7 +5894,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6019,7 +5902,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -6029,7 +5911,6 @@ class PROTOBUF_EXPORT EnumValueOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<EnumValueOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -6214,7 +6095,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -6224,7 +6104,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6232,7 +6111,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -6241,7 +6119,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -6250,7 +6127,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -6261,7 +6137,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6272,7 +6147,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -6282,7 +6156,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -6291,7 +6164,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6300,7 +6172,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -6311,7 +6182,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -6321,7 +6191,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -6332,7 +6201,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6342,7 +6210,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -6354,7 +6221,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6363,7 +6229,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -6373,7 +6238,6 @@ class PROTOBUF_EXPORT ServiceOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<ServiceOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
@@ -6589,7 +6453,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   inline bool HasExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.Has(id.number());
   }
 
@@ -6599,7 +6462,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
     _impl_._extensions_.ClearExtension(id.number());
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6607,7 +6469,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   inline int ExtensionSize(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _impl_._extensions_.ExtensionSize(id.number());
   }
 
@@ -6616,7 +6477,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, id.default_value());
   }
 
@@ -6625,7 +6485,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), _field_type, &_impl_._extensions_);
   }
 
@@ -6636,7 +6495,6 @@ class PROTOBUF_EXPORT MethodOptions final :
                                        _field_type, _is_packed>& id,
       typename _proto_TypeTraits::Singular::ConstType value) {
     _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6647,7 +6505,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                     &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -6657,7 +6514,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       typename _proto_TypeTraits::Singular::MutableType value) {
     _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                                value, &_impl_._extensions_);
-    ;
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
             bool _is_packed>
@@ -6666,7 +6522,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       ReleaseExtension(
           const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                            _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::Release(id.number(), _field_type, &_impl_._extensions_);
   }
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6675,7 +6530,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   UnsafeArenaReleaseExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                  &_impl_._extensions_);
   }
@@ -6686,7 +6540,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) const {
-    ;
     return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
   }
 
@@ -6696,7 +6549,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id,
       int index) {
-    ;
     return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
   }
 
@@ -6707,7 +6559,6 @@ class PROTOBUF_EXPORT MethodOptions final :
                                        _field_type, _is_packed>& id,
       int index, typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6717,7 +6568,6 @@ class PROTOBUF_EXPORT MethodOptions final :
                                        _field_type, _is_packed>& id) {
     typename _proto_TypeTraits::Repeated::MutableType to_add =
         _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-    ;
     return to_add;
   }
 
@@ -6729,7 +6579,6 @@ class PROTOBUF_EXPORT MethodOptions final :
       typename _proto_TypeTraits::Repeated::ConstType value) {
     _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                            &_impl_._extensions_);
-    ;
   }
 
   template <typename _proto_TypeTraits, ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
@@ -6738,7 +6587,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   GetRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) const {
-    ;
     return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
   }
 
@@ -6748,7 +6596,6 @@ class PROTOBUF_EXPORT MethodOptions final :
   MutableRepeatedExtension(
       const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<MethodOptions, _proto_TypeTraits,
                                        _field_type, _is_packed>& id) {
-    ;
     return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                               _is_packed, &_impl_._extensions_);
   }
diff --git a/src/google/protobuf/io/printer.cc b/src/google/protobuf/io/printer.cc
index 5ec2fafdb0..f6171f8707 100644
--- a/src/google/protobuf/io/printer.cc
+++ b/src/google/protobuf/io/printer.cc
@@ -325,7 +325,7 @@ void Printer::Outdent() {
   indent_ -= options_.spaces_per_indent;
 }
 
-void Printer::Emit(std::initializer_list<Sub> vars, absl::string_view format,
+void Printer::Emit(absl::Span<const Sub> vars, absl::string_view format,
                    SourceLocation loc) {
   PrintOptions opts;
   opts.strip_raw_string_indentation = true;
diff --git a/src/google/protobuf/io/printer.h b/src/google/protobuf/io/printer.h
index db692bc09d..119c35aea5 100644
--- a/src/google/protobuf/io/printer.h
+++ b/src/google/protobuf/io/printer.h
@@ -499,13 +499,17 @@ class PROTOBUF_EXPORT Printer {
   //
   // Returns an RAII object that pops the lookup frame.
   template <typename Map = absl::flat_hash_map<std::string, std::string>,
-            typename = std::enable_if_t<!std::is_pointer<Map>::value>>
+            typename = std::enable_if_t<!std::is_pointer<Map>::value>,
+            // Prefer the more specific span impl if this could be turned into
+            // a span.
+            typename = std::enable_if_t<
+                !std::is_convertible<Map, absl::Span<const Sub>>::value>>
   auto WithVars(Map&& vars);
 
   // Pushes a new variable lookup frame that stores `vars` by value.
   //
   // Returns an RAII object that pops the lookup frame.
-  auto WithVars(std::initializer_list<Sub> vars);
+  auto WithVars(absl::Span<const Sub> vars);
 
   // Looks up a variable set with WithVars().
   //
@@ -551,7 +555,7 @@ class PROTOBUF_EXPORT Printer {
   // documentation for more details.
   //
   // `format` MUST be a string constant.
-  void Emit(std::initializer_list<Sub> vars, absl::string_view format,
+  void Emit(absl::Span<const Sub> vars, absl::string_view format,
             SourceLocation loc = SourceLocation::current());
 
   // Write a string directly to the underlying output, performing no formatting
@@ -694,7 +698,7 @@ class PROTOBUF_EXPORT Printer {
   void PrintCodegenTrace(absl::optional<SourceLocation> loc);
 
   // The core implementation for "fully-elaborated" variable definitions.
-  auto WithDefs(std::initializer_list<Sub> vars, bool allow_callbacks);
+  auto WithDefs(absl::Span<const Sub> vars, bool allow_callbacks);
 
   // Returns the start and end of the value that was substituted in place of
   // the variable `varname` in the last call to PrintImpl() (with
@@ -915,6 +919,15 @@ class Printer::Sub {
     return std::move(*this);
   }
 
+  absl::string_view key() const { return key_; }
+
+  absl::string_view value() const {
+    const auto* str = value_.AsString();
+    GOOGLE_ABSL_CHECK(str != nullptr)
+        << "could not find " << key() << "; found callback instead";
+    return *str;
+  }
+
  private:
   friend class Printer;
 
@@ -936,7 +949,7 @@ auto Printer::WithVars(const Map* vars) {
   return absl::MakeCleanup([this] { var_lookups_.pop_back(); });
 }
 
-template <typename Map, typename /*Sfinae*/>
+template <typename Map, typename, typename /*Sfinae*/>
 auto Printer::WithVars(Map&& vars) {
   var_lookups_.emplace_back(
       [vars = std::forward<Map>(vars)](
@@ -977,12 +990,6 @@ auto Printer::WithAnnotations(Map&& vars) {
   return absl::MakeCleanup([this] { annotation_lookups_.pop_back(); });
 }
 
-// In GCC older than GCC 9, this code (which constructs an empty
-// std::initializer_list<Sub>) incorrectly fails to compile if it does not
-// follow the definition of the type Sub; this is the only reason it is
-// out-of-line.
-//
-// See https://godbolt.org/z/e4KnM3PE7.
 inline void Printer::Emit(absl::string_view format, SourceLocation loc) {
   Emit({}, format, loc);
 }
@@ -1037,7 +1044,7 @@ void Printer::FormatInternal(absl::Span<const std::string> args,
   PrintImpl(format, args, opts);
 }
 
-inline auto Printer::WithDefs(std::initializer_list<Sub> vars,
+inline auto Printer::WithDefs(absl::Span<const Sub> vars,
                               bool allow_callbacks) {
   absl::flat_hash_map<std::string, Value> var_map;
   var_map.reserve(vars.size());
@@ -1086,7 +1093,7 @@ inline auto Printer::WithDefs(std::initializer_list<Sub> vars,
   });
 }
 
-inline auto Printer::WithVars(std::initializer_list<Sub> vars) {
+inline auto Printer::WithVars(absl::Span<const Sub> vars) {
   return WithDefs(vars, /*allow_callbacks=*/false);
 }
 }  // namespace io