diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index f60d774..a79f062 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:fc52b202aa298a50a12c64efd04fea3884d867947effe2fa85382a246c09e813 -# created: 2022-04-06T16:30:03.627422514Z + digest: sha256:2567a120ce90fadb6201999b87d649d9f67459de28815ad239bce9ebfaa18a74 +# created: 2022-05-19T15:12:45.278246753Z diff --git a/.kokoro/build.sh b/.kokoro/build.sh index 80cd273..e44e077 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -74,6 +74,11 @@ graalvm) mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test RETURN_CODE=$? ;; +graalvm17) + # Run Unit and Integration Tests with Native Image + mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test + RETURN_CODE=$? + ;; samples) SAMPLES_DIR=samples # only run ITs in snapshot/ on presubmit PRs. run ITs in all 3 samples/ subdirectories otherwise. diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg new file mode 100644 index 0000000..a3f7fb9 --- /dev/null +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -0,0 +1,33 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/graalvm17" +} + +env_vars: { + key: "JOB_TYPE" + value: "graalvm17" +} + +# TODO: remove this after we've migrated all tests and scripts +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_CLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "secret_manager/java-it-service-account" +} + +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" +} \ No newline at end of file diff --git a/.repo-metadata.json b/.repo-metadata.json index a285d0b..f82ec1a 100644 --- a/.repo-metadata.json +++ b/.repo-metadata.json @@ -4,7 +4,7 @@ "product_documentation": "https://cloud.google.com/optimization/docs", "api_description": "is a managed routing service that takes your list of orders, vehicles, constraints, and objectives and returns the most efficient plan for your entire fleet in near real-time.", "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-optimization/latest/overview", - "release_level": "preview", + "release_level": "stable", "transport": "grpc", "language": "java", "repo": "googleapis/java-optimization", @@ -13,4 +13,4 @@ "api_id": "cloudoptimization.googleapis.com", "library_type": "GAPIC_AUTO", "requires_billing": true -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index b70d9b5..7503481 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [1.0.0](https://github.com/googleapis/java-optimization/compare/v0.1.2...v1.0.0) (2022-05-19) + + +### Features + +* add build scripts for native image testing in Java 17 ([#1440](https://github.com/googleapis/java-optimization/issues/1440)) ([#45](https://github.com/googleapis/java-optimization/issues/45)) ([5c08825](https://github.com/googleapis/java-optimization/commit/5c088252f9c096ac3ef82134a5d323d9abc252cb)) +* promote to GA ([#38](https://github.com/googleapis/java-optimization/issues/38)) ([1b140c5](https://github.com/googleapis/java-optimization/commit/1b140c53cb296a817eba2421112379191b4539f8)) + + +### Dependencies + +* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.12.0 ([#44](https://github.com/googleapis/java-optimization/issues/44)) ([04c9c02](https://github.com/googleapis/java-optimization/commit/04c9c0274eee2533a398e526665479f4f0313b3f)) + ### [0.1.2](https://github.com/googleapis/java-optimization/compare/v0.1.1...v0.1.2) (2022-04-18) diff --git a/README.md b/README.md index 144d88c..e7c8eb0 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,6 @@ Java idiomatic client for [Cloud Fleet Routing][product-docs]. - [Product Documentation][product-docs] - [Client Library Documentation][javadocs] -> Note: This client is a work-in-progress, and may occasionally -> make backwards-incompatible changes. - ## Quickstart @@ -22,20 +19,20 @@ If you are using Maven, add this to your pom.xml file: com.google.cloud google-cloud-optimization - 0.1.1 + 0.1.2 ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-optimization:0.1.1' +implementation 'com.google.cloud:google-cloud-optimization:0.1.2' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-optimization" % "0.1.1" +libraryDependencies += "com.google.cloud" % "google-cloud-optimization" % "0.1.2" ``` ## Authentication @@ -144,9 +141,6 @@ and on [google-cloud-java][g-c-j]. This library follows [Semantic Versioning](http://semver.org/). -It is currently in major version zero (``0.y.z``), which means that anything may change at any time -and the public API should not be considered stable. - ## Contributing @@ -187,7 +181,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-4]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-optimization/java8-win.html [kokoro-badge-image-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-optimization/java11.svg [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-optimization/java11.html -[stability-image]: https://img.shields.io/badge/stability-preview-yellow +[stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-optimization.svg [maven-version-link]: https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-optimization&core=gav [authentication]: https://github.com/googleapis/google-cloud-java#authentication diff --git a/google-cloud-optimization-bom/pom.xml b/google-cloud-optimization-bom/pom.xml index 4d3d51e..b99dad7 100644 --- a/google-cloud-optimization-bom/pom.xml +++ b/google-cloud-optimization-bom/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.google.cloud google-cloud-optimization-bom - 0.1.2 + 1.0.0 pom com.google.cloud google-cloud-shared-config - 1.3.2 + 1.4.0 Google Cloud Fleet Routing BOM @@ -65,17 +65,17 @@ com.google.cloud google-cloud-optimization - 0.1.2 + 1.0.0 com.google.api.grpc grpc-google-cloud-optimization-v1 - 0.1.2 + 1.0.0 com.google.api.grpc proto-google-cloud-optimization-v1 - 0.1.2 + 1.0.0 diff --git a/google-cloud-optimization/pom.xml b/google-cloud-optimization/pom.xml index 9123b50..93fd2df 100644 --- a/google-cloud-optimization/pom.xml +++ b/google-cloud-optimization/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-optimization - 0.1.2 + 1.0.0 jar Google Cloud Fleet Routing https://github.com/googleapis/java-optimization @@ -11,7 +11,7 @@ com.google.cloud google-cloud-optimization-parent - 0.1.2 + 1.0.0 google-cloud-optimization diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingClient.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingClient.java index ae9451b..4275fab 100644 --- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingClient.java +++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,6 +47,8 @@ * calls that map to API methods. Sample code to get started: * *
{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
  *   OptimizeToursRequest request =
  *       OptimizeToursRequest.newBuilder()
@@ -100,6 +102,8 @@
  * 

To customize credentials: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * FleetRoutingSettings fleetRoutingSettings =
  *     FleetRoutingSettings.newBuilder()
  *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
@@ -110,6 +114,8 @@
  * 

To customize the endpoint: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * FleetRoutingSettings fleetRoutingSettings =
  *     FleetRoutingSettings.newBuilder().setEndpoint(myEndpoint).build();
  * FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create(fleetRoutingSettings);
@@ -198,6 +204,8 @@ public final OperationsClient getOperationsClient() {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
    *   OptimizeToursRequest request =
    *       OptimizeToursRequest.newBuilder()
@@ -247,6 +255,8 @@ public final OptimizeToursResponse optimizeTours(OptimizeToursRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
    *   OptimizeToursRequest request =
    *       OptimizeToursRequest.newBuilder()
@@ -292,6 +302,8 @@ public final UnaryCallable optimize
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
    *   BatchOptimizeToursRequest request =
    *       BatchOptimizeToursRequest.newBuilder()
@@ -325,6 +337,8 @@ public final UnaryCallable optimize
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
    *   BatchOptimizeToursRequest request =
    *       BatchOptimizeToursRequest.newBuilder()
@@ -358,6 +372,8 @@ public final UnaryCallable optimize
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
    *   BatchOptimizeToursRequest request =
    *       BatchOptimizeToursRequest.newBuilder()
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingSettings.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingSettings.java
index 78d3f37..93da45a 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingSettings.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/FleetRoutingSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -52,6 +52,8 @@
  * 

For example, to set the total timeout of optimizeTours to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * FleetRoutingSettings.Builder fleetRoutingSettingsBuilder = FleetRoutingSettings.newBuilder();
  * fleetRoutingSettingsBuilder
  *     .optimizeToursSettings()
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/package-info.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/package-info.java
index a580945..2656e18 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/package-info.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,6 +36,8 @@
  * 

Sample for FleetRoutingClient: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (FleetRoutingClient fleetRoutingClient = FleetRoutingClient.create()) {
  *   OptimizeToursRequest request =
  *       OptimizeToursRequest.newBuilder()
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStub.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStub.java
index 836fd87..4d71d13 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStub.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStubSettings.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStubSettings.java
index 3b29fdf..ea19358 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStubSettings.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/FleetRoutingStubSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -69,6 +69,8 @@
  * 

For example, to set the total timeout of optimizeTours to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * FleetRoutingStubSettings.Builder fleetRoutingSettingsBuilder =
  *     FleetRoutingStubSettings.newBuilder();
  * fleetRoutingSettingsBuilder
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingCallableFactory.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingCallableFactory.java
index e14bb26..1b25fdd 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingCallableFactory.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingCallableFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingStub.java b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingStub.java
index f139404..3ed31e3 100644
--- a/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingStub.java
+++ b/google-cloud-optimization/src/main/java/com/google/cloud/optimization/v1/stub/GrpcFleetRoutingStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/FleetRoutingClientTest.java b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/FleetRoutingClientTest.java
index a0ece33..c8a9460 100644
--- a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/FleetRoutingClientTest.java
+++ b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/FleetRoutingClientTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRouting.java b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRouting.java
index 3bf487f..0032f02 100644
--- a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRouting.java
+++ b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRouting.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRoutingImpl.java b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRoutingImpl.java
index 02e31d7..90cfc6b 100644
--- a/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRoutingImpl.java
+++ b/google-cloud-optimization/src/test/java/com/google/cloud/optimization/v1/MockFleetRoutingImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/grpc-google-cloud-optimization-v1/pom.xml b/grpc-google-cloud-optimization-v1/pom.xml
index 896d958..2ae6d97 100644
--- a/grpc-google-cloud-optimization-v1/pom.xml
+++ b/grpc-google-cloud-optimization-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   grpc-google-cloud-optimization-v1
-  0.1.2
+  1.0.0
   grpc-google-cloud-optimization-v1
   GRPC library for google-cloud-optimization
   
     com.google.cloud
     google-cloud-optimization-parent
-    0.1.2
+    1.0.0
   
   
     
diff --git a/pom.xml b/pom.xml
index 5eb858f..3adbfc9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   com.google.cloud
   google-cloud-optimization-parent
   pom
-  0.1.2
+  1.0.0
   Google Cloud Fleet Routing Parent
   https://github.com/googleapis/java-optimization
   
@@ -14,7 +14,7 @@
   
     com.google.cloud
     google-cloud-shared-config
-    1.3.2
+    1.4.0
   
 
   
@@ -69,23 +69,23 @@
       
         com.google.cloud
         google-cloud-optimization
-        0.1.2
+        1.0.0
       
       
         com.google.api.grpc
         grpc-google-cloud-optimization-v1
-        0.1.2
+        1.0.0
       
       
         com.google.api.grpc
         proto-google-cloud-optimization-v1
-        0.1.2
+        1.0.0
       
 
       
         com.google.cloud
         google-cloud-shared-dependencies
-        2.10.0
+        2.12.0
         pom
         import
       
@@ -121,7 +121,7 @@
       
         org.apache.maven.plugins
         maven-project-info-reports-plugin
-        3.2.2
+        3.3.0
         
           
             
@@ -148,7 +148,7 @@
       
         org.apache.maven.plugins
         maven-javadoc-plugin
-        3.3.2
+        3.4.0
         
           
             html
diff --git a/proto-google-cloud-optimization-v1/pom.xml b/proto-google-cloud-optimization-v1/pom.xml
index 8d53637..07d6c1b 100644
--- a/proto-google-cloud-optimization-v1/pom.xml
+++ b/proto-google-cloud-optimization-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   proto-google-cloud-optimization-v1
-  0.1.2
+  1.0.0
   proto-google-cloud-optimization-v1
   Proto library for google-cloud-optimization
   
     com.google.cloud
     google-cloud-optimization-parent
-    0.1.2
+    1.0.0
   
   
     
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetrics.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetrics.java
index c367ce9..96cc8e0 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetrics.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetrics.java
@@ -218,6 +218,8 @@ private AggregatedMetrics(
       }
     } 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 {
@@ -637,7 +639,7 @@ public int getMaxLoadsCount() {
   @java.lang.Override
   public boolean containsMaxLoads(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetMaxLoads().getMap().containsKey(key);
   }
@@ -688,7 +690,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrD
       java.lang.String key,
       com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map
         map = internalGetMaxLoads().getMap();
@@ -713,7 +715,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrD
   public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrThrow(
       java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map
         map = internalGetMaxLoads().getMap();
@@ -762,7 +764,7 @@ public int getCostsCount() {
   @java.lang.Override
   public boolean containsCosts(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetCosts().getMap().containsKey(key);
   }
@@ -799,7 +801,7 @@ public java.util.Map getCostsMap() {
   @java.lang.Deprecated
   public double getCostsOrDefault(java.lang.String key, double defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetCosts().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -817,7 +819,7 @@ public double getCostsOrDefault(java.lang.String key, double defaultValue) {
   @java.lang.Deprecated
   public double getCostsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetCosts().getMap();
     if (!map.containsKey(key)) {
@@ -837,6 +839,8 @@ public double getCostsOrThrow(java.lang.String key) {
    *
    * double total_cost = 11 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.AggregatedMetrics.total_cost is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2206
    * @return The totalCost.
    */
   @java.lang.Override
@@ -880,14 +884,14 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (totalDuration_ != null) {
       output.writeMessage(7, getTotalDuration());
     }
-    if (travelDistanceMeters_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(travelDistanceMeters_) != 0) {
       output.writeDouble(8, travelDistanceMeters_);
     }
     com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
         output, internalGetMaxLoads(), MaxLoadsDefaultEntryHolder.defaultEntry, 9);
     com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
         output, internalGetCosts(), CostsDefaultEntryHolder.defaultEntry, 10);
-    if (totalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
       output.writeDouble(11, totalCost_);
     }
     unknownFields.writeTo(output);
@@ -920,7 +924,7 @@ public int getSerializedSize() {
     if (totalDuration_ != null) {
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getTotalDuration());
     }
-    if (travelDistanceMeters_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(travelDistanceMeters_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(8, travelDistanceMeters_);
     }
     for (java.util.Map.Entry<
@@ -946,7 +950,7 @@ public int getSerializedSize() {
               .build();
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, costs__);
     }
-    if (totalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(11, totalCost_);
     }
     size += unknownFields.getSerializedSize();
@@ -2728,7 +2732,7 @@ public int getMaxLoadsCount() {
     @java.lang.Override
     public boolean containsMaxLoads(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetMaxLoads().getMap().containsKey(key);
     }
@@ -2783,7 +2787,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrD
         java.lang.String key,
         com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map
           map = internalGetMaxLoads().getMap();
@@ -2809,7 +2813,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrD
     public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map
           map = internalGetMaxLoads().getMap();
@@ -2841,7 +2845,7 @@ public Builder clearMaxLoads() {
      */
     public Builder removeMaxLoads(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableMaxLoads().getMutableMap().remove(key);
       return this;
@@ -2872,11 +2876,12 @@ public Builder removeMaxLoads(java.lang.String key) {
     public Builder putMaxLoads(
         java.lang.String key, com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad 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");
       }
+
       internalGetMutableMaxLoads().getMutableMap().put(key, value);
       return this;
     }
@@ -2942,7 +2947,7 @@ public int getCostsCount() {
     @java.lang.Override
     public boolean containsCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetCosts().getMap().containsKey(key);
     }
@@ -2979,7 +2984,7 @@ public java.util.Map getCostsMap() {
     @java.lang.Deprecated
     public double getCostsOrDefault(java.lang.String key, double defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetCosts().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -2997,7 +3002,7 @@ public double getCostsOrDefault(java.lang.String key, double defaultValue) {
     @java.lang.Deprecated
     public double getCostsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetCosts().getMap();
       if (!map.containsKey(key)) {
@@ -3023,7 +3028,7 @@ public Builder clearCosts() {
     @java.lang.Deprecated
     public Builder removeCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableCosts().getMutableMap().remove(key);
       return this;
@@ -3045,7 +3050,7 @@ public java.util.Map getMutableCosts() {
     @java.lang.Deprecated
     public Builder putCosts(java.lang.String key, double value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
 
       internalGetMutableCosts().getMutableMap().put(key, value);
@@ -3076,6 +3081,8 @@ public Builder putAllCosts(java.util.Map val
      *
      * double total_cost = 11 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.AggregatedMetrics.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=2206
      * @return The totalCost.
      */
     @java.lang.Override
@@ -3092,6 +3099,8 @@ public double getTotalCost() {
      *
      * double total_cost = 11 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.AggregatedMetrics.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=2206
      * @param value The totalCost to set.
      * @return This builder for chaining.
      */
@@ -3111,6 +3120,8 @@ public Builder setTotalCost(double value) {
      *
      * double total_cost = 11 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.AggregatedMetrics.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=2206
      * @return This builder for chaining.
      */
     @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetricsOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetricsOrBuilder.java
index 4f2237b..53f352d 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetricsOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AggregatedMetricsOrBuilder.java
@@ -334,8 +334,11 @@ public interface AggregatedMetricsOrBuilder
    * map<string, .google.cloud.optimization.v1.ShipmentRoute.VehicleLoad> max_loads = 9;
    * 
    */
+
+  /* nullable */
   com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrDefault(
       java.lang.String key,
+      /* nullable */
       com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue);
   /**
    *
@@ -423,6 +426,8 @@ com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getMaxLoadsOrThrow(
    *
    * double total_cost = 11 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.AggregatedMetrics.total_cost is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2206
    * @return The totalCost.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AsyncModelMetadata.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AsyncModelMetadata.java
index 84beed4..13b4f3a 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AsyncModelMetadata.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/AsyncModelMetadata.java
@@ -126,6 +126,8 @@ private AsyncModelMetadata(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursRequest.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursRequest.java
index 7612c3b..24cf698 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursRequest.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursRequest.java
@@ -110,6 +110,8 @@ private BatchOptimizeToursRequest(
       }
     } 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 {
@@ -377,6 +379,8 @@ private AsyncModelConfig(
         }
       } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursResponse.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursResponse.java
index b9fb397..daccb80 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursResponse.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BatchOptimizeToursResponse.java
@@ -80,6 +80,8 @@ private BatchOptimizeToursResponse(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BreakRule.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BreakRule.java
index 3c6cbae..e0d9899 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BreakRule.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/BreakRule.java
@@ -119,6 +119,8 @@ private BreakRule(
       }
     } 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 {
@@ -383,6 +385,8 @@ private BreakRequest(
         }
       } 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 {
@@ -1829,6 +1833,8 @@ private FrequencyConstraint(
         }
       } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantity.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantity.java
index 7544a26..767c00b 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantity.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantity.java
@@ -94,6 +94,8 @@ private CapacityQuantity(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantityInterval.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantityInterval.java
index 7eb437c..22a8864 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantityInterval.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/CapacityQuantityInterval.java
@@ -102,6 +102,8 @@ private CapacityQuantityInterval(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/DistanceLimit.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/DistanceLimit.java
index c7c19e6..caf4e6f 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/DistanceLimit.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/DistanceLimit.java
@@ -101,6 +101,8 @@ private DistanceLimit(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsDestination.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsDestination.java
index ece7e58..57877ec 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsDestination.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsDestination.java
@@ -88,6 +88,8 @@ private GcsDestination(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsSource.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsSource.java
index aca51c8..dfcc8f1 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsSource.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/GcsSource.java
@@ -88,6 +88,8 @@ private GcsSource(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InjectedSolutionConstraint.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InjectedSolutionConstraint.java
index 7e2e767..0b9f636 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InjectedSolutionConstraint.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InjectedSolutionConstraint.java
@@ -125,6 +125,8 @@ private InjectedSolutionConstraint(
       }
     } 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 {
@@ -411,6 +413,8 @@ private ConstraintRelaxation(
         }
       } 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 {
@@ -654,6 +658,8 @@ private Relaxation(
           }
         } 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);
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InputConfig.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InputConfig.java
index badfa1b..62935f8 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InputConfig.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/InputConfig.java
@@ -104,6 +104,8 @@ private InputConfig(
       }
     } 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 {
@@ -754,8 +756,9 @@ public Builder mergeGcsSource(com.google.cloud.optimization.v1.GcsSource value)
       } else {
         if (sourceCase_ == 1) {
           gcsSourceBuilder_.mergeFrom(value);
+        } else {
+          gcsSourceBuilder_.setMessage(value);
         }
-        gcsSourceBuilder_.setMessage(value);
       }
       sourceCase_ = 1;
       return this;
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Location.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Location.java
index f3d5a4f..f806630 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Location.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Location.java
@@ -100,6 +100,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 {
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequest.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequest.java
index 7fbd3a0..a94061f 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequest.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequest.java
@@ -235,6 +235,8 @@ private OptimizeToursRequest(
       }
     } 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 {
@@ -1539,6 +1541,8 @@ public com.google.protobuf.ByteString getLabelBytes() {
    *
    * bool populate_travel_step_polylines = 20 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.OptimizeToursRequest.populate_travel_step_polylines is
+   *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=327
    * @return The populateTravelStepPolylines.
    */
   @java.lang.Override
@@ -5407,6 +5411,8 @@ public Builder setLabelBytes(com.google.protobuf.ByteString value) {
      *
      * bool populate_travel_step_polylines = 20 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursRequest.populate_travel_step_polylines
+     *     is deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=327
      * @return The populateTravelStepPolylines.
      */
     @java.lang.Override
@@ -5426,6 +5432,8 @@ public boolean getPopulateTravelStepPolylines() {
      *
      * bool populate_travel_step_polylines = 20 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursRequest.populate_travel_step_polylines
+     *     is deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=327
      * @param value The populateTravelStepPolylines to set.
      * @return This builder for chaining.
      */
@@ -5448,6 +5456,8 @@ public Builder setPopulateTravelStepPolylines(boolean value) {
      *
      * bool populate_travel_step_polylines = 20 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursRequest.populate_travel_step_polylines
+     *     is deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=327
      * @return This builder for chaining.
      */
     @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequestOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequestOrBuilder.java
index a62924a..d3d4bfa 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequestOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursRequestOrBuilder.java
@@ -764,6 +764,8 @@ com.google.cloud.optimization.v1.ShipmentRouteOrBuilder getRefreshDetailsRoutesO
    *
    * bool populate_travel_step_polylines = 20 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.OptimizeToursRequest.populate_travel_step_polylines is
+   *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=327
    * @return The populateTravelStepPolylines.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponse.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponse.java
index 95a8e48..a648f44 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponse.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponse.java
@@ -155,6 +155,8 @@ private OptimizeToursResponse(
       }
     } 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 {
@@ -580,6 +582,8 @@ private Metrics(
         }
       } 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 {
@@ -851,7 +855,7 @@ public int getCostsCount() {
     @java.lang.Override
     public boolean containsCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetCosts().getMap().containsKey(key);
     }
@@ -902,7 +906,7 @@ public java.util.Map getCostsMap() {
     @java.lang.Override
     public double getCostsOrDefault(java.lang.String key, double defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetCosts().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -927,7 +931,7 @@ public double getCostsOrDefault(java.lang.String key, double defaultValue) {
     @java.lang.Override
     public double getCostsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetCosts().getMap();
       if (!map.containsKey(key)) {
@@ -983,7 +987,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
       if (latestVehicleEndTime_ != null) {
         output.writeMessage(5, getLatestVehicleEndTime());
       }
-      if (totalCost_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
         output.writeDouble(6, totalCost_);
       }
       com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
@@ -1019,7 +1023,7 @@ public int getSerializedSize() {
         size +=
             com.google.protobuf.CodedOutputStream.computeMessageSize(5, getLatestVehicleEndTime());
       }
-      if (totalCost_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(6, totalCost_);
       }
       for (java.util.Map.Entry entry :
@@ -2196,7 +2200,7 @@ public int getCostsCount() {
       @java.lang.Override
       public boolean containsCosts(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetCosts().getMap().containsKey(key);
       }
@@ -2247,7 +2251,7 @@ public java.util.Map getCostsMap() {
       @java.lang.Override
       public double getCostsOrDefault(java.lang.String key, double defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map = internalGetCosts().getMap();
         return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -2272,7 +2276,7 @@ public double getCostsOrDefault(java.lang.String key, double defaultValue) {
       @java.lang.Override
       public double getCostsOrThrow(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map = internalGetCosts().getMap();
         if (!map.containsKey(key)) {
@@ -2304,7 +2308,7 @@ public Builder clearCosts() {
        */
       public Builder removeCosts(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableCosts().getMutableMap().remove(key);
         return this;
@@ -2333,7 +2337,7 @@ public java.util.Map getMutableCosts() {
        */
       public Builder putCosts(java.lang.String key, double value) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
 
         internalGetMutableCosts().getMutableMap().put(key, value);
@@ -2821,6 +2825,8 @@ public com.google.cloud.optimization.v1.OptimizeToursResponse.Metrics getMetrics
    *
    * double total_cost = 2 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.OptimizeToursResponse.total_cost is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=394
    * @return The totalCost.
    */
   @java.lang.Override
@@ -2846,7 +2852,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     for (int i = 0; i < routes_.size(); i++) {
       output.writeMessage(1, routes_.get(i));
     }
-    if (totalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
       output.writeDouble(2, totalCost_);
     }
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestLabel_)) {
@@ -2873,7 +2879,7 @@ public int getSerializedSize() {
     for (int i = 0; i < routes_.size(); i++) {
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, routes_.get(i));
     }
-    if (totalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(totalCost_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, totalCost_);
     }
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestLabel_)) {
@@ -4849,6 +4855,8 @@ public Builder clearMetrics() {
      *
      * double total_cost = 2 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursResponse.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=394
      * @return The totalCost.
      */
     @java.lang.Override
@@ -4868,6 +4876,8 @@ public double getTotalCost() {
      *
      * double total_cost = 2 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursResponse.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=394
      * @param value The totalCost to set.
      * @return This builder for chaining.
      */
@@ -4890,6 +4900,8 @@ public Builder setTotalCost(double value) {
      *
      * double total_cost = 2 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.OptimizeToursResponse.total_cost is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=394
      * @return This builder for chaining.
      */
     @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponseOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponseOrBuilder.java
index 32018f9..b78e2c9 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponseOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursResponseOrBuilder.java
@@ -280,6 +280,8 @@ public interface OptimizeToursResponseOrBuilder
    *
    * double total_cost = 2 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.OptimizeToursResponse.total_cost is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=394
    * @return The totalCost.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursValidationError.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursValidationError.java
index c6b7ade..8ec5b32 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursValidationError.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OptimizeToursValidationError.java
@@ -127,6 +127,8 @@ private OptimizeToursValidationError(
       }
     } 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 {
@@ -360,8 +362,8 @@ private FieldReference(
               }
             case 16:
               {
-                indexOrKeyCase_ = 2;
                 indexOrKey_ = input.readInt32();
+                indexOrKeyCase_ = 2;
                 break;
               }
             case 26:
@@ -401,6 +403,8 @@ private FieldReference(
         }
       } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OutputConfig.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OutputConfig.java
index 1e7fa29..5e9d5c9 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OutputConfig.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/OutputConfig.java
@@ -106,6 +106,8 @@ private OutputConfig(
       }
     } 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 {
@@ -749,8 +751,9 @@ public Builder mergeGcsDestination(com.google.cloud.optimization.v1.GcsDestinati
       } else {
         if (destinationCase_ == 1) {
           gcsDestinationBuilder_.mergeFrom(value);
+        } else {
+          gcsDestinationBuilder_.setMessage(value);
         }
-        gcsDestinationBuilder_.setMessage(value);
       }
       destinationCase_ = 1;
       return this;
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Shipment.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Shipment.java
index 835cfb0..82a189c 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Shipment.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Shipment.java
@@ -281,6 +281,8 @@ private Shipment(
       }
     } 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 {
@@ -786,8 +788,12 @@ public interface VisitRequestOrBuilder
      * map<string, .google.cloud.optimization.v1.Shipment.Load> load_demands = 12;
      * 
      */
+
+    /* nullable */
     com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
-        java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue);
+        java.lang.String key,
+        /* nullable */
+        com.google.cloud.optimization.v1.Shipment.Load defaultValue);
     /**
      *
      *
@@ -1183,6 +1189,8 @@ private VisitRequest(
         }
       } 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 {
@@ -1759,7 +1767,7 @@ public int getLoadDemandsCount() {
     @java.lang.Override
     public boolean containsLoadDemands(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLoadDemands().getMap().containsKey(key);
     }
@@ -1807,7 +1815,7 @@ public boolean containsLoadDemands(java.lang.String key) {
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
         java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -1831,7 +1839,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -2085,7 +2093,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
       if (duration_ != null) {
         output.writeMessage(7, getDuration());
       }
-      if (cost_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(cost_) != 0) {
         output.writeDouble(8, cost_);
       }
       for (int i = 0; i < demands_.size(); i++) {
@@ -2134,7 +2142,7 @@ public int getSerializedSize() {
       if (duration_ != null) {
         size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getDuration());
       }
-      if (cost_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(cost_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(8, cost_);
       }
       for (int i = 0; i < demands_.size(); i++) {
@@ -4604,7 +4612,7 @@ public int getLoadDemandsCount() {
       @java.lang.Override
       public boolean containsLoadDemands(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetLoadDemands().getMap().containsKey(key);
       }
@@ -4652,7 +4660,7 @@ public boolean containsLoadDemands(java.lang.String key) {
       public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
           java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map =
             internalGetLoadDemands().getMap();
@@ -4676,7 +4684,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
       public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
           java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map =
             internalGetLoadDemands().getMap();
@@ -4706,7 +4714,7 @@ public Builder clearLoadDemands() {
        */
       public Builder removeLoadDemands(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableLoadDemands().getMutableMap().remove(key);
         return this;
@@ -4734,11 +4742,12 @@ public Builder removeLoadDemands(java.lang.String key) {
       public Builder putLoadDemands(
           java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load 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");
         }
+
         internalGetMutableLoadDemands().getMutableMap().put(key, value);
         return this;
       }
@@ -5619,6 +5628,8 @@ private Load(
         }
       } 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 {
@@ -6296,7 +6307,7 @@ public int getLoadDemandsCount() {
   @java.lang.Override
   public boolean containsLoadDemands(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLoadDemands().getMap().containsKey(key);
   }
@@ -6344,7 +6355,7 @@ public boolean containsLoadDemands(java.lang.String key) {
   public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
       java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetLoadDemands().getMap();
@@ -6368,7 +6379,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
   public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
       java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetLoadDemands().getMap();
@@ -8648,7 +8659,7 @@ public int getLoadDemandsCount() {
     @java.lang.Override
     public boolean containsLoadDemands(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLoadDemands().getMap().containsKey(key);
     }
@@ -8698,7 +8709,7 @@ public boolean containsLoadDemands(java.lang.String key) {
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
         java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -8723,7 +8734,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -8754,7 +8765,7 @@ public Builder clearLoadDemands() {
      */
     public Builder removeLoadDemands(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLoadDemands().getMutableMap().remove(key);
       return this;
@@ -8783,11 +8794,12 @@ public Builder removeLoadDemands(java.lang.String key) {
     public Builder putLoadDemands(
         java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load 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");
       }
+
       internalGetMutableLoadDemands().getMutableMap().put(key, value);
       return this;
     }
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentModel.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentModel.java
index 812efe5..0ad0671 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentModel.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentModel.java
@@ -264,6 +264,8 @@ private ShipmentModel(
       }
     } 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 {
@@ -522,6 +524,8 @@ private DurationDistanceMatrix(
         }
       } 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 {
@@ -751,6 +755,8 @@ private Row(
           }
         } 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);
@@ -3299,6 +3305,8 @@ private PrecedenceRule(
         }
       } 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 {
@@ -4631,6 +4639,8 @@ private BreakRule(
         }
       } 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 {
@@ -4895,6 +4905,8 @@ private BreakRequest(
           }
         } 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);
@@ -6373,6 +6385,8 @@ private FrequencyConstraint(
           }
         } 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);
@@ -10436,7 +10450,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (globalEndTime_ != null) {
       output.writeMessage(6, getGlobalEndTime());
     }
-    if (globalDurationCostPerHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(globalDurationCostPerHour_) != 0) {
       output.writeDouble(7, globalDurationCostPerHour_);
     }
     for (int i = 0; i < durationDistanceMatrices_.size(); i++) {
@@ -10489,7 +10503,7 @@ public int getSerializedSize() {
     if (globalEndTime_ != null) {
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getGlobalEndTime());
     }
-    if (globalDurationCostPerHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(globalDurationCostPerHour_) != 0) {
       size +=
           com.google.protobuf.CodedOutputStream.computeDoubleSize(7, globalDurationCostPerHour_);
     }
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentOrBuilder.java
index 368d5e5..c847e49 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentOrBuilder.java
@@ -200,8 +200,12 @@ public interface ShipmentOrBuilder
    *
    * map<string, .google.cloud.optimization.v1.Shipment.Load> load_demands = 14;
    */
+
+  /* nullable */
   com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
-      java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue);
+      java.lang.String key,
+      /* nullable */
+      com.google.cloud.optimization.v1.Shipment.Load defaultValue);
   /**
    *
    *
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRoute.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRoute.java
index 37ed537..72c0ed5 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRoute.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRoute.java
@@ -365,6 +365,8 @@ private ShipmentRoute(
       }
     } 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 {
@@ -584,6 +586,8 @@ private Delay(
         }
       } 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 {
@@ -1631,8 +1635,12 @@ public interface VisitOrBuilder
      * map<string, .google.cloud.optimization.v1.Shipment.Load> load_demands = 11;
      * 
      */
+
+    /* nullable */
     com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
-        java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue);
+        java.lang.String key,
+        /* nullable */
+        com.google.cloud.optimization.v1.Shipment.Load defaultValue);
     /**
      *
      *
@@ -1885,6 +1893,8 @@ com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
      * @return Whether the delayBeforeStart field is set.
      */
     @java.lang.Deprecated
@@ -1900,6 +1910,8 @@ com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
      * @return The delayBeforeStart.
      */
     @java.lang.Deprecated
@@ -2172,6 +2184,8 @@ private Visit(
         }
       } 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 {
@@ -2371,7 +2385,7 @@ public int getLoadDemandsCount() {
     @java.lang.Override
     public boolean containsLoadDemands(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLoadDemands().getMap().containsKey(key);
     }
@@ -2419,7 +2433,7 @@ public boolean containsLoadDemands(java.lang.String key) {
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
         java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -2443,7 +2457,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
     public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadDemands().getMap();
@@ -2768,6 +2782,8 @@ public com.google.cloud.optimization.v1.CapacityQuantityOrBuilder getArrivalLoad
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
      * @return Whether the delayBeforeStart field is set.
      */
     @java.lang.Override
@@ -2786,6 +2802,8 @@ public boolean hasDelayBeforeStart() {
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
      * @return The delayBeforeStart.
      */
     @java.lang.Override
@@ -3936,7 +3954,7 @@ public int getLoadDemandsCount() {
       @java.lang.Override
       public boolean containsLoadDemands(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetLoadDemands().getMap().containsKey(key);
       }
@@ -3984,7 +4002,7 @@ public boolean containsLoadDemands(java.lang.String key) {
       public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
           java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map =
             internalGetLoadDemands().getMap();
@@ -4008,7 +4026,7 @@ public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrDefault(
       public com.google.cloud.optimization.v1.Shipment.Load getLoadDemandsOrThrow(
           java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map map =
             internalGetLoadDemands().getMap();
@@ -4038,7 +4056,7 @@ public Builder clearLoadDemands() {
        */
       public Builder removeLoadDemands(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableLoadDemands().getMutableMap().remove(key);
         return this;
@@ -4066,11 +4084,12 @@ public Builder removeLoadDemands(java.lang.String key) {
       public Builder putLoadDemands(
           java.lang.String key, com.google.cloud.optimization.v1.Shipment.Load 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");
         }
+
         internalGetMutableLoadDemands().getMutableMap().put(key, value);
         return this;
       }
@@ -5149,6 +5168,8 @@ public com.google.cloud.optimization.v1.CapacityQuantity.Builder addArrivalLoads
        * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
        * 
        *
+       * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+       *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
        * @return Whether the delayBeforeStart field is set.
        */
       @java.lang.Deprecated
@@ -5166,6 +5187,8 @@ public boolean hasDelayBeforeStart() {
        * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_start = 10 [deprecated = true];
        * 
        *
+       * @deprecated google.cloud.optimization.v1.ShipmentRoute.Visit.delay_before_start is
+       *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=1824
        * @return The delayBeforeStart.
        */
       @java.lang.Deprecated
@@ -6220,8 +6243,11 @@ public interface TransitionOrBuilder
      * map<string, .google.cloud.optimization.v1.ShipmentRoute.VehicleLoad> vehicle_loads = 11;
      * 
      */
+
+    /* nullable */
     com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoadsOrDefault(
         java.lang.String key,
+        /* nullable */
         com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue);
     /**
      *
@@ -6523,6 +6549,8 @@ private Transition(
         }
       } 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 {
@@ -7042,7 +7070,7 @@ public int getVehicleLoadsCount() {
     @java.lang.Override
     public boolean containsVehicleLoads(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetVehicleLoads().getMap().containsKey(key);
     }
@@ -7099,7 +7127,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoad
         java.lang.String key,
         com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map
           map = internalGetVehicleLoads().getMap();
@@ -7126,7 +7154,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoad
     public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoadsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map
           map = internalGetVehicleLoads().getMap();
@@ -7232,7 +7260,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
       if (travelDuration_ != null) {
         output.writeMessage(1, getTravelDuration());
       }
-      if (travelDistanceMeters_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(travelDistanceMeters_) != 0) {
         output.writeDouble(2, travelDistanceMeters_);
       }
       if (trafficInfoUnavailable_ != false) {
@@ -7273,7 +7301,7 @@ public int getSerializedSize() {
       if (travelDuration_ != null) {
         size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTravelDuration());
       }
-      if (travelDistanceMeters_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(travelDistanceMeters_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, travelDistanceMeters_);
       }
       if (trafficInfoUnavailable_ != false) {
@@ -9491,7 +9519,7 @@ public int getVehicleLoadsCount() {
       @java.lang.Override
       public boolean containsVehicleLoads(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         return internalGetVehicleLoads().getMap().containsKey(key);
       }
@@ -9548,7 +9576,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoad
           java.lang.String key,
           com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad defaultValue) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map
             map = internalGetVehicleLoads().getMap();
@@ -9575,7 +9603,7 @@ public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoad
       public com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad getVehicleLoadsOrThrow(
           java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         java.util.Map
             map = internalGetVehicleLoads().getMap();
@@ -9608,7 +9636,7 @@ public Builder clearVehicleLoads() {
        */
       public Builder removeVehicleLoads(java.lang.String key) {
         if (key == null) {
-          throw new java.lang.NullPointerException();
+          throw new NullPointerException("map key");
         }
         internalGetMutableVehicleLoads().getMutableMap().remove(key);
         return this;
@@ -9640,11 +9668,12 @@ public Builder removeVehicleLoads(java.lang.String key) {
       public Builder putVehicleLoads(
           java.lang.String key, com.google.cloud.optimization.v1.ShipmentRoute.VehicleLoad 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");
         }
+
         internalGetMutableVehicleLoads().getMutableMap().put(key, value);
         return this;
       }
@@ -10218,6 +10247,8 @@ private VehicleLoad(
         }
       } 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 {
@@ -10796,6 +10827,8 @@ private EncodedPolyline(
         }
       } 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 {
@@ -11525,6 +11558,8 @@ private Break(
         }
       } 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 {
@@ -12653,6 +12688,8 @@ private TravelStep(
         }
       } 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 {
@@ -12840,7 +12877,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
       if (duration_ != null) {
         output.writeMessage(1, getDuration());
       }
-      if (distanceMeters_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(distanceMeters_) != 0) {
         output.writeDouble(2, distanceMeters_);
       }
       if (trafficInfoUnavailable_ != false) {
@@ -12861,7 +12898,7 @@ public int getSerializedSize() {
       if (duration_ != null) {
         size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDuration());
       }
-      if (distanceMeters_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(distanceMeters_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, distanceMeters_);
       }
       if (trafficInfoUnavailable_ != false) {
@@ -14398,7 +14435,7 @@ public int getRouteCostsCount() {
   @java.lang.Override
   public boolean containsRouteCosts(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetRouteCosts().getMap().containsKey(key);
   }
@@ -14447,7 +14484,7 @@ public java.util.Map getRouteCostsMap() {
   @java.lang.Override
   public double getRouteCostsOrDefault(java.lang.String key, double defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetRouteCosts().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -14471,7 +14508,7 @@ public double getRouteCostsOrDefault(java.lang.String key, double defaultValue)
   @java.lang.Override
   public double getRouteCostsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetRouteCosts().getMap();
     if (!map.containsKey(key)) {
@@ -14716,6 +14753,8 @@ public com.google.cloud.optimization.v1.ShipmentRoute.TravelStepOrBuilder getTra
    *
    * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
    * @return Whether the vehicleDetour field is set.
    */
   @java.lang.Override
@@ -14737,6 +14776,8 @@ public boolean hasVehicleDetour() {
    *
    * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
    * @return The vehicleDetour.
    */
   @java.lang.Override
@@ -14781,6 +14822,8 @@ public com.google.protobuf.DurationOrBuilder getVehicleDetourOrBuilder() {
    * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
    * 
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is deprecated.
+   *     See google/cloud/optimization/v1/fleet_routing.proto;l=2057
    * @return Whether the delayBeforeVehicleEnd field is set.
    */
   @java.lang.Override
@@ -14801,6 +14844,8 @@ public boolean hasDelayBeforeVehicleEnd() {
    * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
    * 
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is deprecated.
+   *     See google/cloud/optimization/v1/fleet_routing.proto;l=2057
    * @return The delayBeforeVehicleEnd.
    */
   @java.lang.Override
@@ -14888,7 +14933,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     }
     com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
         output, internalGetRouteCosts(), RouteCostsDefaultEntryHolder.defaultEntry, 17);
-    if (routeTotalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(routeTotalCost_) != 0) {
       output.writeDouble(18, routeTotalCost_);
     }
     unknownFields.writeTo(output);
@@ -14953,7 +14998,7 @@ public int getSerializedSize() {
               .build();
       size += com.google.protobuf.CodedOutputStream.computeMessageSize(17, routeCosts__);
     }
-    if (routeTotalCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(routeTotalCost_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(18, routeTotalCost_);
     }
     size += unknownFields.getSerializedSize();
@@ -18004,7 +18049,7 @@ public int getRouteCostsCount() {
     @java.lang.Override
     public boolean containsRouteCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetRouteCosts().getMap().containsKey(key);
     }
@@ -18053,7 +18098,7 @@ public java.util.Map getRouteCostsMap() {
     @java.lang.Override
     public double getRouteCostsOrDefault(java.lang.String key, double defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetRouteCosts().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -18077,7 +18122,7 @@ public double getRouteCostsOrDefault(java.lang.String key, double defaultValue)
     @java.lang.Override
     public double getRouteCostsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetRouteCosts().getMap();
       if (!map.containsKey(key)) {
@@ -18108,7 +18153,7 @@ public Builder clearRouteCosts() {
      */
     public Builder removeRouteCosts(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableRouteCosts().getMutableMap().remove(key);
       return this;
@@ -18136,7 +18181,7 @@ public java.util.Map getMutableRouteCosts()
      */
     public Builder putRouteCosts(java.lang.String key, double value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
 
       internalGetMutableRouteCosts().getMutableMap().put(key, value);
@@ -19170,6 +19215,8 @@ public com.google.cloud.optimization.v1.ShipmentRoute.TravelStep.Builder addTrav
      *
      * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
      * @return Whether the vehicleDetour field is set.
      */
     @java.lang.Deprecated
@@ -19190,6 +19237,8 @@ public boolean hasVehicleDetour() {
      *
      * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
      * @return The vehicleDetour.
      */
     @java.lang.Deprecated
@@ -19407,6 +19456,8 @@ public com.google.protobuf.DurationOrBuilder getVehicleDetourOrBuilder() {
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=2057
      * @return Whether the delayBeforeVehicleEnd field is set.
      */
     @java.lang.Deprecated
@@ -19426,6 +19477,8 @@ public boolean hasDelayBeforeVehicleEnd() {
      * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
      * 
      *
+     * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is
+     *     deprecated. See google/cloud/optimization/v1/fleet_routing.proto;l=2057
      * @return The delayBeforeVehicleEnd.
      */
     @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRouteOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRouteOrBuilder.java
index 80b78c1..9e7bf03 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRouteOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentRouteOrBuilder.java
@@ -704,6 +704,8 @@ com.google.cloud.optimization.v1.ShipmentRoute.TravelStepOrBuilder getTravelStep
    *
    * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
    * @return Whether the vehicleDetour field is set.
    */
   @java.lang.Deprecated
@@ -722,6 +724,8 @@ com.google.cloud.optimization.v1.ShipmentRoute.TravelStepOrBuilder getTravelStep
    *
    * .google.protobuf.Duration vehicle_detour = 15 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.vehicle_detour is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=2052
    * @return The vehicleDetour.
    */
   @java.lang.Deprecated
@@ -756,6 +760,8 @@ com.google.cloud.optimization.v1.ShipmentRoute.TravelStepOrBuilder getTravelStep
    * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
    * 
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is deprecated.
+   *     See google/cloud/optimization/v1/fleet_routing.proto;l=2057
    * @return Whether the delayBeforeVehicleEnd field is set.
    */
   @java.lang.Deprecated
@@ -773,6 +779,8 @@ com.google.cloud.optimization.v1.ShipmentRoute.TravelStepOrBuilder getTravelStep
    * .google.cloud.optimization.v1.ShipmentRoute.Delay delay_before_vehicle_end = 16 [deprecated = true];
    * 
    *
+   * @deprecated google.cloud.optimization.v1.ShipmentRoute.delay_before_vehicle_end is deprecated.
+   *     See google/cloud/optimization/v1/fleet_routing.proto;l=2057
    * @return The delayBeforeVehicleEnd.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeIncompatibility.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeIncompatibility.java
index ce5e796..a70ac33 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeIncompatibility.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeIncompatibility.java
@@ -102,6 +102,8 @@ private ShipmentTypeIncompatibility(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeRequirement.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeRequirement.java
index aaa20f0..4045d89 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeRequirement.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/ShipmentTypeRequirement.java
@@ -112,6 +112,8 @@ private ShipmentTypeRequirement(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/SkippedShipment.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/SkippedShipment.java
index f4ac03d..6d6fbcc 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/SkippedShipment.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/SkippedShipment.java
@@ -111,6 +111,8 @@ private SkippedShipment(
       }
     } 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 {
@@ -331,6 +333,8 @@ private Reason(
         }
       } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TimeWindow.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TimeWindow.java
index b528733..796212e 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TimeWindow.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TimeWindow.java
@@ -168,6 +168,8 @@ private TimeWindow(
       }
     } 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/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TransitionAttributes.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TransitionAttributes.java
index 30fd580..ffd236f 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TransitionAttributes.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/TransitionAttributes.java
@@ -155,6 +155,8 @@ private TransitionAttributes(
       }
     } 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 {
@@ -566,10 +568,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(excludedDstTag_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 4, excludedDstTag_);
     }
-    if (cost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(cost_) != 0) {
       output.writeDouble(5, cost_);
     }
-    if (costPerKilometer_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerKilometer_) != 0) {
       output.writeDouble(6, costPerKilometer_);
     }
     if (distanceLimit_ != null) {
@@ -599,10 +601,10 @@ public int getSerializedSize() {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(excludedDstTag_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, excludedDstTag_);
     }
-    if (cost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(cost_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(5, cost_);
     }
-    if (costPerKilometer_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerKilometer_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(6, costPerKilometer_);
     }
     if (distanceLimit_ != null) {
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Vehicle.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Vehicle.java
index aa88c8f..0db6793 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Vehicle.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Vehicle.java
@@ -424,6 +424,8 @@ private Vehicle(
       }
     } 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 {
@@ -1035,6 +1037,8 @@ private LoadLimit(
         }
       } 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 {
@@ -1179,6 +1183,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);
@@ -1993,7 +1999,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
       if (softMaxLoad_ != 0L) {
         output.writeInt64(2, softMaxLoad_);
       }
-      if (costPerUnitAboveSoftMax_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(costPerUnitAboveSoftMax_) != 0) {
         output.writeDouble(3, costPerUnitAboveSoftMax_);
       }
       if (startLoadInterval_ != null) {
@@ -2017,7 +2023,7 @@ public int getSerializedSize() {
       if (softMaxLoad_ != 0L) {
         size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, softMaxLoad_);
       }
-      if (costPerUnitAboveSoftMax_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(costPerUnitAboveSoftMax_) != 0) {
         size +=
             com.google.protobuf.CodedOutputStream.computeDoubleSize(3, costPerUnitAboveSoftMax_);
       }
@@ -3374,6 +3380,8 @@ private DurationLimit(
         }
       } 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 {
@@ -5807,7 +5815,7 @@ public int getLoadLimitsCount() {
   @java.lang.Override
   public boolean containsLoadLimits(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLoadLimits().getMap().containsKey(key);
   }
@@ -5857,7 +5865,7 @@ public boolean containsLoadLimits(java.lang.String key) {
   public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault(
       java.lang.String key, com.google.cloud.optimization.v1.Vehicle.LoadLimit defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetLoadLimits().getMap();
@@ -5882,7 +5890,7 @@ public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault
   public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrThrow(
       java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetLoadLimits().getMap();
@@ -6215,7 +6223,7 @@ public int getExtraVisitDurationForVisitTypeCount() {
   @java.lang.Override
   public boolean containsExtraVisitDurationForVisitType(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetExtraVisitDurationForVisitType().getMap().containsKey(key);
   }
@@ -6269,7 +6277,7 @@ public boolean containsExtraVisitDurationForVisitType(java.lang.String key) {
   public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
       java.lang.String key, com.google.protobuf.Duration defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetExtraVisitDurationForVisitType().getMap();
@@ -6296,7 +6304,7 @@ public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
   public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrThrow(
       java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetExtraVisitDurationForVisitType().getMap();
@@ -6450,6 +6458,8 @@ public boolean getIgnore() {
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @return A list containing the breakRuleIndices.
    */
   @java.lang.Override
@@ -6469,6 +6479,8 @@ public java.util.List getBreakRuleIndicesList() {
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @return The count of breakRuleIndices.
    */
   @java.lang.Deprecated
@@ -6487,6 +6499,8 @@ public int getBreakRuleIndicesCount() {
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @param index The index of the element to return.
    * @return The breakRuleIndices at the given index.
    */
@@ -6820,16 +6834,16 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     for (int i = 0; i < endLoadIntervals_.size(); i++) {
       output.writeMessage(15, endLoadIntervals_.get(i));
     }
-    if (costPerHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerHour_) != 0) {
       output.writeDouble(16, costPerHour_);
     }
-    if (costPerTraveledHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerTraveledHour_) != 0) {
       output.writeDouble(17, costPerTraveledHour_);
     }
-    if (costPerKilometer_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerKilometer_) != 0) {
       output.writeDouble(18, costPerKilometer_);
     }
-    if (fixedCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(fixedCost_) != 0) {
       output.writeDouble(19, fixedCost_);
     }
     if (usedIfRouteIsEmpty_ != false) {
@@ -6934,16 +6948,16 @@ public int getSerializedSize() {
       size +=
           com.google.protobuf.CodedOutputStream.computeMessageSize(15, endLoadIntervals_.get(i));
     }
-    if (costPerHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerHour_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(16, costPerHour_);
     }
-    if (costPerTraveledHour_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerTraveledHour_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(17, costPerTraveledHour_);
     }
-    if (costPerKilometer_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(costPerKilometer_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(18, costPerKilometer_);
     }
-    if (fixedCost_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(fixedCost_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(19, fixedCost_);
     }
     if (usedIfRouteIsEmpty_ != false) {
@@ -10547,7 +10561,7 @@ public int getLoadLimitsCount() {
     @java.lang.Override
     public boolean containsLoadLimits(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLoadLimits().getMap().containsKey(key);
     }
@@ -10597,7 +10611,7 @@ public boolean containsLoadLimits(java.lang.String key) {
     public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault(
         java.lang.String key, com.google.cloud.optimization.v1.Vehicle.LoadLimit defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadLimits().getMap();
@@ -10622,7 +10636,7 @@ public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault
     public com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetLoadLimits().getMap();
@@ -10653,7 +10667,7 @@ public Builder clearLoadLimits() {
      */
     public Builder removeLoadLimits(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLoadLimits().getMutableMap().remove(key);
       return this;
@@ -10682,11 +10696,12 @@ public Builder removeLoadLimits(java.lang.String key) {
     public Builder putLoadLimits(
         java.lang.String key, com.google.cloud.optimization.v1.Vehicle.LoadLimit 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");
       }
+
       internalGetMutableLoadLimits().getMutableMap().put(key, value);
       return this;
     }
@@ -11701,7 +11716,7 @@ public int getExtraVisitDurationForVisitTypeCount() {
     @java.lang.Override
     public boolean containsExtraVisitDurationForVisitType(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetExtraVisitDurationForVisitType().getMap().containsKey(key);
     }
@@ -11755,7 +11770,7 @@ public boolean containsExtraVisitDurationForVisitType(java.lang.String key) {
     public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
         java.lang.String key, com.google.protobuf.Duration defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetExtraVisitDurationForVisitType().getMap();
@@ -11782,7 +11797,7 @@ public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
     public com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrThrow(
         java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetExtraVisitDurationForVisitType().getMap();
@@ -11815,7 +11830,7 @@ public Builder clearExtraVisitDurationForVisitType() {
      */
     public Builder removeExtraVisitDurationForVisitType(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableExtraVisitDurationForVisitType().getMutableMap().remove(key);
       return this;
@@ -11846,11 +11861,12 @@ public Builder removeExtraVisitDurationForVisitType(java.lang.String key) {
     public Builder putExtraVisitDurationForVisitType(
         java.lang.String key, com.google.protobuf.Duration 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");
       }
+
       internalGetMutableExtraVisitDurationForVisitType().getMutableMap().put(key, value);
       return this;
     }
@@ -12285,6 +12301,8 @@ private void ensureBreakRuleIndicesIsMutable() {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @return A list containing the breakRuleIndices.
      */
     @java.lang.Deprecated
@@ -12305,6 +12323,8 @@ public java.util.List getBreakRuleIndicesList() {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @return The count of breakRuleIndices.
      */
     @java.lang.Deprecated
@@ -12323,6 +12343,8 @@ public int getBreakRuleIndicesCount() {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @param index The index of the element to return.
      * @return The breakRuleIndices at the given index.
      */
@@ -12342,6 +12364,8 @@ public int getBreakRuleIndices(int index) {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @param index The index to set the value at.
      * @param value The breakRuleIndices to set.
      * @return This builder for chaining.
@@ -12365,6 +12389,8 @@ public Builder setBreakRuleIndices(int index, int value) {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @param value The breakRuleIndices to add.
      * @return This builder for chaining.
      */
@@ -12387,6 +12413,8 @@ public Builder addBreakRuleIndices(int value) {
      *
      * repeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @param values The breakRuleIndices to add.
      * @return This builder for chaining.
      */
@@ -12409,6 +12437,8 @@ public Builder addAllBreakRuleIndices(java.lang.Iterablerepeated int32 break_rule_indices = 29 [deprecated = true];
      *
+     * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+     *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
      * @return This builder for chaining.
      */
     @java.lang.Deprecated
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/VehicleOrBuilder.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/VehicleOrBuilder.java
index 238bf3c..5a0e3b6 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/VehicleOrBuilder.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/VehicleOrBuilder.java
@@ -680,8 +680,12 @@ public interface VehicleOrBuilder
    * map<string, .google.cloud.optimization.v1.Vehicle.LoadLimit> load_limits = 30;
    * 
    */
+
+  /* nullable */
   com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault(
-      java.lang.String key, com.google.cloud.optimization.v1.Vehicle.LoadLimit defaultValue);
+      java.lang.String key,
+      /* nullable */
+      com.google.cloud.optimization.v1.Vehicle.LoadLimit defaultValue);
   /**
    *
    *
@@ -981,8 +985,12 @@ com.google.cloud.optimization.v1.Vehicle.LoadLimit getLoadLimitsOrDefault(
    * map<string, .google.protobuf.Duration> extra_visit_duration_for_visit_type = 24;
    * 
    */
+
+  /* nullable */
   com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
-      java.lang.String key, com.google.protobuf.Duration defaultValue);
+      java.lang.String key,
+      /* nullable */
+      com.google.protobuf.Duration defaultValue);
   /**
    *
    *
@@ -1102,6 +1110,8 @@ com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @return A list containing the breakRuleIndices.
    */
   @java.lang.Deprecated
@@ -1118,6 +1128,8 @@ com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @return The count of breakRuleIndices.
    */
   @java.lang.Deprecated
@@ -1134,6 +1146,8 @@ com.google.protobuf.Duration getExtraVisitDurationForVisitTypeOrDefault(
    *
    * repeated int32 break_rule_indices = 29 [deprecated = true];
    *
+   * @deprecated google.cloud.optimization.v1.Vehicle.break_rule_indices is deprecated. See
+   *     google/cloud/optimization/v1/fleet_routing.proto;l=1379
    * @param index The index of the element to return.
    * @return The breakRuleIndices at the given index.
    */
diff --git a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Waypoint.java b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Waypoint.java
index 66e0c83..de0b987 100644
--- a/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Waypoint.java
+++ b/proto-google-cloud-optimization-v1/src/main/java/com/google/cloud/optimization/v1/Waypoint.java
@@ -109,6 +109,8 @@ private Waypoint(
       }
     } 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 {
@@ -840,8 +842,9 @@ public Builder mergeLocation(com.google.cloud.optimization.v1.Location value) {
       } else {
         if (locationTypeCase_ == 1) {
           locationBuilder_.mergeFrom(value);
+        } else {
+          locationBuilder_.setMessage(value);
         }
-        locationBuilder_.setMessage(value);
       }
       locationTypeCase_ = 1;
       return this;
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 6d2dbea..b371c71 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -29,7 +29,7 @@
     
       com.google.cloud
       google-cloud-optimization
-      0.1.1
+      0.1.2
     
     
     
diff --git a/samples/pom.xml b/samples/pom.xml
index bfb97b8..19a843e 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -46,7 +46,7 @@
       
         org.sonatype.plugins
         nexus-staging-maven-plugin
-        1.6.12
+        1.6.13
         
           true
         
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 4f14088..0790e9f 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
     
       com.google.cloud
       google-cloud-optimization
-      0.1.2
+      1.0.0
     
     
 
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 06cfa0f..1de8918 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -32,7 +32,7 @@
       
         com.google.cloud
         libraries-bom
-        25.1.0
+        25.3.0
         pom
         import
       
@@ -43,7 +43,7 @@
     
       com.google.cloud
       google-cloud-optimization
-      0.1.1
+      0.1.2
     
     
       com.google.cloud
diff --git a/versions.txt b/versions.txt
index 4462adf..8ca1918 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,6 +1,6 @@
 # Format:
 # module:released-version:current-version
 
-google-cloud-optimization:0.1.2:0.1.2
-proto-google-cloud-optimization-v1:0.1.2:0.1.2
-grpc-google-cloud-optimization-v1:0.1.2:0.1.2
+google-cloud-optimization:1.0.0:1.0.0
+proto-google-cloud-optimization-v1:1.0.0:1.0.0
+grpc-google-cloud-optimization-v1:1.0.0:1.0.0