Auto-generate files after cl/585705944
diff --git a/src/google/protobuf/api.pb.cc b/src/google/protobuf/api.pb.cc
index d783b73..d6e693a 100644
--- a/src/google/protobuf/api.pb.cc
+++ b/src/google/protobuf/api.pb.cc
@@ -600,7 +600,7 @@
     }
   }
   if (from._internal_syntax() != 0) {
-    _this->_internal_set_syntax(from._internal_syntax());
+    _this->_impl_.syntax_ = from._impl_.syntax_;
   }
   _this->_impl_._has_bits_[0] |= cached_has_bits;
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
@@ -966,13 +966,13 @@
     _this->_internal_set_response_type_url(from._internal_response_type_url());
   }
   if (from._internal_request_streaming() != 0) {
-    _this->_internal_set_request_streaming(from._internal_request_streaming());
+    _this->_impl_.request_streaming_ = from._impl_.request_streaming_;
   }
   if (from._internal_response_streaming() != 0) {
-    _this->_internal_set_response_streaming(from._internal_response_streaming());
+    _this->_impl_.response_streaming_ = from._impl_.response_streaming_;
   }
   if (from._internal_syntax() != 0) {
-    _this->_internal_set_syntax(from._internal_syntax());
+    _this->_impl_.syntax_ = from._impl_.syntax_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
diff --git a/src/google/protobuf/duration.pb.cc b/src/google/protobuf/duration.pb.cc
index 5a862c5..f89d888 100644
--- a/src/google/protobuf/duration.pb.cc
+++ b/src/google/protobuf/duration.pb.cc
@@ -293,10 +293,10 @@
   (void) cached_has_bits;
 
   if (from._internal_seconds() != 0) {
-    _this->_internal_set_seconds(from._internal_seconds());
+    _this->_impl_.seconds_ = from._impl_.seconds_;
   }
   if (from._internal_nanos() != 0) {
-    _this->_internal_set_nanos(from._internal_nanos());
+    _this->_impl_.nanos_ = from._impl_.nanos_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
diff --git a/src/google/protobuf/struct.pb.cc b/src/google/protobuf/struct.pb.cc
index 7722918..a4bd551 100644
--- a/src/google/protobuf/struct.pb.cc
+++ b/src/google/protobuf/struct.pb.cc
@@ -781,40 +781,62 @@
 void Value::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<Value*>(&to_msg);
   auto& from = static_cast<const Value&>(from_msg);
+  ::google::protobuf::Arena* arena = _this->GetArena();
   // @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.Value)
   ABSL_DCHECK_NE(&from, _this);
   ::uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
 
-  switch (from.kind_case()) {
-    case kNullValue: {
-      _this->_internal_set_null_value(from._internal_null_value());
-      break;
+  if (const uint32_t oneof_from_case = from._impl_._oneof_case_[0]) {
+    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
+    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
+    if (oneof_needs_init) {
+      if (oneof_to_case != 0) {
+        _this->clear_kind();
+      }
+      _this->_impl_._oneof_case_[0] = oneof_from_case;
     }
-    case kNumberValue: {
-      _this->_internal_set_number_value(from._internal_number_value());
-      break;
-    }
-    case kStringValue: {
-      _this->_internal_set_string_value(from._internal_string_value());
-      break;
-    }
-    case kBoolValue: {
-      _this->_internal_set_bool_value(from._internal_bool_value());
-      break;
-    }
-    case kStructValue: {
-      _this->_internal_mutable_struct_value()->::google::protobuf::Struct::MergeFrom(
-          from._internal_struct_value());
-      break;
-    }
-    case kListValue: {
-      _this->_internal_mutable_list_value()->::google::protobuf::ListValue::MergeFrom(
-          from._internal_list_value());
-      break;
-    }
-    case KIND_NOT_SET: {
-      break;
+
+    switch (oneof_from_case) {
+      case kNullValue: {
+        _this->_impl_.kind_.null_value_ = from._impl_.kind_.null_value_;
+        break;
+      }
+      case kNumberValue: {
+        _this->_impl_.kind_.number_value_ = from._impl_.kind_.number_value_;
+        break;
+      }
+      case kStringValue: {
+        if (oneof_needs_init) {
+          _this->_impl_.kind_.string_value_.InitDefault();
+        }
+        _this->_impl_.kind_.string_value_.Set(from._internal_string_value(), arena);
+        break;
+      }
+      case kBoolValue: {
+        _this->_impl_.kind_.bool_value_ = from._impl_.kind_.bool_value_;
+        break;
+      }
+      case kStructValue: {
+        if (oneof_needs_init) {
+          _this->_impl_.kind_.struct_value_ =
+              ::google::protobuf::Message::CopyConstruct<::google::protobuf::Struct>(arena, *from._impl_.kind_.struct_value_);
+        } else {
+          _this->_impl_.kind_.struct_value_->MergeFrom(from._internal_struct_value());
+        }
+        break;
+      }
+      case kListValue: {
+        if (oneof_needs_init) {
+          _this->_impl_.kind_.list_value_ =
+              ::google::protobuf::Message::CopyConstruct<::google::protobuf::ListValue>(arena, *from._impl_.kind_.list_value_);
+        } else {
+          _this->_impl_.kind_.list_value_->MergeFrom(from._internal_list_value());
+        }
+        break;
+      }
+      case KIND_NOT_SET:
+        break;
     }
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
diff --git a/src/google/protobuf/struct.pb.h b/src/google/protobuf/struct.pb.h
index a63e058..0d43b00 100644
--- a/src/google/protobuf/struct.pb.h
+++ b/src/google/protobuf/struct.pb.h
@@ -835,7 +835,11 @@
   return _internal_null_value();
 }
 inline void Value::set_null_value(::google::protobuf::NullValue value) {
-  _internal_set_null_value(value);
+  if (kind_case() != kNullValue) {
+    clear_kind();
+    set_has_null_value();
+  }
+  _impl_.kind_.null_value_ = value;
   // @@protoc_insertion_point(field_set:google.protobuf.Value.null_value)
 }
 inline ::google::protobuf::NullValue Value::_internal_null_value() const {
@@ -844,13 +848,6 @@
   }
   return static_cast<::google::protobuf::NullValue>(0);
 }
-inline void Value::_internal_set_null_value(::google::protobuf::NullValue value) {
-  if (kind_case() != kNullValue) {
-    clear_kind();
-    set_has_null_value();
-  }
-  _impl_.kind_.null_value_ = value;
-}
 
 // double number_value = 2;
 inline bool Value::has_number_value() const {
@@ -871,7 +868,11 @@
   return _internal_number_value();
 }
 inline void Value::set_number_value(double value) {
-  _internal_set_number_value(value);
+  if (kind_case() != kNumberValue) {
+    clear_kind();
+    set_has_number_value();
+  }
+  _impl_.kind_.number_value_ = value;
   // @@protoc_insertion_point(field_set:google.protobuf.Value.number_value)
 }
 inline double Value::_internal_number_value() const {
@@ -880,13 +881,6 @@
   }
   return 0;
 }
-inline void Value::_internal_set_number_value(double value) {
-  if (kind_case() != kNumberValue) {
-    clear_kind();
-    set_has_number_value();
-  }
-  _impl_.kind_.number_value_ = value;
-}
 
 // string string_value = 3;
 inline bool Value::has_string_value() const {
@@ -992,7 +986,11 @@
   return _internal_bool_value();
 }
 inline void Value::set_bool_value(bool value) {
-  _internal_set_bool_value(value);
+  if (kind_case() != kBoolValue) {
+    clear_kind();
+    set_has_bool_value();
+  }
+  _impl_.kind_.bool_value_ = value;
   // @@protoc_insertion_point(field_set:google.protobuf.Value.bool_value)
 }
 inline bool Value::_internal_bool_value() const {
@@ -1001,13 +999,6 @@
   }
   return false;
 }
-inline void Value::_internal_set_bool_value(bool value) {
-  if (kind_case() != kBoolValue) {
-    clear_kind();
-    set_has_bool_value();
-  }
-  _impl_.kind_.bool_value_ = value;
-}
 
 // .google.protobuf.Struct struct_value = 5;
 inline bool Value::has_struct_value() const {
diff --git a/src/google/protobuf/timestamp.pb.cc b/src/google/protobuf/timestamp.pb.cc
index 24fe5a7..4259fb1 100644
--- a/src/google/protobuf/timestamp.pb.cc
+++ b/src/google/protobuf/timestamp.pb.cc
@@ -293,10 +293,10 @@
   (void) cached_has_bits;
 
   if (from._internal_seconds() != 0) {
-    _this->_internal_set_seconds(from._internal_seconds());
+    _this->_impl_.seconds_ = from._impl_.seconds_;
   }
   if (from._internal_nanos() != 0) {
-    _this->_internal_set_nanos(from._internal_nanos());
+    _this->_impl_.nanos_ = from._impl_.nanos_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
diff --git a/src/google/protobuf/type.pb.cc b/src/google/protobuf/type.pb.cc
index 336f7b6..7dfed93 100644
--- a/src/google/protobuf/type.pb.cc
+++ b/src/google/protobuf/type.pb.cc
@@ -779,7 +779,7 @@
     }
   }
   if (from._internal_syntax() != 0) {
-    _this->_internal_set_syntax(from._internal_syntax());
+    _this->_impl_.syntax_ = from._impl_.syntax_;
   }
   _this->_impl_._has_bits_[0] |= cached_has_bits;
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
@@ -1213,19 +1213,19 @@
     _this->_internal_set_default_value(from._internal_default_value());
   }
   if (from._internal_kind() != 0) {
-    _this->_internal_set_kind(from._internal_kind());
+    _this->_impl_.kind_ = from._impl_.kind_;
   }
   if (from._internal_cardinality() != 0) {
-    _this->_internal_set_cardinality(from._internal_cardinality());
+    _this->_impl_.cardinality_ = from._impl_.cardinality_;
   }
   if (from._internal_number() != 0) {
-    _this->_internal_set_number(from._internal_number());
+    _this->_impl_.number_ = from._impl_.number_;
   }
   if (from._internal_oneof_index() != 0) {
-    _this->_internal_set_oneof_index(from._internal_oneof_index());
+    _this->_impl_.oneof_index_ = from._impl_.oneof_index_;
   }
   if (from._internal_packed() != 0) {
-    _this->_internal_set_packed(from._internal_packed());
+    _this->_impl_.packed_ = from._impl_.packed_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -1592,7 +1592,7 @@
     }
   }
   if (from._internal_syntax() != 0) {
-    _this->_internal_set_syntax(from._internal_syntax());
+    _this->_impl_.syntax_ = from._impl_.syntax_;
   }
   _this->_impl_._has_bits_[0] |= cached_has_bits;
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
@@ -1848,7 +1848,7 @@
     _this->_internal_set_name(from._internal_name());
   }
   if (from._internal_number() != 0) {
-    _this->_internal_set_number(from._internal_number());
+    _this->_impl_.number_ = from._impl_.number_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
diff --git a/src/google/protobuf/wrappers.pb.cc b/src/google/protobuf/wrappers.pb.cc
index 8cacb3f..14d58e9 100644
--- a/src/google/protobuf/wrappers.pb.cc
+++ b/src/google/protobuf/wrappers.pb.cc
@@ -529,7 +529,7 @@
   ::uint64_t raw_value;
   memcpy(&raw_value, &tmp_value, sizeof(tmp_value));
   if (raw_value != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -717,7 +717,7 @@
   ::uint32_t raw_value;
   memcpy(&raw_value, &tmp_value, sizeof(tmp_value));
   if (raw_value != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -891,7 +891,7 @@
   (void) cached_has_bits;
 
   if (from._internal_value() != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -1065,7 +1065,7 @@
   (void) cached_has_bits;
 
   if (from._internal_value() != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -1239,7 +1239,7 @@
   (void) cached_has_bits;
 
   if (from._internal_value() != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -1413,7 +1413,7 @@
   (void) cached_has_bits;
 
   if (from._internal_value() != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
@@ -1586,7 +1586,7 @@
   (void) cached_has_bits;
 
   if (from._internal_value() != 0) {
-    _this->_internal_set_value(from._internal_value());
+    _this->_impl_.value_ = from._impl_.value_;
   }
   _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }