diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Advice.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Advice.java
index f6971ca3c1..96c1227c32 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Advice.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Advice.java
@@ -89,6 +89,8 @@ private Advice(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java
index 053bf695be..82d9c1f806 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java
@@ -134,6 +134,8 @@ private AuthProvider(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java
index 9f7637bd90..6c8e9433a4 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java
@@ -98,6 +98,8 @@ private AuthRequirement(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Authentication.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Authentication.java
index 6fb274547d..0cf0d1563c 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Authentication.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Authentication.java
@@ -118,6 +118,8 @@ private Authentication(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java
index 7c4d9499ba..1e5e4ee37a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java
@@ -126,6 +126,8 @@ private AuthenticationRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Backend.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Backend.java
index 7877728b0c..0bb926e71b 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Backend.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Backend.java
@@ -91,6 +91,8 @@ private Backend(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/BackendRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/BackendRule.java
index 78cb9c1291..d8fbed9f0a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/BackendRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/BackendRule.java
@@ -118,8 +118,8 @@ private BackendRule(
             }
           case 64:
             {
-              authenticationCase_ = 8;
               authentication_ = input.readBool();
+              authenticationCase_ = 8;
               break;
             }
           case 74:
@@ -140,6 +140,8 @@ private BackendRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -836,13 +838,13 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 2, address_);
     }
-    if (deadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(deadline_) != 0) {
       output.writeDouble(3, deadline_);
     }
-    if (minDeadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(minDeadline_) != 0) {
       output.writeDouble(4, minDeadline_);
     }
-    if (operationDeadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(operationDeadline_) != 0) {
       output.writeDouble(5, operationDeadline_);
     }
     if (pathTranslation_
@@ -873,13 +875,13 @@ public int getSerializedSize() {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(address_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, address_);
     }
-    if (deadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(deadline_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(3, deadline_);
     }
-    if (minDeadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(minDeadline_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(4, minDeadline_);
     }
-    if (operationDeadline_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(operationDeadline_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(5, operationDeadline_);
     }
     if (pathTranslation_
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Billing.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Billing.java
index f15b332429..d4a132178d 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Billing.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Billing.java
@@ -122,6 +122,8 @@ private Billing(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -315,6 +317,8 @@ private BillingDestination(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java
index 1529cd7d20..d66ae47ca2 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java
@@ -127,6 +127,8 @@ private ConfigChange(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Context.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Context.java
index cc643c69f9..2bff949c98 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Context.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Context.java
@@ -118,6 +118,8 @@ private Context(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ContextRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ContextRule.java
index 4f783a81d4..dfdcc8b573 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ContextRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ContextRule.java
@@ -134,6 +134,8 @@ private ContextRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Control.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Control.java
index 56c807a71b..98ca22418b 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Control.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Control.java
@@ -90,6 +90,8 @@ private Control(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java
index 6bd34a4748..5c0158d4c5 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java
@@ -96,6 +96,8 @@ private CustomHttpPattern(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Distribution.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Distribution.java
index bf71f1b0a5..ad6ecb8140 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Distribution.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Distribution.java
@@ -174,6 +174,8 @@ private Distribution(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -303,6 +305,8 @@ private Range(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -376,10 +380,10 @@ public final boolean isInitialized() {
 
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-      if (min_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(min_) != 0) {
         output.writeDouble(1, min_);
       }
-      if (max_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(max_) != 0) {
         output.writeDouble(2, max_);
       }
       unknownFields.writeTo(output);
@@ -391,10 +395,10 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (min_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(min_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, min_);
       }
-      if (max_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(max_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, max_);
       }
       size += unknownFields.getSerializedSize();
@@ -1098,6 +1102,8 @@ private BucketOptions(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -1247,6 +1253,8 @@ private Linear(
           }
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           throw e.setUnfinishedMessage(this);
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(e)
               .setUnfinishedMessage(this);
@@ -1342,10 +1350,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
         if (numFiniteBuckets_ != 0) {
           output.writeInt32(1, numFiniteBuckets_);
         }
-        if (width_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(width_) != 0) {
           output.writeDouble(2, width_);
         }
-        if (offset_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(offset_) != 0) {
           output.writeDouble(3, offset_);
         }
         unknownFields.writeTo(output);
@@ -1360,10 +1368,10 @@ public int getSerializedSize() {
         if (numFiniteBuckets_ != 0) {
           size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, numFiniteBuckets_);
         }
-        if (width_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(width_) != 0) {
           size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, width_);
         }
-        if (offset_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(offset_) != 0) {
           size += com.google.protobuf.CodedOutputStream.computeDoubleSize(3, offset_);
         }
         size += unknownFields.getSerializedSize();
@@ -2024,6 +2032,8 @@ private Exponential(
           }
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           throw e.setUnfinishedMessage(this);
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(e)
               .setUnfinishedMessage(this);
@@ -2119,10 +2129,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
         if (numFiniteBuckets_ != 0) {
           output.writeInt32(1, numFiniteBuckets_);
         }
-        if (growthFactor_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(growthFactor_) != 0) {
           output.writeDouble(2, growthFactor_);
         }
-        if (scale_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(scale_) != 0) {
           output.writeDouble(3, scale_);
         }
         unknownFields.writeTo(output);
@@ -2137,10 +2147,10 @@ public int getSerializedSize() {
         if (numFiniteBuckets_ != 0) {
           size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, numFiniteBuckets_);
         }
-        if (growthFactor_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(growthFactor_) != 0) {
           size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, growthFactor_);
         }
-        if (scale_ != 0D) {
+        if (java.lang.Double.doubleToRawLongBits(scale_) != 0) {
           size += com.google.protobuf.CodedOutputStream.computeDoubleSize(3, scale_);
         }
         size += unknownFields.getSerializedSize();
@@ -2813,6 +2823,8 @@ private Explicit(
           }
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
           throw e.setUnfinishedMessage(this);
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
         } catch (java.io.IOException e) {
           throw new com.google.protobuf.InvalidProtocolBufferException(e)
               .setUnfinishedMessage(this);
@@ -4172,8 +4184,9 @@ public Builder mergeLinearBuckets(com.google.api.Distribution.BucketOptions.Line
         } else {
           if (optionsCase_ == 1) {
             linearBucketsBuilder_.mergeFrom(value);
+          } else {
+            linearBucketsBuilder_.setMessage(value);
           }
-          linearBucketsBuilder_.setMessage(value);
         }
         optionsCase_ = 1;
         return this;
@@ -4384,8 +4397,9 @@ public Builder mergeExponentialBuckets(
         } else {
           if (optionsCase_ == 2) {
             exponentialBucketsBuilder_.mergeFrom(value);
+          } else {
+            exponentialBucketsBuilder_.setMessage(value);
           }
-          exponentialBucketsBuilder_.setMessage(value);
         }
         optionsCase_ = 2;
         return this;
@@ -4597,8 +4611,9 @@ public Builder mergeExplicitBuckets(
         } else {
           if (optionsCase_ == 3) {
             explicitBucketsBuilder_.mergeFrom(value);
+          } else {
+            explicitBucketsBuilder_.setMessage(value);
           }
-          explicitBucketsBuilder_.setMessage(value);
         }
         optionsCase_ = 3;
         return this;
@@ -4981,6 +4996,8 @@ private Exemplar(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -5185,7 +5202,7 @@ public final boolean isInitialized() {
 
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-      if (value_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
         output.writeDouble(1, value_);
       }
       if (timestamp_ != null) {
@@ -5203,7 +5220,7 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (value_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, value_);
       }
       if (timestamp_ != null) {
@@ -6666,10 +6683,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (count_ != 0L) {
       output.writeInt64(1, count_);
     }
-    if (mean_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(mean_) != 0) {
       output.writeDouble(2, mean_);
     }
-    if (sumOfSquaredDeviation_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(sumOfSquaredDeviation_) != 0) {
       output.writeDouble(3, sumOfSquaredDeviation_);
     }
     if (range_ != null) {
@@ -6700,10 +6717,10 @@ public int getSerializedSize() {
     if (count_ != 0L) {
       size += com.google.protobuf.CodedOutputStream.computeInt64Size(1, count_);
     }
-    if (mean_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(mean_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, mean_);
     }
-    if (sumOfSquaredDeviation_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(sumOfSquaredDeviation_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(3, sumOfSquaredDeviation_);
     }
     if (range_ != null) {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Documentation.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Documentation.java
index 9e8f156407..3a3472debc 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Documentation.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Documentation.java
@@ -183,6 +183,8 @@ private Documentation(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java
index 4e2091e60f..0d8ea9f911 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java
@@ -104,6 +104,8 @@ private DocumentationRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Endpoint.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Endpoint.java
index 50832fdbd4..8098b595ba 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Endpoint.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Endpoint.java
@@ -126,6 +126,8 @@ private Endpoint(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -213,6 +215,7 @@ public com.google.protobuf.ByteString getNameBytes() {
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @return A list containing the aliases.
    */
   @java.lang.Deprecated
@@ -232,6 +235,7 @@ public com.google.protobuf.ProtocolStringList getAliasesList() {
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @return The count of aliases.
    */
   @java.lang.Deprecated
@@ -251,6 +255,7 @@ public int getAliasesCount() {
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @param index The index of the element to return.
    * @return The aliases at the given index.
    */
@@ -271,6 +276,7 @@ public java.lang.String getAliases(int index) {
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @param index The index of the value to return.
    * @return The bytes of the aliases at the given index.
    */
@@ -876,6 +882,7 @@ private void ensureAliasesIsMutable() {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @return A list containing the aliases.
      */
     @java.lang.Deprecated
@@ -895,6 +902,7 @@ public com.google.protobuf.ProtocolStringList getAliasesList() {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @return The count of aliases.
      */
     @java.lang.Deprecated
@@ -914,6 +922,7 @@ public int getAliasesCount() {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param index The index of the element to return.
      * @return The aliases at the given index.
      */
@@ -934,6 +943,7 @@ public java.lang.String getAliases(int index) {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param index The index of the value to return.
      * @return The bytes of the aliases at the given index.
      */
@@ -954,6 +964,7 @@ public com.google.protobuf.ByteString getAliasesBytes(int index) {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param index The index to set the value at.
      * @param value The aliases to set.
      * @return This builder for chaining.
@@ -981,6 +992,7 @@ public Builder setAliases(int index, java.lang.String value) {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param value The aliases to add.
      * @return This builder for chaining.
      */
@@ -1007,6 +1019,7 @@ public Builder addAliases(java.lang.String value) {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param values The aliases to add.
      * @return This builder for chaining.
      */
@@ -1030,6 +1043,7 @@ public Builder addAllAliases(java.lang.Iterable<java.lang.String> values) {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @return This builder for chaining.
      */
     @java.lang.Deprecated
@@ -1052,6 +1066,7 @@ public Builder clearAliases() {
      *
      * <code>repeated string aliases = 2 [deprecated = true];</code>
      *
+     * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
      * @param value The bytes of the aliases to add.
      * @return This builder for chaining.
      */
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java
index 8ca3e63ae8..45c0022eb8 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java
@@ -61,6 +61,7 @@ public interface EndpointOrBuilder
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @return A list containing the aliases.
    */
   @java.lang.Deprecated
@@ -78,6 +79,7 @@ public interface EndpointOrBuilder
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @return The count of aliases.
    */
   @java.lang.Deprecated
@@ -95,6 +97,7 @@ public interface EndpointOrBuilder
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @param index The index of the element to return.
    * @return The aliases at the given index.
    */
@@ -113,6 +116,7 @@ public interface EndpointOrBuilder
    *
    * <code>repeated string aliases = 2 [deprecated = true];</code>
    *
+   * @deprecated google.api.Endpoint.aliases is deprecated. See google/api/endpoint.proto;l=51
    * @param index The index of the value to return.
    * @return The bytes of the aliases at the given index.
    */
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Http.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Http.java
index f5335d19c6..44346f3e79 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Http.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Http.java
@@ -98,6 +98,8 @@ private Http(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBody.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBody.java
index 91b0371d4b..5ed516cb53 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBody.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBody.java
@@ -135,6 +135,8 @@ private HttpBody(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpRule.java
index 596483e8ba..822d04045a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpRule.java
@@ -387,6 +387,8 @@ private HttpRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -2834,8 +2836,9 @@ public Builder mergeCustom(com.google.api.CustomHttpPattern value) {
       } else {
         if (patternCase_ == 8) {
           customBuilder_.mergeFrom(value);
+        } else {
+          customBuilder_.setMessage(value);
         }
-        customBuilder_.setMessage(value);
       }
       patternCase_ = 8;
       return this;
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java
index 177d6dd935..ab1866fe3f 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java
@@ -102,6 +102,8 @@ private JwtLocation(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java
index 3302ec3049..701cc46b48 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java
@@ -104,6 +104,8 @@ private LabelDescriptor(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java
index 9e14ec0781..9ef4aaeb73 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java
@@ -122,6 +122,8 @@ private LogDescriptor(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Logging.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Logging.java
index 1d812d1668..f0db6f0eda 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Logging.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Logging.java
@@ -133,6 +133,8 @@ private Logging(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -337,6 +339,8 @@ private LoggingDestination(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Metric.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Metric.java
index f5809cebfc..5c1bffb549 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Metric.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Metric.java
@@ -103,6 +103,8 @@ private Metric(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -222,7 +224,7 @@ public int getLabelsCount() {
   @java.lang.Override
   public boolean containsLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLabels().getMap().containsKey(key);
   }
@@ -259,7 +261,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
   @java.lang.Override
   public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -277,7 +279,7 @@ public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.Strin
   @java.lang.Override
   public java.lang.String getLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     if (!map.containsKey(key)) {
@@ -789,7 +791,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -827,7 +829,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -845,7 +847,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -870,7 +872,7 @@ public Builder clearLabels() {
      */
     public Builder removeLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLabels().getMutableMap().remove(key);
       return this;
@@ -892,11 +894,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
      */
     public Builder putLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableLabels().getMutableMap().put(key, value);
       return this;
     }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java
index dce2537727..d881471b55 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java
@@ -186,6 +186,8 @@ private MetricDescriptor(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -664,6 +666,8 @@ public interface MetricDescriptorMetadataOrBuilder
      *
      * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
      *
+     * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is deprecated.
+     *     See google/api/metric.proto;l=36
      * @return The enum numeric value on the wire for launchStage.
      */
     @java.lang.Deprecated
@@ -677,6 +681,8 @@ public interface MetricDescriptorMetadataOrBuilder
      *
      * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
      *
+     * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is deprecated.
+     *     See google/api/metric.proto;l=36
      * @return The launchStage.
      */
     @java.lang.Deprecated
@@ -867,6 +873,8 @@ private MetricDescriptorMetadata(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -901,6 +909,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      *
      * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
      *
+     * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is deprecated.
+     *     See google/api/metric.proto;l=36
      * @return The enum numeric value on the wire for launchStage.
      */
     @java.lang.Override
@@ -917,6 +927,8 @@ public int getLaunchStageValue() {
      *
      * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
      *
+     * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is deprecated.
+     *     See google/api/metric.proto;l=36
      * @return The launchStage.
      */
     @java.lang.Override
@@ -1426,6 +1438,8 @@ public Builder mergeFrom(
        *
        * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
        *
+       * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is
+       *     deprecated. See google/api/metric.proto;l=36
        * @return The enum numeric value on the wire for launchStage.
        */
       @java.lang.Override
@@ -1442,6 +1456,8 @@ public int getLaunchStageValue() {
        *
        * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
        *
+       * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is
+       *     deprecated. See google/api/metric.proto;l=36
        * @param value The enum numeric value on the wire for launchStage to set.
        * @return This builder for chaining.
        */
@@ -1461,6 +1477,8 @@ public Builder setLaunchStageValue(int value) {
        *
        * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
        *
+       * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is
+       *     deprecated. See google/api/metric.proto;l=36
        * @return The launchStage.
        */
       @java.lang.Override
@@ -1479,6 +1497,8 @@ public com.google.api.LaunchStage getLaunchStage() {
        *
        * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
        *
+       * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is
+       *     deprecated. See google/api/metric.proto;l=36
        * @param value The launchStage to set.
        * @return This builder for chaining.
        */
@@ -1501,6 +1521,8 @@ public Builder setLaunchStage(com.google.api.LaunchStage value) {
        *
        * <code>.google.api.LaunchStage launch_stage = 1 [deprecated = true];</code>
        *
+       * @deprecated google.api.MetricDescriptor.MetricDescriptorMetadata.launch_stage is
+       *     deprecated. See google/api/metric.proto;l=36
        * @return This builder for chaining.
        */
       @java.lang.Deprecated
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java
index 0eec7a001a..db9fe4b181 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java
@@ -96,7 +96,12 @@ public interface MetricOrBuilder
    *
    * <code>map&lt;string, string&gt; labels = 2;</code>
    */
-  java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricRule.java
index e0ba216767..f31a606408 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MetricRule.java
@@ -105,6 +105,8 @@ private MetricRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -228,7 +230,7 @@ public int getMetricCostsCount() {
   @java.lang.Override
   public boolean containsMetricCosts(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetMetricCosts().getMap().containsKey(key);
   }
@@ -271,7 +273,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getMetricCostsMap() {
   @java.lang.Override
   public long getMetricCostsOrDefault(java.lang.String key, long defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.Long> map = internalGetMetricCosts().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -292,7 +294,7 @@ public long getMetricCostsOrDefault(java.lang.String key, long defaultValue) {
   @java.lang.Override
   public long getMetricCostsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.Long> map = internalGetMetricCosts().getMap();
     if (!map.containsKey(key)) {
@@ -810,7 +812,7 @@ public int getMetricCostsCount() {
     @java.lang.Override
     public boolean containsMetricCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetMetricCosts().getMap().containsKey(key);
     }
@@ -853,7 +855,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getMetricCostsMap() {
     @java.lang.Override
     public long getMetricCostsOrDefault(java.lang.String key, long defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.Long> map = internalGetMetricCosts().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -874,7 +876,7 @@ public long getMetricCostsOrDefault(java.lang.String key, long defaultValue) {
     @java.lang.Override
     public long getMetricCostsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.Long> map = internalGetMetricCosts().getMap();
       if (!map.containsKey(key)) {
@@ -902,7 +904,7 @@ public Builder clearMetricCosts() {
      */
     public Builder removeMetricCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableMetricCosts().getMutableMap().remove(key);
       return this;
@@ -927,7 +929,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getMutableMetricCosts() {
      */
     public Builder putMetricCosts(java.lang.String key, long value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
 
       internalGetMutableMetricCosts().getMutableMap().put(key, value);
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java
index 99a05445db..500e4f46a2 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java
@@ -113,6 +113,8 @@ private MonitoredResource(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -238,7 +240,7 @@ public int getLabelsCount() {
   @java.lang.Override
   public boolean containsLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLabels().getMap().containsKey(key);
   }
@@ -277,7 +279,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
   @java.lang.Override
   public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -296,7 +298,7 @@ public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.Strin
   @java.lang.Override
   public java.lang.String getLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     if (!map.containsKey(key)) {
@@ -828,7 +830,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -868,7 +870,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -887,7 +889,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -913,7 +915,7 @@ public Builder clearLabels() {
      */
     public Builder removeLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLabels().getMutableMap().remove(key);
       return this;
@@ -936,11 +938,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
      */
     public Builder putLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableLabels().getMutableMap().put(key, value);
       return this;
     }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java
index 244b330049..c9b32f4be1 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java
@@ -139,6 +139,8 @@ private MonitoredResourceDescriptor(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java
index 750f8a8489..89da786cb0 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java
@@ -115,6 +115,8 @@ private MonitoredResourceMetadata(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -256,7 +258,7 @@ public int getUserLabelsCount() {
   @java.lang.Override
   public boolean containsUserLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetUserLabels().getMap().containsKey(key);
   }
@@ -292,7 +294,7 @@ public java.util.Map<java.lang.String, java.lang.String> getUserLabelsMap() {
   public java.lang.String getUserLabelsOrDefault(
       java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetUserLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -309,7 +311,7 @@ public java.lang.String getUserLabelsOrDefault(
   @java.lang.Override
   public java.lang.String getUserLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetUserLabels().getMap();
     if (!map.containsKey(key)) {
@@ -989,7 +991,7 @@ public int getUserLabelsCount() {
     @java.lang.Override
     public boolean containsUserLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetUserLabels().getMap().containsKey(key);
     }
@@ -1025,7 +1027,7 @@ public java.util.Map<java.lang.String, java.lang.String> getUserLabelsMap() {
     public java.lang.String getUserLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetUserLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -1042,7 +1044,7 @@ public java.lang.String getUserLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getUserLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetUserLabels().getMap();
       if (!map.containsKey(key)) {
@@ -1066,7 +1068,7 @@ public Builder clearUserLabels() {
      */
     public Builder removeUserLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableUserLabels().getMutableMap().remove(key);
       return this;
@@ -1087,11 +1089,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableUserLabels()
      */
     public Builder putUserLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableUserLabels().getMutableMap().put(key, value);
       return this;
     }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java
index 598f284e5a..ac5ffa2220 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java
@@ -124,7 +124,12 @@ public interface MonitoredResourceMetadataOrBuilder
    *
    * <code>map&lt;string, string&gt; user_labels = 2;</code>
    */
-  java.lang.String getUserLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getUserLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java
index c7edc4ea77..299f366967 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java
@@ -102,7 +102,12 @@ public interface MonitoredResourceOrBuilder
    *
    * <code>map&lt;string, string&gt; labels = 2;</code>
    */
-  java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Monitoring.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Monitoring.java
index 8bfbec129a..e266a3588b 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Monitoring.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Monitoring.java
@@ -156,6 +156,8 @@ private Monitoring(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -352,6 +354,8 @@ private MonitoringDestination(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java
index cbdb477577..2a7aa320df 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java
@@ -101,6 +101,8 @@ private OAuthRequirements(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Page.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Page.java
index 5bf6d6ba7f..dac2e47109 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Page.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Page.java
@@ -108,6 +108,8 @@ private Page(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java
index 6cff210ea7..3001254306 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java
@@ -105,6 +105,8 @@ private ProjectProperties(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Property.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Property.java
index ee84f9b8f7..20d6909f84 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Property.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Property.java
@@ -111,6 +111,8 @@ private Property(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Quota.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Quota.java
index 9b1f2ae6ed..3cac35d736 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Quota.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Quota.java
@@ -141,6 +141,8 @@ private Quota(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
index 49f17c7f3f..3aa124326a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
@@ -159,6 +159,8 @@ private QuotaLimit(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -574,7 +576,7 @@ public int getValuesCount() {
   @java.lang.Override
   public boolean containsValues(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetValues().getMap().containsKey(key);
   }
@@ -613,7 +615,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getValuesMap() {
   @java.lang.Override
   public long getValuesOrDefault(java.lang.String key, long defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.Long> map = internalGetValues().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -632,7 +634,7 @@ public long getValuesOrDefault(java.lang.String key, long defaultValue) {
   @java.lang.Override
   public long getValuesOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.Long> map = internalGetValues().getMap();
     if (!map.containsKey(key)) {
@@ -2028,7 +2030,7 @@ public int getValuesCount() {
     @java.lang.Override
     public boolean containsValues(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetValues().getMap().containsKey(key);
     }
@@ -2067,7 +2069,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getValuesMap() {
     @java.lang.Override
     public long getValuesOrDefault(java.lang.String key, long defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.Long> map = internalGetValues().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -2086,7 +2088,7 @@ public long getValuesOrDefault(java.lang.String key, long defaultValue) {
     @java.lang.Override
     public long getValuesOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.Long> map = internalGetValues().getMap();
       if (!map.containsKey(key)) {
@@ -2112,7 +2114,7 @@ public Builder clearValues() {
      */
     public Builder removeValues(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableValues().getMutableMap().remove(key);
       return this;
@@ -2135,7 +2137,7 @@ public java.util.Map<java.lang.String, java.lang.Long> getMutableValues() {
      */
     public Builder putValues(java.lang.String key, long value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
 
       internalGetMutableValues().getMutableMap().put(key, value);
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java
index adc7fdc998..85daf0ed24 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java
@@ -194,6 +194,8 @@ private ResourceDescriptor(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java
index 41cd06e43b..edb2110136 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java
@@ -97,6 +97,8 @@ private ResourceReference(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingParameter.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingParameter.java
index 7cd305f1a7..437aaa480f 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingParameter.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingParameter.java
@@ -96,6 +96,8 @@ private RoutingParameter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingRule.java
index 08e1e223f2..e72b312a70 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/RoutingRule.java
@@ -358,6 +358,8 @@ private RoutingRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Service.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Service.java
index b188d8345b..c08fd3248b 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Service.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Service.java
@@ -410,6 +410,8 @@ private Service(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -1845,6 +1847,7 @@ public com.google.api.SourceInfoOrBuilder getSourceInfoOrBuilder() {
    *
    * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
    *
+   * @deprecated google.api.Service.config_version is deprecated. See google/api/service.proto;l=173
    * @return Whether the configVersion field is set.
    */
   @java.lang.Override
@@ -1863,6 +1866,7 @@ public boolean hasConfigVersion() {
    *
    * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
    *
+   * @deprecated google.api.Service.config_version is deprecated. See google/api/service.proto;l=173
    * @return The configVersion.
    */
   @java.lang.Override
@@ -8544,6 +8548,8 @@ public com.google.api.SourceInfoOrBuilder getSourceInfoOrBuilder() {
      *
      * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
      *
+     * @deprecated google.api.Service.config_version is deprecated. See
+     *     google/api/service.proto;l=173
      * @return Whether the configVersion field is set.
      */
     @java.lang.Deprecated
@@ -8561,6 +8567,8 @@ public boolean hasConfigVersion() {
      *
      * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
      *
+     * @deprecated google.api.Service.config_version is deprecated. See
+     *     google/api/service.proto;l=173
      * @return The configVersion.
      */
     @java.lang.Deprecated
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java
index 4f511a1c78..3727e72399 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java
@@ -1049,6 +1049,7 @@ public interface ServiceOrBuilder
    *
    * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
    *
+   * @deprecated google.api.Service.config_version is deprecated. See google/api/service.proto;l=173
    * @return Whether the configVersion field is set.
    */
   @java.lang.Deprecated
@@ -1064,6 +1065,7 @@ public interface ServiceOrBuilder
    *
    * <code>.google.protobuf.UInt32Value config_version = 20 [deprecated = true];</code>
    *
+   * @deprecated google.api.Service.config_version is deprecated. See google/api/service.proto;l=173
    * @return The configVersion.
    */
   @java.lang.Deprecated
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java
index 791694cf0d..48165993c3 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java
@@ -92,6 +92,8 @@ private SourceInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java
index db2e12f1fc..e93b7740a3 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java
@@ -106,6 +106,8 @@ private SystemParameter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java
index 4e75c2e7ee..2878a0b96f 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java
@@ -101,6 +101,8 @@ private SystemParameterRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java
index d8b18d524f..55d9ab9a87 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java
@@ -97,6 +97,8 @@ private SystemParameters(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Usage.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Usage.java
index 487859a49c..7bb9cdff05 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Usage.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Usage.java
@@ -110,6 +110,8 @@ private Usage(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/UsageRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/UsageRule.java
index c0e63574c0..672608bc6b 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/UsageRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/UsageRule.java
@@ -115,6 +115,8 @@ private UsageRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Visibility.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Visibility.java
index 9946e03828..5b8d854787 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Visibility.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/Visibility.java
@@ -108,6 +108,8 @@ private Visibility(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java
index 499f8a775b..faf5c5339a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java
@@ -97,6 +97,8 @@ private VisibilityRule(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java
index b7d14656ec..1778c9cc46 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java
@@ -256,6 +256,8 @@ private AuditLog(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -985,6 +987,8 @@ public com.google.protobuf.StructOrBuilder getMetadataOrBuilder() {
    *
    * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
    *
+   * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+   *     google/cloud/audit/audit_log.proto;l=104
    * @return Whether the serviceData field is set.
    */
   @java.lang.Override
@@ -1003,6 +1007,8 @@ public boolean hasServiceData() {
    *
    * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
    *
+   * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+   *     google/cloud/audit/audit_log.proto;l=104
    * @return The serviceData.
    */
   @java.lang.Override
@@ -4130,6 +4136,8 @@ public com.google.protobuf.StructOrBuilder getMetadataOrBuilder() {
      *
      * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
      *
+     * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+     *     google/cloud/audit/audit_log.proto;l=104
      * @return Whether the serviceData field is set.
      */
     @java.lang.Deprecated
@@ -4147,6 +4155,8 @@ public boolean hasServiceData() {
      *
      * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
      *
+     * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+     *     google/cloud/audit/audit_log.proto;l=104
      * @return The serviceData.
      */
     @java.lang.Deprecated
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java
index 29df867adc..4941015882 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java
@@ -534,6 +534,8 @@ public interface AuditLogOrBuilder
    *
    * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
    *
+   * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+   *     google/cloud/audit/audit_log.proto;l=104
    * @return Whether the serviceData field is set.
    */
   @java.lang.Deprecated
@@ -549,6 +551,8 @@ public interface AuditLogOrBuilder
    *
    * <code>.google.protobuf.Any service_data = 15 [deprecated = true];</code>
    *
+   * @deprecated google.cloud.audit.AuditLog.service_data is deprecated. See
+   *     google/cloud/audit/audit_log.proto;l=104
    * @return The serviceData.
    */
   @java.lang.Deprecated
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java
index d45e5d8923..e05ee2084a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java
@@ -142,6 +142,8 @@ private AuthenticationInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java
index 30058b2ac5..75e61a89db 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java
@@ -117,6 +117,8 @@ private AuthorizationInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java
index a483792de2..6362915450 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java
@@ -136,6 +136,8 @@ private RequestMetadata(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java
index 12f6f3e4cf..890a0e2d45 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java
@@ -103,6 +103,8 @@ private ResourceLocation(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java
index 9ac04c59a4..7f06cb0fd3 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java
@@ -136,6 +136,8 @@ private ServiceAccountDelegationInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -309,6 +311,8 @@ private FirstPartyPrincipal(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -1258,6 +1262,8 @@ private ThirdPartyPrincipal(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -2819,8 +2825,9 @@ public Builder mergeFirstPartyPrincipal(
       } else {
         if (authorityCase_ == 1) {
           firstPartyPrincipalBuilder_.mergeFrom(value);
+        } else {
+          firstPartyPrincipalBuilder_.setMessage(value);
         }
-        firstPartyPrincipalBuilder_.setMessage(value);
       }
       authorityCase_ = 1;
       return this;
@@ -3063,8 +3070,9 @@ public Builder mergeThirdPartyPrincipal(
       } else {
         if (authorityCase_ == 2) {
           thirdPartyPrincipalBuilder_.mergeFrom(value);
+        } else {
+          thirdPartyPrincipalBuilder_.setMessage(value);
         }
-        thirdPartyPrincipalBuilder_.setMessage(value);
       }
       authorityCase_ = 2;
       return this;
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/GetLocationRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/GetLocationRequest.java
index df03662eb5..5d17d96534 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/GetLocationRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/GetLocationRequest.java
@@ -88,6 +88,8 @@ private GetLocationRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsRequest.java
index 7fcb20d65f..874990ea69 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsRequest.java
@@ -109,6 +109,8 @@ private ListLocationsRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsResponse.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsResponse.java
index 77ad19930f..7a1918f5ef 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsResponse.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/ListLocationsResponse.java
@@ -101,6 +101,8 @@ private ListLocationsResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/Location.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/Location.java
index 0288131dc2..5cec1c8638 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/Location.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/Location.java
@@ -132,6 +132,8 @@ private Location(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -355,7 +357,7 @@ public int getLabelsCount() {
   @java.lang.Override
   public boolean containsLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLabels().getMap().containsKey(key);
   }
@@ -392,7 +394,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
   @java.lang.Override
   public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -410,7 +412,7 @@ public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.Strin
   @java.lang.Override
   public java.lang.String getLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
     if (!map.containsKey(key)) {
@@ -1251,7 +1253,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -1289,7 +1291,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -1307,7 +1309,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -1332,7 +1334,7 @@ public Builder clearLabels() {
      */
     public Builder removeLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLabels().getMutableMap().remove(key);
       return this;
@@ -1354,11 +1356,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
      */
     public Builder putLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableLabels().getMutableMap().put(key, value);
       return this;
     }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/LocationOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/LocationOrBuilder.java
index 98ab25debd..e1fb6694c6 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/LocationOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/cloud/location/LocationOrBuilder.java
@@ -148,7 +148,12 @@ public interface LocationOrBuilder
    *
    * <code>map&lt;string, string&gt; labels = 2;</code>
    */
-  java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java
index 0e6e4739c1..9b970c4313 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java
@@ -133,6 +133,8 @@ private Viewport(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java
index d3bfba6d6e..af8326a9d8 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java
@@ -188,6 +188,8 @@ private HttpRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java
index a693f21eee..8f1b0a534e 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java
@@ -88,6 +88,8 @@ private CancelOperationRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java
index 7a83988108..e9ce8e35d9 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java
@@ -88,6 +88,8 @@ private DeleteOperationRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java
index 37348bbca3..65a711c0f6 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java
@@ -88,6 +88,8 @@ private GetOperationRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java
index 3bb14c6ab9..89732bf909 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java
@@ -109,6 +109,8 @@ private ListOperationsRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java
index 006acb313f..0a1b7bcc2e 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java
@@ -100,6 +100,8 @@ private ListOperationsResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java
index 2d8d9d9265..4ec5fddd6a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java
@@ -136,6 +136,8 @@ private Operation(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -1384,8 +1386,9 @@ public Builder mergeError(com.google.rpc.Status value) {
       } else {
         if (resultCase_ == 4) {
           errorBuilder_.mergeFrom(value);
+        } else {
+          errorBuilder_.setMessage(value);
         }
-        errorBuilder_.setMessage(value);
       }
       resultCase_ = 4;
       return this;
@@ -1621,8 +1624,9 @@ public Builder mergeResponse(com.google.protobuf.Any value) {
       } else {
         if (resultCase_ == 5) {
           responseBuilder_.mergeFrom(value);
+        } else {
+          responseBuilder_.setMessage(value);
         }
-        responseBuilder_.setMessage(value);
       }
       resultCase_ = 5;
       return this;
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java
index 4b4b80bb8d..69b53b54ce 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java
@@ -104,6 +104,8 @@ private OperationInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java
index 45f02503b5..eb0bffeedd 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java
@@ -103,6 +103,8 @@ private WaitOperationRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java
index 68e9d0f808..f92a19917c 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java
@@ -95,6 +95,8 @@ private BadRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -255,6 +257,8 @@ private FieldViolation(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java
index 9f1ae8c15a..16154375cc 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java
@@ -100,6 +100,8 @@ private DebugInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java
index d3d6f6a6a0..c316d307ed 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java
@@ -130,6 +130,8 @@ private ErrorInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -318,7 +320,7 @@ public int getMetadataCount() {
   @java.lang.Override
   public boolean containsMetadata(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetMetadata().getMap().containsKey(key);
   }
@@ -366,7 +368,7 @@ public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
   public java.lang.String getMetadataOrDefault(
       java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -389,7 +391,7 @@ public java.lang.String getMetadataOrDefault(
   @java.lang.Override
   public java.lang.String getMetadataOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
     if (!map.containsKey(key)) {
@@ -1082,7 +1084,7 @@ public int getMetadataCount() {
     @java.lang.Override
     public boolean containsMetadata(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetMetadata().getMap().containsKey(key);
     }
@@ -1130,7 +1132,7 @@ public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
     public java.lang.String getMetadataOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -1153,7 +1155,7 @@ public java.lang.String getMetadataOrDefault(
     @java.lang.Override
     public java.lang.String getMetadataOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
       if (!map.containsKey(key)) {
@@ -1183,7 +1185,7 @@ public Builder clearMetadata() {
      */
     public Builder removeMetadata(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableMetadata().getMutableMap().remove(key);
       return this;
@@ -1210,11 +1212,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableMetadata() {
      */
     public Builder putMetadata(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableMetadata().getMutableMap().put(key, value);
       return this;
     }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java
index d2a070da3a..17a27407b2 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java
@@ -155,7 +155,12 @@ public interface ErrorInfoOrBuilder
    *
    * <code>map&lt;string, string&gt; metadata = 3;</code>
    */
-  java.lang.String getMetadataOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getMetadataOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Help.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Help.java
index c5ad98876d..35b5561c96 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Help.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Help.java
@@ -94,6 +94,8 @@ private Help(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -250,6 +252,8 @@ private Link(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java
index 4ef61533e6..feec6e7dfc 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java
@@ -97,6 +97,8 @@ private LocalizedMessage(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java
index bf6feeacd8..a50c581df4 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java
@@ -97,6 +97,8 @@ private PreconditionFailure(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -301,6 +303,8 @@ private Violation(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java
index cb105990e5..f7f961323e 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java
@@ -101,6 +101,8 @@ private QuotaFailure(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -273,6 +275,8 @@ private Violation(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java
index 6095880d15..b0e1a7f790 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java
@@ -97,6 +97,8 @@ private RequestInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java
index 9016943cd2..3e06b989d2 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java
@@ -112,6 +112,8 @@ private ResourceInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java
index 5bcc1f41b6..0dcc4a38df 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java
@@ -104,6 +104,8 @@ private RetryInfo(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Status.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Status.java
index 09f4b8140d..282cb3c415 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Status.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/Status.java
@@ -109,6 +109,8 @@ private Status(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java
index 26ff2d99f8..963d26f7e4 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java
@@ -216,6 +216,8 @@ private AttributeContext(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -327,7 +329,12 @@ public interface PeerOrBuilder
      *
      * <code>map&lt;string, string&gt; labels = 6;</code>
      */
-    java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+    /* nullable */
+    java.lang.String getLabelsOrDefault(
+        java.lang.String key,
+        /* nullable */
+        java.lang.String defaultValue);
     /**
      *
      *
@@ -507,6 +514,8 @@ private Peer(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -645,7 +654,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -681,7 +690,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -698,7 +707,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -1422,7 +1431,7 @@ public int getLabelsCount() {
       @java.lang.Override
       public boolean containsLabels(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetLabels().getMap().containsKey(key);
       }
@@ -1458,7 +1467,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
       public java.lang.String getLabelsOrDefault(
           java.lang.String key, java.lang.String defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -1475,7 +1484,7 @@ public java.lang.String getLabelsOrDefault(
       @java.lang.Override
       public java.lang.String getLabelsOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
         if (!map.containsKey(key)) {
@@ -1499,7 +1508,7 @@ public Builder clearLabels() {
        */
       public Builder removeLabels(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableLabels().getMutableMap().remove(key);
         return this;
@@ -1520,11 +1529,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
        */
       public Builder putLabels(java.lang.String key, java.lang.String value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         if (value == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map value");
         }
+
         internalGetMutableLabels().getMutableMap().put(key, value);
         return this;
       }
@@ -2039,6 +2049,8 @@ private Api(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -3569,6 +3581,8 @@ private Auth(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -5588,7 +5602,12 @@ public interface RequestOrBuilder
      *
      * <code>map&lt;string, string&gt; headers = 3;</code>
      */
-    java.lang.String getHeadersOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+    /* nullable */
+    java.lang.String getHeadersOrDefault(
+        java.lang.String key,
+        /* nullable */
+        java.lang.String defaultValue);
     /**
      *
      *
@@ -6031,6 +6050,8 @@ private Request(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -6206,7 +6227,7 @@ public int getHeadersCount() {
     @java.lang.Override
     public boolean containsHeaders(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetHeaders().getMap().containsKey(key);
     }
@@ -6246,7 +6267,7 @@ public java.util.Map<java.lang.String, java.lang.String> getHeadersMap() {
     public java.lang.String getHeadersOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -6265,7 +6286,7 @@ public java.lang.String getHeadersOrDefault(
     @java.lang.Override
     public java.lang.String getHeadersOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
       if (!map.containsKey(key)) {
@@ -7510,7 +7531,7 @@ public int getHeadersCount() {
       @java.lang.Override
       public boolean containsHeaders(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetHeaders().getMap().containsKey(key);
       }
@@ -7550,7 +7571,7 @@ public java.util.Map<java.lang.String, java.lang.String> getHeadersMap() {
       public java.lang.String getHeadersOrDefault(
           java.lang.String key, java.lang.String defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -7569,7 +7590,7 @@ public java.lang.String getHeadersOrDefault(
       @java.lang.Override
       public java.lang.String getHeadersOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
         if (!map.containsKey(key)) {
@@ -7595,7 +7616,7 @@ public Builder clearHeaders() {
        */
       public Builder removeHeaders(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableHeaders().getMutableMap().remove(key);
         return this;
@@ -7618,11 +7639,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableHeaders() {
        */
       public Builder putHeaders(java.lang.String key, java.lang.String value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         if (value == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map value");
         }
+
         internalGetMutableHeaders().getMutableMap().put(key, value);
         return this;
       }
@@ -8869,7 +8891,12 @@ public interface ResponseOrBuilder
      *
      * <code>map&lt;string, string&gt; headers = 3;</code>
      */
-    java.lang.String getHeadersOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+    /* nullable */
+    java.lang.String getHeadersOrDefault(
+        java.lang.String key,
+        /* nullable */
+        java.lang.String defaultValue);
     /**
      *
      *
@@ -9083,6 +9110,8 @@ private Response(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -9192,7 +9221,7 @@ public int getHeadersCount() {
     @java.lang.Override
     public boolean containsHeaders(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetHeaders().getMap().containsKey(key);
     }
@@ -9232,7 +9261,7 @@ public java.util.Map<java.lang.String, java.lang.String> getHeadersMap() {
     public java.lang.String getHeadersOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -9251,7 +9280,7 @@ public java.lang.String getHeadersOrDefault(
     @java.lang.Override
     public java.lang.String getHeadersOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
       if (!map.containsKey(key)) {
@@ -9948,7 +9977,7 @@ public int getHeadersCount() {
       @java.lang.Override
       public boolean containsHeaders(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetHeaders().getMap().containsKey(key);
       }
@@ -9988,7 +10017,7 @@ public java.util.Map<java.lang.String, java.lang.String> getHeadersMap() {
       public java.lang.String getHeadersOrDefault(
           java.lang.String key, java.lang.String defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -10007,7 +10036,7 @@ public java.lang.String getHeadersOrDefault(
       @java.lang.Override
       public java.lang.String getHeadersOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetHeaders().getMap();
         if (!map.containsKey(key)) {
@@ -10033,7 +10062,7 @@ public Builder clearHeaders() {
        */
       public Builder removeHeaders(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableHeaders().getMutableMap().remove(key);
         return this;
@@ -10056,11 +10085,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableHeaders() {
        */
       public Builder putHeaders(java.lang.String key, java.lang.String value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         if (value == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map value");
         }
+
         internalGetMutableHeaders().getMutableMap().put(key, value);
         return this;
       }
@@ -10683,7 +10713,12 @@ public interface ResourceOrBuilder
      *
      * <code>map&lt;string, string&gt; labels = 4;</code>
      */
-    java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+    /* nullable */
+    java.lang.String getLabelsOrDefault(
+        java.lang.String key,
+        /* nullable */
+        java.lang.String defaultValue);
     /**
      *
      *
@@ -10783,7 +10818,12 @@ public interface ResourceOrBuilder
      *
      * <code>map&lt;string, string&gt; annotations = 6;</code>
      */
-    java.lang.String getAnnotationsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+    /* nullable */
+    java.lang.String getAnnotationsOrDefault(
+        java.lang.String key,
+        /* nullable */
+        java.lang.String defaultValue);
     /**
      *
      *
@@ -11202,6 +11242,8 @@ private Resource(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -11449,7 +11491,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -11487,7 +11529,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -11505,7 +11547,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -11613,7 +11655,7 @@ public int getAnnotationsCount() {
     @java.lang.Override
     public boolean containsAnnotations(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetAnnotations().getMap().containsKey(key);
     }
@@ -11655,7 +11697,7 @@ public java.util.Map<java.lang.String, java.lang.String> getAnnotationsMap() {
     public java.lang.String getAnnotationsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetAnnotations().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -11675,7 +11717,7 @@ public java.lang.String getAnnotationsOrDefault(
     @java.lang.Override
     public java.lang.String getAnnotationsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map<java.lang.String, java.lang.String> map = internalGetAnnotations().getMap();
       if (!map.containsKey(key)) {
@@ -12991,7 +13033,7 @@ public int getLabelsCount() {
       @java.lang.Override
       public boolean containsLabels(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetLabels().getMap().containsKey(key);
       }
@@ -13029,7 +13071,7 @@ public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
       public java.lang.String getLabelsOrDefault(
           java.lang.String key, java.lang.String defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -13047,7 +13089,7 @@ public java.lang.String getLabelsOrDefault(
       @java.lang.Override
       public java.lang.String getLabelsOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
         if (!map.containsKey(key)) {
@@ -13072,7 +13114,7 @@ public Builder clearLabels() {
        */
       public Builder removeLabels(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableLabels().getMutableMap().remove(key);
         return this;
@@ -13094,11 +13136,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
        */
       public Builder putLabels(java.lang.String key, java.lang.String value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         if (value == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map value");
         }
+
         internalGetMutableLabels().getMutableMap().put(key, value);
         return this;
       }
@@ -13286,7 +13329,7 @@ public int getAnnotationsCount() {
       @java.lang.Override
       public boolean containsAnnotations(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetAnnotations().getMap().containsKey(key);
       }
@@ -13328,7 +13371,7 @@ public java.util.Map<java.lang.String, java.lang.String> getAnnotationsMap() {
       public java.lang.String getAnnotationsOrDefault(
           java.lang.String key, java.lang.String defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetAnnotations().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -13348,7 +13391,7 @@ public java.lang.String getAnnotationsOrDefault(
       @java.lang.Override
       public java.lang.String getAnnotationsOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map<java.lang.String, java.lang.String> map = internalGetAnnotations().getMap();
         if (!map.containsKey(key)) {
@@ -13375,7 +13418,7 @@ public Builder clearAnnotations() {
        */
       public Builder removeAnnotations(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableAnnotations().getMutableMap().remove(key);
         return this;
@@ -13399,11 +13442,12 @@ public java.util.Map<java.lang.String, java.lang.String> getMutableAnnotations()
        */
       public Builder putAnnotations(java.lang.String key, java.lang.String value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         if (value == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map value");
         }
+
         internalGetMutableAnnotations().getMutableMap().put(key, value);
         return this;
       }
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Color.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Color.java
index 39aa16d772..ee1c523bc9 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Color.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Color.java
@@ -215,6 +215,8 @@ private Color(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -373,13 +375,13 @@ public final boolean isInitialized() {
 
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-    if (red_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(red_) != 0) {
       output.writeFloat(1, red_);
     }
-    if (green_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(green_) != 0) {
       output.writeFloat(2, green_);
     }
-    if (blue_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(blue_) != 0) {
       output.writeFloat(3, blue_);
     }
     if (alpha_ != null) {
@@ -394,13 +396,13 @@ public int getSerializedSize() {
     if (size != -1) return size;
 
     size = 0;
-    if (red_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(red_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, red_);
     }
-    if (green_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(green_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, green_);
     }
-    if (blue_ != 0F) {
+    if (java.lang.Float.floatToRawIntBits(blue_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, blue_);
     }
     if (alpha_ != null) {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Date.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Date.java
index f2748a89b4..a531e68fa7 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Date.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Date.java
@@ -104,6 +104,8 @@ private Date(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/DateTime.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/DateTime.java
index e33ab87674..d8d553d7b7 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/DateTime.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/DateTime.java
@@ -160,6 +160,8 @@ private DateTime(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -1470,8 +1472,9 @@ public Builder mergeUtcOffset(com.google.protobuf.Duration value) {
       } else {
         if (timeOffsetCase_ == 8) {
           utcOffsetBuilder_.mergeFrom(value);
+        } else {
+          utcOffsetBuilder_.setMessage(value);
         }
-        utcOffsetBuilder_.setMessage(value);
       }
       timeOffsetCase_ = 8;
       return this;
@@ -1682,8 +1685,9 @@ public Builder mergeTimeZone(com.google.type.TimeZone value) {
       } else {
         if (timeOffsetCase_ == 9) {
           timeZoneBuilder_.mergeFrom(value);
+        } else {
+          timeZoneBuilder_.setMessage(value);
         }
-        timeZoneBuilder_.setMessage(value);
       }
       timeOffsetCase_ = 9;
       return this;
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Decimal.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Decimal.java
index c7f211ec64..b3e680b384 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Decimal.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Decimal.java
@@ -93,6 +93,8 @@ private Decimal(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Expr.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Expr.java
index 8e5cf50fd8..0c50e407ff 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Expr.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Expr.java
@@ -133,6 +133,8 @@ private Expr(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Fraction.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Fraction.java
index 4fe59d53d3..0b2eddb9b4 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Fraction.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Fraction.java
@@ -89,6 +89,8 @@ private Fraction(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Interval.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Interval.java
index ac92e5960c..4b65656d8a 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Interval.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Interval.java
@@ -113,6 +113,8 @@ private Interval(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LatLng.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LatLng.java
index 8e892637a6..d65efdeeff 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LatLng.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LatLng.java
@@ -93,6 +93,8 @@ private LatLng(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -163,10 +165,10 @@ public final boolean isInitialized() {
 
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-    if (latitude_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(latitude_) != 0) {
       output.writeDouble(1, latitude_);
     }
-    if (longitude_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(longitude_) != 0) {
       output.writeDouble(2, longitude_);
     }
     unknownFields.writeTo(output);
@@ -178,10 +180,10 @@ public int getSerializedSize() {
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(latitude_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, latitude_);
     }
-    if (longitude_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(longitude_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, longitude_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LocalizedText.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LocalizedText.java
index 428b83f5e5..e7495c4d96 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LocalizedText.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/LocalizedText.java
@@ -96,6 +96,8 @@ private LocalizedText(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Money.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Money.java
index 85d2649ffd..4ea759c948 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Money.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Money.java
@@ -98,6 +98,8 @@ private Money(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java
index b4462dbad3..aecf7924fa 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java
@@ -129,6 +129,8 @@ private PhoneNumber(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -298,6 +300,8 @@ private ShortCode(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -2062,8 +2066,9 @@ public Builder mergeShortCode(com.google.type.PhoneNumber.ShortCode value) {
       } else {
         if (kindCase_ == 2) {
           shortCodeBuilder_.mergeFrom(value);
+        } else {
+          shortCodeBuilder_.setMessage(value);
         }
-        shortCodeBuilder_.setMessage(value);
       }
       kindCase_ = 2;
       return this;
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java
index 0a0ce4ad75..77f42f94c9 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java
@@ -185,6 +185,8 @@ private PostalAddress(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Quaternion.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Quaternion.java
index 1eaf393f3c..5f0963e984 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Quaternion.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/Quaternion.java
@@ -141,6 +141,8 @@ private Quaternion(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -247,16 +249,16 @@ public final boolean isInitialized() {
 
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-    if (x_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(x_) != 0) {
       output.writeDouble(1, x_);
     }
-    if (y_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
       output.writeDouble(2, y_);
     }
-    if (z_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
       output.writeDouble(3, z_);
     }
-    if (w_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(w_) != 0) {
       output.writeDouble(4, w_);
     }
     unknownFields.writeTo(output);
@@ -268,16 +270,16 @@ public int getSerializedSize() {
     if (size != -1) return size;
 
     size = 0;
-    if (x_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(x_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, x_);
     }
-    if (y_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, y_);
     }
-    if (z_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(3, z_);
     }
-    if (w_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(w_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(4, w_);
     }
     size += unknownFields.getSerializedSize();
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java
index 1445701eed..b9c26b0ab7 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java
@@ -102,6 +102,8 @@ private TimeOfDay(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeZone.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeZone.java
index e62bcb6c6e..3d32c21374 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeZone.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/type/TimeZone.java
@@ -97,6 +97,8 @@ private TimeZone(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {