diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
new file mode 100644
index 0000000..3473042
--- /dev/null
+++ b/.github/.OwlBot.lock.yaml
@@ -0,0 +1,16 @@
+# 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.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+docker:
+  image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest
+  digest: sha256:df8d7b2cc0dbc65871e7edd86601901a0612b272fa3f7f0eb590c5c53aa5f92e
diff --git a/synth.py b/.github/.OwlBot.yaml
similarity index 64%
rename from synth.py
rename to .github/.OwlBot.yaml
index cb1a283..5d9a9d8 100644
--- a/synth.py
+++ b/.github/.OwlBot.yaml
@@ -1,4 +1,4 @@
-# Copyright 2019 Google LLC
+# Copyright 2021 Google LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -11,14 +11,6 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-"""This script is used to synthesize generated parts of this library."""
 
-import synthtool.languages.java as java
-
-java.common_templates(excludes=[
-    "README.md",
-    "java.header",
-    "checkstyle.xml",
-    "license-checks.xml",
-    ".github/workflows/samples.yaml",
-])
+docker:
+  image: "gcr.io/cloud-devrel-public-resources/owlbot-java:latest"
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index d7a51c2..fe674a0 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -21,7 +21,7 @@ If you are still having issues, please include as much information as possible:
    General, Core, and Other are also allowed as types
 2. OS type and version:
 3. Java version:
-4. google-http-client version(s):
+4.  version(s):
 
 #### Steps to reproduce
 
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index f36e6e5..a4b083e 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,3 +5,6 @@ Thank you for opening a Pull Request! Before submitting your PR, there are a few
 - [ ] Appropriate docs were updated (if necessary)
 
 Fixes #<issue_number_goes_here> ☕️
+
+If you write sample code, please follow the [samples format](
+https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md).
diff --git a/.github/release-please.yml b/.github/release-please.yml
index cf39204..202596e 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -6,3 +6,7 @@ branches:
     handleGHRelease: true
     releaseType: java-lts
     branch: 1.39.2-sp
+  - bumpMinorPreMajor: true
+    handleGHRelease: true
+    releaseType: java-backport
+    branch: 1.40.x
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index a1781ed..62199c9 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -13,7 +13,6 @@ branchProtectionRules:
       - windows
       - dependencies (8)
       - dependencies (11)
-      - lint
       - clirr
       - cla/google
   - pattern: 1.39.2-sp
@@ -30,6 +29,20 @@ branchProtectionRules:
       - lint
       - clirr
       - cla/google
+  - pattern: 1.40.x
+    isAdminEnforced: true
+    requiredApprovingReviewCount: 1
+    requiresCodeOwnerReviews: true
+    requiresStrictStatusChecks: false
+    requiredStatusCheckContexts:
+      - units (8)
+      - units (11)
+      - windows
+      - dependencies (8)
+      - dependencies (11)
+      - lint
+      - clirr
+      - cla/google
 permissionRules:
   - team: yoshi-admins
     permission: admin
diff --git a/.github/workflows/approve-readme.yaml b/.github/workflows/approve-readme.yaml
index 7513aca..f5fc7d5 100644
--- a/.github/workflows/approve-readme.yaml
+++ b/.github/workflows/approve-readme.yaml
@@ -1,3 +1,18 @@
+# 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.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Github action job to test core java library features on
+# downstream client libraries before they are released.
 on:
   pull_request:
 name: auto-merge-readme
@@ -6,7 +21,7 @@ jobs:
     runs-on: ubuntu-latest
     if: github.repository_owner == 'googleapis' && github.head_ref == 'autosynth-readme'
     steps:
-      - uses: actions/github-script@v3
+      - uses: actions/github-script@v6
         with:
           github-token: ${{secrets.YOSHI_APPROVER_TOKEN}}
           script: |
diff --git a/.github/workflows/auto-release.yaml b/.github/workflows/auto-release.yaml
index 9b4fd4d..7a106d0 100644
--- a/.github/workflows/auto-release.yaml
+++ b/.github/workflows/auto-release.yaml
@@ -1,3 +1,18 @@
+# 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.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Github action job to test core java library features on
+# downstream client libraries before they are released.
 on:
   pull_request:
 name: auto-release
@@ -6,7 +21,7 @@ jobs:
     runs-on: ubuntu-latest
     if: contains(github.head_ref, 'release-please')
     steps:
-    - uses: actions/github-script@v3
+    - uses: actions/github-script@v6
       with:
         github-token: ${{secrets.YOSHI_APPROVER_TOKEN}}
         debug: true
@@ -16,13 +31,13 @@ jobs:
             return;
           }
 
-          // only approve PRs like "chore: release <release version>"
-          if ( !context.payload.pull_request.title.startsWith("chore: release") ) {
+          // only approve PRs like "chore(main): release <release version>"
+          if (  !context.payload.pull_request.title.startsWith("chore(main): release") ) {
             return;
           }
 
           // only approve PRs with pom.xml and versions.txt changes
-          const filesPromise = github.pulls.listFiles.endpoint({
+          const filesPromise = github.rest.pulls.listFiles.endpoint({
             owner: context.repo.owner,
             repo: context.repo.repo,
             pull_number: context.payload.pull_request.number,
@@ -54,7 +69,7 @@ jobs:
             return;
           }
 
-          const promise = github.pulls.list.endpoint({
+          const promise = github.rest.pulls.list.endpoint({
             owner: context.repo.owner,
             repo: context.repo.repo,
             state: 'open'
@@ -71,7 +86,7 @@ jobs:
           }
 
           // approve release PR
-          await github.pulls.createReview({
+          await github.rest.pulls.createReview({
             owner: context.repo.owner,
             repo: context.repo.repo,
             body: 'Rubber stamped release!',
@@ -80,7 +95,7 @@ jobs:
           });
 
           // attach kokoro:force-run and automerge labels
-          await github.issues.addLabels({
+          await github.rest.issues.addLabels({
             owner: context.repo.owner,
             repo: context.repo.repo,
             issue_number: context.payload.pull_request.number,
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 2425d72..83ef7f9 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -1,3 +1,18 @@
+# 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.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Github action job to test core java library features on
+# downstream client libraries before they are released.
 on:
   push:
     branches:
@@ -8,14 +23,12 @@ jobs:
   units:
     runs-on: ubuntu-latest
     strategy:
+      fail-fast: false
       matrix:
         java: [8, 11, 17]
     steps:
-    - uses: actions/checkout@v2
-    - uses: stCarolas/setup-maven@v4
-      with:
-        maven-version: 3.8.1
-    - uses: actions/setup-java@v2
+    - uses: actions/checkout@v3
+    - uses: actions/setup-java@v3
       with:
         distribution: zulu
         java-version: ${{matrix.java}}
@@ -26,11 +39,8 @@ jobs:
   windows:
     runs-on: windows-latest
     steps:
-    - uses: actions/checkout@v2
-    - uses: stCarolas/setup-maven@v4
-      with:
-        maven-version: 3.8.1
-    - uses: actions/setup-java@v2
+    - uses: actions/checkout@v3
+    - uses: actions/setup-java@v3
       with:
         distribution: zulu
         java-version: 8
@@ -44,11 +54,8 @@ jobs:
       matrix:
         java: [8, 11, 17]
     steps:
-    - uses: actions/checkout@v2
-    - uses: stCarolas/setup-maven@v4
-      with:
-        maven-version: 3.8.1
-    - uses: actions/setup-java@v2
+    - uses: actions/checkout@v3
+    - uses: actions/setup-java@v3
       with:
         distribution: zulu
         java-version: ${{matrix.java}}
@@ -57,14 +64,11 @@ jobs:
   lint:
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v2
-    - uses: stCarolas/setup-maven@v4
-      with:
-        maven-version: 3.8.1
-    - uses: actions/setup-java@v2
+    - uses: actions/checkout@v3
+    - uses: actions/setup-java@v3
       with:
         distribution: zulu
-        java-version: 8
+        java-version: 11
     - run: java -version
     - run: .kokoro/build.sh
       env:
@@ -72,11 +76,8 @@ jobs:
   clirr:
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v2
-    - uses: stCarolas/setup-maven@v4
-      with:
-        maven-version: 3.8.1
-    - uses: actions/setup-java@v2
+    - uses: actions/checkout@v3
+    - uses: actions/setup-java@v3
       with:
         distribution: zulu
         java-version: 8
diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml
new file mode 100644
index 0000000..1366d24
--- /dev/null
+++ b/.github/workflows/downstream.yaml
@@ -0,0 +1,144 @@
+on:
+  pull_request:
+    types: [ labeled ]
+    branches:
+    - main
+name: downstream
+jobs:
+  dependencies:
+    if: ${{ github.event.label.name == 'downstream-check:run' }}
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        java: [8]
+        repo:
+        # This list needs to be updated manually until an automated solution is in place.
+        - accessapproval
+        - accesscontextmanager
+        - aiplatform
+        - analytics-admin
+        - analytics-data
+        - api-gateway
+        - apigee-connect
+        - appengine-admin
+        - area120-tables
+        - artifact-registry
+        - asset
+        - assured-workloads
+        - automl
+        - bigquery
+        - bigqueryconnection
+        - bigquerydatatransfer
+        - bigquerymigration
+        - bigqueryreservation
+        - bigtable
+        - billing
+        - billingbudgets
+        - binary-authorization
+        - channel
+        - cloudbuild
+        - compute
+        - contact-center-insights
+        - container
+        - containeranalysis
+        - data-fusion
+        - datacatalog
+        - dataflow
+        - datalabeling
+        - dataproc
+        - dataproc-metastore
+        - datastore
+        - datastream
+        - debugger-client
+        - deploy
+        - dialogflow
+        - dialogflow-cx
+        - dlp
+        - dms
+        - dns
+        - document-ai
+        - domains
+        - errorreporting
+        - essential-contacts
+        - eventarc
+        - filestore
+        - firestore
+        - functions
+        - game-servers
+        - gke-connect-gateway
+        - gkehub
+        - gsuite-addons
+        - iam-admin
+        - iamcredentials
+        - iot
+        - kms
+        - language
+        - life-sciences
+        - logging
+        - logging-logback
+        - managed-identities
+        - mediatranslation
+        - memcache
+        - monitoring
+        - monitoring-dashboards
+        - network-management
+        - network-security
+        - networkconnectivity
+        - notebooks
+        - orchestration-airflow
+        - orgpolicy
+        - os-config
+        - os-login
+        - phishingprotection
+        - policy-troubleshooter
+        - private-catalog
+        - profiler
+        - pubsublite
+        - recaptchaenterprise
+        - recommendations-ai
+        - recommender
+        - redis
+        - resource-settings
+        - resourcemanager
+        - retail
+        - scheduler
+        - secretmanager
+        - security-private-ca
+        - securitycenter
+        - securitycenter-settings
+        - service-control
+        - service-management
+        - service-usage
+        - servicedirectory
+        - shell
+        - spanner
+        - spanner-jdbc
+        - speech
+        - storage
+        - storage-nio
+        - storage-transfer
+        - talent
+        - tasks
+        - texttospeech
+        - tpu
+        - trace
+        - translate
+        - video-intelligence
+        - video-transcoder
+        - vision
+        - vpcaccess
+        - webrisk
+        - websecurityscanner
+        - workflow-executions
+        - workflows
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v3
+      with:
+        distribution: zulu
+        java-version: ${{matrix.java}}
+    - run: java -version
+    - run: sudo apt-get update -y
+    - run: sudo apt-get install libxml2-utils
+    - run: .kokoro/downstream-client-library-check.sh google-http-client-bom ${{matrix.repo}}
diff --git a/.kokoro/build.bat b/.kokoro/build.bat
index 05826ad..067cf4a 100644
--- a/.kokoro/build.bat
+++ b/.kokoro/build.bat
@@ -1,3 +1,18 @@
+:: 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.
+:: You may obtain a copy of the License at
+::
+::      http://www.apache.org/licenses/LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+:: Github action job to test core java library features on
+:: downstream client libraries before they are released.
 :: See documentation in type-shell-output.bat
 
 "C:\Program Files\Git\bin\bash.exe" %~dp0build.sh
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 0ab303f..f0b8683 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -47,15 +47,15 @@ set +e
 
 case ${JOB_TYPE} in
 test)
-    mvn test -B -Dclirr.skip=true -Denforcer.skip=true
+    mvn test -B -ntp -Dclirr.skip=true -Denforcer.skip=true
     RETURN_CODE=$?
     ;;
 lint)
-    mvn com.coveo:fmt-maven-plugin:check
+    mvn com.coveo:fmt-maven-plugin:check -B -ntp
     RETURN_CODE=$?
     ;;
 javadoc)
-    mvn javadoc:javadoc javadoc:test-javadoc
+    mvn javadoc:javadoc javadoc:test-javadoc -B -ntp
     RETURN_CODE=$?
     ;;
 integration)
@@ -69,6 +69,11 @@ integration)
       verify
     RETURN_CODE=$?
     ;;
+graalvm)
+    # 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.
@@ -86,7 +91,6 @@ samples)
 
         pushd ${SAMPLES_DIR}
         mvn -B \
-          -Penable-samples \
           -ntp \
           -DtrimStackTrace=false \
           -Dclirr.skip=true \
@@ -100,7 +104,7 @@ samples)
     fi
     ;;
 clirr)
-    mvn -B -Denforcer.skip=true clirr:check
+    mvn -B -ntp -Denforcer.skip=true clirr:check
     RETURN_CODE=$?
     ;;
 *)
diff --git a/.kokoro/dependencies.sh b/.kokoro/dependencies.sh
index 9a5105d..d7476cf 100755
--- a/.kokoro/dependencies.sh
+++ b/.kokoro/dependencies.sh
@@ -38,15 +38,13 @@ function determineMavenOpts() {
       | sed -E 's/^(1\.[0-9]\.0).*$/\1/g'
   )
 
-  case $javaVersion in
-    "17")
+  if [[ $javaVersion == 17* ]]
+    then
       # MaxPermSize is no longer supported as of jdk 17
       echo -n "-Xmx1024m"
-      ;;
-    *)
+  else
       echo -n "-Xmx1024m -XX:MaxPermSize=128m"
-      ;;
-  esac
+  fi
 }
 
 export MAVEN_OPTS=$(determineMavenOpts)
diff --git a/.kokoro/downstream-client-library-check.sh b/.kokoro/downstream-client-library-check.sh
new file mode 100755
index 0000000..852db9e
--- /dev/null
+++ b/.kokoro/downstream-client-library-check.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+# 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.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eo pipefail
+# Display commands being run.
+set -x
+
+
+CORE_LIBRARY_ARTIFACT=$1
+CLIENT_LIBRARY=$2
+## Get the directory of the build script
+scriptDir="$(realpath "$(dirname "${BASH_SOURCE[0]}")")"
+## cd to the parent directory, i.e. the root of the git repo
+cd "${scriptDir}"/..
+
+# Make java core library artifacts available for 'mvn verify' at the bottom
+mvn verify install -B -V -ntp -fae \
+-DskipTests=true \
+-Dmaven.javadoc.skip=true \
+-Dgcloud.download.skip=true \
+-Denforcer.skip=true
+
+# Read the current version of this java core library in the POM. Example version: '0.116.1-alpha-SNAPSHOT'
+CORE_VERSION_POM=pom.xml
+# Namespace (xmlns) prevents xmllint from specifying tag names in XPath
+CORE_VERSION=$(sed -e 's/xmlns=".*"//' ${CORE_VERSION_POM} | xmllint --xpath '/project/version/text()' -)
+
+if [ -z "${CORE_VERSION}" ]; then
+  echo "Version is not found in ${CORE_VERSION_POM}"
+  exit 1
+fi
+echo "Version: ${CORE_VERSION}"
+
+# Round 1
+# Check this java core library against HEAD of java-shared dependencies
+
+git clone "https://github.com/googleapis/java-shared-dependencies.git" --depth=1
+pushd java-shared-dependencies/first-party-dependencies
+
+# replace version
+xmllint --shell <(cat pom.xml) << EOF
+setns x=http://maven.apache.org/POM/4.0.0
+cd .//x:artifactId[text()="${CORE_LIBRARY_ARTIFACT}"]
+cd ../x:version
+set ${CORE_VERSION}
+save pom.xml
+EOF
+
+# run dependencies script
+cd ..
+mvn verify install -B -V -ntp -fae \
+-DskipTests=true \
+-Dmaven.javadoc.skip=true \
+-Dgcloud.download.skip=true \
+-Denforcer.skip=true
+
+SHARED_DEPS_VERSION_POM=pom.xml
+# Namespace (xmlns) prevents xmllint from specifying tag names in XPath
+SHARED_DEPS_VERSION=$(sed -e 's/xmlns=".*"//' ${SHARED_DEPS_VERSION_POM} | xmllint --xpath '/project/version/text()' -)
+
+if [ -z "${SHARED_DEPS_VERSION}" ]; then
+  echo "Version is not found in ${SHARED_DEPS_VERSION_POM}"
+  exit 1
+fi
+
+# Round 2
+
+# Check this BOM against java client libraries
+git clone "https://github.com/googleapis/java-${CLIENT_LIBRARY}.git" --depth=1
+pushd java-"${CLIENT_LIBRARY}"
+
+if [[ $CLIENT_LIBRARY == "bigtable" ]]; then
+  pushd google-cloud-bigtable-deps-bom
+fi
+
+# replace version
+xmllint --shell <(cat pom.xml) << EOF
+setns x=http://maven.apache.org/POM/4.0.0
+cd .//x:artifactId[text()="google-cloud-shared-dependencies"]
+cd ../x:version
+set ${SHARED_DEPS_VERSION}
+save pom.xml
+EOF
+
+if [[ $CLIENT_LIBRARY == "bigtable" ]]; then
+  popd
+fi
+
+mvn verify install -B -V -ntp -fae \
+-Dmaven.javadoc.skip=true \
+-Dgcloud.download.skip=true \
+-Denforcer.skip=true
diff --git a/.kokoro/nightly/java11-integration.cfg b/.kokoro/nightly/java11-integration.cfg
new file mode 100644
index 0000000..58049cc
--- /dev/null
+++ b/.kokoro/nightly/java11-integration.cfg
@@ -0,0 +1,37 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+  key: "TRAMPOLINE_IMAGE"
+  value: "gcr.io/cloud-devrel-public-resources/java11014"
+}
+
+env_vars: {
+  key: "JOB_TYPE"
+  value: "integration"
+}
+# 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: "ENABLE_FLAKYBOT"
+  value: "true"
+}
+
+env_vars: {
+  key: "GOOGLE_APPLICATION_CREDENTIALS"
+  value: "secret_manager/java-it-service-account"
+}
+
+env_vars: {
+  key: "SECRET_MANAGER_KEYS"
+  value: "java-it-service-account"
+}
diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg
new file mode 100644
index 0000000..4c7225e
--- /dev/null
+++ b/.kokoro/presubmit/graalvm-native.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/graalvm"
+}
+
+env_vars: {
+  key: "JOB_TYPE"
+  value: "graalvm"
+}
+
+# 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"
+}
diff --git a/.kokoro/release/publish_javadoc11.sh b/.kokoro/release/publish_javadoc11.sh
index 7c5f7f6..62ffd07 100755
--- a/.kokoro/release/publish_javadoc11.sh
+++ b/.kokoro/release/publish_javadoc11.sh
@@ -36,13 +36,9 @@ mvn clean install -B -q -DskipTests=true
 export NAME=google-http-client
 export VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3)
 
-# V3 generates docfx yml from javadoc
-# generate yml
-mvn clean site -B -q -P docFX
-
-# copy README to docfx-yml dir and rename index.md
-cp README.md target/docfx-yml/index.md
-# copy CHANGELOG to docfx-yml dir and rename history.md
+# cloud RAD generation
+mvn clean javadoc:aggregate -B -q -P docFX
+# include CHANGELOG
 cp CHANGELOG.md target/docfx-yml/history.md
 
 pushd target/docfx-yml
diff --git a/.repo-metadata.json b/.repo-metadata.json
index 8413b68..ab8e8d5 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -1,10 +1,11 @@
 {
-  "name": "google-http-client",
+  "api_shortname": "google-http-client",
   "name_pretty": "Google HTTP Java Client",
   "client_documentation": "https://cloud.google.com/java/docs/reference/google-http-client/latest/history",
-  "release_level": "ga",
+  "release_level": "stable",
   "language": "java",
   "repo": "googleapis/google-http-java-client",
   "repo_short": "google-http-java-client",
+  "library_type": "CORE",
   "distribution_name": "com.google.http-client:google-http-client"
 }
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9c3c2da..03f5a60 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,84 @@
 # Changelog
 
+### [1.41.5](https://github.com/googleapis/google-http-java-client/compare/v1.41.4...v1.41.5) (2022-03-21)
+
+
+### Documentation
+
+* **deps:** libraries-bom 24.4.0 release ([#1596](https://github.com/googleapis/google-http-java-client/issues/1596)) ([327fe12](https://github.com/googleapis/google-http-java-client/commit/327fe12a122ebb4022a2da55694217233a2badaf))
+
+
+### Dependencies
+
+* update actions/checkout action to v3 ([#1593](https://github.com/googleapis/google-http-java-client/issues/1593)) ([92002c0](https://github.com/googleapis/google-http-java-client/commit/92002c07d60b738657383e2484f56abc1cde6920))
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.13.2 ([#1598](https://github.com/googleapis/google-http-java-client/issues/1598)) ([41ac833](https://github.com/googleapis/google-http-java-client/commit/41ac833249e18cbbd304f825b12202e51bebec85))
+* update project.appengine.version to v2 (major) ([#1597](https://github.com/googleapis/google-http-java-client/issues/1597)) ([c06cf95](https://github.com/googleapis/google-http-java-client/commit/c06cf95f9b1be77e2229c3b2f78ece0789eaec15))
+
+### [1.41.4](https://github.com/googleapis/google-http-java-client/compare/v1.41.3...v1.41.4) (2022-02-11)
+
+
+### Dependencies
+
+* update dependency com.google.code.gson:gson to v2.9.0 ([#1582](https://github.com/googleapis/google-http-java-client/issues/1582)) ([8772778](https://github.com/googleapis/google-http-java-client/commit/877277821dad65545518b06123e6e7b9801147a1))
+
+### [1.41.3](https://github.com/googleapis/google-http-java-client/compare/v1.41.2...v1.41.3) (2022-02-09)
+
+
+### Dependencies
+
+* update dependency com.google.protobuf:protobuf-java to v3.19.4 ([#1568](https://github.com/googleapis/google-http-java-client/issues/1568)) ([416e5d7](https://github.com/googleapis/google-http-java-client/commit/416e5d7146ad145e3d5140110144b5119c6126df))
+* update dependency com.puppycrawl.tools:checkstyle to v9.3 ([#1569](https://github.com/googleapis/google-http-java-client/issues/1569)) ([9c7ade8](https://github.com/googleapis/google-http-java-client/commit/9c7ade85eceb2dc348e1f9aa0637d0509d634160))
+* update project.opencensus.version to v0.31.0 ([#1563](https://github.com/googleapis/google-http-java-client/issues/1563)) ([0f9d2b7](https://github.com/googleapis/google-http-java-client/commit/0f9d2b77ae23ea143b5b8caaa21af6548ca92345))
+
+### [1.41.2](https://github.com/googleapis/google-http-java-client/compare/v1.41.1...v1.41.2) (2022-01-27)
+
+
+### Dependencies
+
+* **java:** update actions/github-script action to v5 ([#1339](https://github.com/googleapis/google-http-java-client/issues/1339)) ([#1561](https://github.com/googleapis/google-http-java-client/issues/1561)) ([c5dbec1](https://github.com/googleapis/google-http-java-client/commit/c5dbec1bbfb5f26f952cb8d80f607327594ab7a8))
+* update dependency com.google.errorprone:error_prone_annotations to v2.11.0 ([#1560](https://github.com/googleapis/google-http-java-client/issues/1560)) ([d9609b0](https://github.com/googleapis/google-http-java-client/commit/d9609b00089952d816deffa178640bfcae1f2c3a))
+
+### [1.41.1](https://github.com/googleapis/google-http-java-client/compare/v1.41.0...v1.41.1) (2022-01-21)
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.13.1 ([#1527](https://github.com/googleapis/google-http-java-client/issues/1527)) ([7750398](https://github.com/googleapis/google-http-java-client/commit/7750398d6f4d6e447bfe078092f5cb146f747e50))
+* update dependency com.google.protobuf:protobuf-java to v3.19.3 ([#1549](https://github.com/googleapis/google-http-java-client/issues/1549)) ([50c0765](https://github.com/googleapis/google-http-java-client/commit/50c0765f1eadbf7aef2dccf5f78ab62e2533c6f6))
+* update dependency com.puppycrawl.tools:checkstyle to v9.2.1 ([#1532](https://github.com/googleapis/google-http-java-client/issues/1532)) ([e13eebd](https://github.com/googleapis/google-http-java-client/commit/e13eebd288afbde3aa7bdc0229c2d0db90ebbd4c))
+* update dependency kr.motd.maven:os-maven-plugin to v1.7.0 ([#1547](https://github.com/googleapis/google-http-java-client/issues/1547)) ([8df0dbe](https://github.com/googleapis/google-http-java-client/commit/8df0dbe53521e918985e8f4882392cd2e0a0a1c3))
+* update dependency org.apache.felix:maven-bundle-plugin to v5 ([#1548](https://github.com/googleapis/google-http-java-client/issues/1548)) ([ac10b6c](https://github.com/googleapis/google-http-java-client/commit/ac10b6c9fbe4986b8bf130d9f83ae77e84d74e5f))
+* update project.appengine.version to v1.9.94 ([#1557](https://github.com/googleapis/google-http-java-client/issues/1557)) ([05c78f4](https://github.com/googleapis/google-http-java-client/commit/05c78f4bee92cc501aa084ad970ed6ac9c0e0444))
+* update project.opencensus.version to v0.30.0 ([#1526](https://github.com/googleapis/google-http-java-client/issues/1526)) ([318e54a](https://github.com/googleapis/google-http-java-client/commit/318e54ae9be6bfeb4f5af0af0cb954031d95d1f9))
+
+## [1.41.0](https://www.github.com/googleapis/google-http-java-client/compare/v1.40.1...v1.41.0) (2022-01-05)
+
+
+### Features
+
+* add AttemptCount to HttpResponseException ([#1505](https://www.github.com/googleapis/google-http-java-client/issues/1505)) ([ea0f6c0](https://www.github.com/googleapis/google-http-java-client/commit/ea0f6c0f58e8abffae1362feb344a9309d6d814e))
+* next release from main branch is 1.41.0 ([#1478](https://www.github.com/googleapis/google-http-java-client/issues/1478)) ([3ad4831](https://www.github.com/googleapis/google-http-java-client/commit/3ad4831da00579f534ff7eb7de3a0386068902ba))
+
+
+### Bug Fixes
+
+* **java:** add -ntp flag to native image testing command ([#1299](https://www.github.com/googleapis/google-http-java-client/issues/1299)) ([#1522](https://www.github.com/googleapis/google-http-java-client/issues/1522)) ([39f63c3](https://www.github.com/googleapis/google-http-java-client/commit/39f63c3ea255fe256391567e66ada7b4122b16f6))
+* **java:** java 17 dependency arguments ([#1266](https://www.github.com/googleapis/google-http-java-client/issues/1266)) ([#1489](https://www.github.com/googleapis/google-http-java-client/issues/1489)) ([4a26e18](https://www.github.com/googleapis/google-http-java-client/commit/4a26e1881075a4f361ec746c2444111c911a8d9f))
+
+
+### Dependencies
+
+* update dependency com.coveo:fmt-maven-plugin to v2.12 ([#1487](https://www.github.com/googleapis/google-http-java-client/issues/1487)) ([8b1b8f2](https://www.github.com/googleapis/google-http-java-client/commit/8b1b8f280774115d0521e0f5eada6dd0ef995ca2))
+* update dependency com.google.code.gson:gson to v2.8.9 ([#1492](https://www.github.com/googleapis/google-http-java-client/issues/1492)) ([6615933](https://www.github.com/googleapis/google-http-java-client/commit/6615933e3162969f16d8a0d887afe9f4011e9e5c))
+* update dependency com.google.errorprone:error_prone_annotations to v2.10.0 ([#1498](https://www.github.com/googleapis/google-http-java-client/issues/1498)) ([a6a73c2](https://www.github.com/googleapis/google-http-java-client/commit/a6a73c25104aa2074b0a2bcf021513f943c727d4))
+* update dependency com.google.protobuf:protobuf-java to v3.19.1 ([#1488](https://www.github.com/googleapis/google-http-java-client/issues/1488)) ([24e6c51](https://www.github.com/googleapis/google-http-java-client/commit/24e6c51112e42f12701b5213a4c5f96466d3f7e2))
+* update dependency com.google.protobuf:protobuf-java to v3.19.2 ([#1539](https://www.github.com/googleapis/google-http-java-client/issues/1539)) ([772370a](https://www.github.com/googleapis/google-http-java-client/commit/772370aad7269d30971a38b4471e534d1af9c45a))
+* update dependency com.puppycrawl.tools:checkstyle to v9.1 ([#1493](https://www.github.com/googleapis/google-http-java-client/issues/1493)) ([87b980b](https://www.github.com/googleapis/google-http-java-client/commit/87b980b72f7764aae2a1c5f38d321b25ed7471c4))
+* update dependency com.puppycrawl.tools:checkstyle to v9.2 ([#1510](https://www.github.com/googleapis/google-http-java-client/issues/1510)) ([0922b67](https://www.github.com/googleapis/google-http-java-client/commit/0922b670e4949ca45b2b25a2d89eea2818349a35))
+* update dependency org.apache.httpcomponents:httpcore to v4.4.15 ([#1523](https://www.github.com/googleapis/google-http-java-client/issues/1523)) ([6148d97](https://www.github.com/googleapis/google-http-java-client/commit/6148d9732a7bd745064d68706de75707a9acbb8f))
+* update project.appengine.version to v1.9.92 ([#1495](https://www.github.com/googleapis/google-http-java-client/issues/1495)) ([43c3b11](https://www.github.com/googleapis/google-http-java-client/commit/43c3b116a173d639a1214121e21ffea2fc32935c))
+* update project.appengine.version to v1.9.93 ([#1516](https://www.github.com/googleapis/google-http-java-client/issues/1516)) ([2fa47c6](https://www.github.com/googleapis/google-http-java-client/commit/2fa47c63e5422bf88fe1320e97e0f61265792d8a))
+
 ### [1.40.1](https://www.github.com/googleapis/google-http-java-client/compare/v1.40.0...v1.40.1) (2021-10-07)
 
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f2dbdee..b65dd27 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -53,12 +53,12 @@ mvn -Penable-integration-tests clean verify
 
 ## Code Samples
 
-Code Samples must be bundled in separate Maven modules, and guarded by a
-Maven profile with the name `enable-samples`.
+All code samples must be in compliance with the [java sample formatting guide][3].
+Code Samples must be bundled in separate Maven modules.
 
 The samples must be separate from the primary project for a few reasons:
-1. Primary projects have a minimum Java version of Java 7 whereas samples have
-   a minimum Java version of Java 8. Due to this we need the ability to
+1. Primary projects have a minimum Java version of Java 8 whereas samples can have
+   Java version of Java 11. Due to this we need the ability to
    selectively exclude samples from a build run.
 2. Many code samples depend on external GCP services and need
    credentials to access the service.
@@ -68,39 +68,16 @@ The samples must be separate from the primary project for a few reasons:
 ### Building
 
 ```bash
-mvn -Penable-samples clean verify
+mvn clean verify
 ```
 
 Some samples require access to GCP services and require a service account:
 
 ```bash
 export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service/account.json
-mvn -Penable-samples clean verify
+mvn clean verify
 ```
 
-### Profile Config
-
-1. To add samples in a profile to your Maven project, add the following to your
-`pom.xml`
-
-    ```xml
-    <project>
-      [...]
-      <profiles>
-        <profile>
-          <id>enable-samples</id>
-          <modules>
-            <module>sample</module>
-          </modules>
-        </profile>
-      </profiles>
-      [...]
-    </project>
-    ```
-
-2. [Activate](#profile-activation) the profile.
-3. Define your samples in a normal Maven project in the `samples/` directory.
-
 ### Code Formatting
 
 Code in this repo is formatted with
@@ -110,30 +87,6 @@ To run formatting on your project, you can run:
 mvn com.coveo:fmt-maven-plugin:format
 ```
 
-### Profile Activation
-
-To include code samples when building and testing the project, enable the 
-`enable-samples` Maven profile.
-
-#### Command line
-
-To activate the Maven profile on the command line add `-Penable-samples` to your
-Maven command.
-
-#### Maven `settings.xml`
-
-To activate the Maven profile in your `~/.m2/settings.xml` add an entry of
-`enable-samples` following the instructions in [Active Profiles][2].
-
-This method has the benefit of applying to all projects you build (and is
-respected by IntelliJ IDEA) and is recommended if you are going to be
-contributing samples to several projects.
-
-#### IntelliJ IDEA
-
-To activate the Maven Profile inside IntelliJ IDEA, follow the instructions in
-[Activate Maven profiles][3] to activate `enable-samples`.
-
 [1]: https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account
 [2]: https://maven.apache.org/settings.html#Active_Profiles
-[3]: https://www.jetbrains.com/help/idea/work-with-maven-profiles.html#activate_maven_profiles
+[3]: https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md
\ No newline at end of file
diff --git a/README.md b/README.md
index 1b65d54..b9aa0f8 100644
--- a/README.md
+++ b/README.md
@@ -58,4 +58,4 @@ might result, and you are not guaranteed a compilation error.
 [ci-status-link]: https://github.com/googleapis/google-http-java-client/actions?query=event%3Apush
 [maven-version-image]: https://img.shields.io/maven-central/v/com.google.http-client/google-http-client.svg
 [maven-version-link]: https://search.maven.org/search?q=g:com.google.http-client%20AND%20a:google-http-client&core=gav
-[stability-image]: https://img.shields.io/badge/stability-ga-green
+[stability-image]: https://img.shields.io/badge/stability-stable-green
diff --git a/docs/setup.md b/docs/setup.md
index 3e57c07..36dea69 100644
--- a/docs/setup.md
+++ b/docs/setup.md
@@ -23,7 +23,7 @@ the `dependencyManagement` section of your `pom.xml`:
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>libraries-bom</artifactId>
-      <version>23.1.0</version>
+      <version>25.1.0</version>
       <type>pom</type>
       <scope>import</scope>
      </dependency>
diff --git a/google-http-client-android-test/pom.xml b/google-http-client-android-test/pom.xml
index 1890573..d9741e5 100644
--- a/google-http-client-android-test/pom.xml
+++ b/google-http-client-android-test/pom.xml
@@ -4,7 +4,7 @@
   <groupId>google-http-client</groupId>
   <artifactId>google-http-client-android-test</artifactId>
   <name>Test project for google-http-client-android.</name>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-android-test:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-android-test:current} -->
   <packaging>apk</packaging>
 
   <build>
@@ -53,7 +53,7 @@
     <dependency>
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client-android</artifactId>
-      <version>1.40.1</version><!-- {x-version-update:google-http-client-android:current} -->
+      <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-android:current} -->
       <exclusions>
         <exclusion>
           <artifactId>android</artifactId>
@@ -72,7 +72,7 @@
     <dependency>
       <groupId>com.google.http-client</groupId>
       <artifactId>google-http-client-test</artifactId>
-      <version>1.40.1</version><!-- {x-version-update:google-http-client-test:current} -->
+      <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-test:current} -->
       <exclusions>
         <exclusion>
           <artifactId>junit</artifactId>
diff --git a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/AndroidJsonFactoryTest.java b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/AndroidJsonFactoryTest.java
index 9357ffd..0665acc 100644
--- a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/AndroidJsonFactoryTest.java
+++ b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/AndroidJsonFactoryTest.java
@@ -15,7 +15,6 @@ package com.google.api.client.extensions.android.json;
 
 import com.google.api.client.json.JsonFactory;
 import com.google.api.client.test.json.AbstractJsonFactoryTest;
-
 import java.util.ArrayList;
 
 /**
@@ -24,16 +23,31 @@ import java.util.ArrayList;
  * @author Yaniv Inbar
  */
 public class AndroidJsonFactoryTest extends AbstractJsonFactoryTest {
-  
+
   private static final String GSON_LINE_SEPARATOR = "\n";
 
   private static final String JSON_ENTRY_PRETTY =
       "{" + GSON_LINE_SEPARATOR + "  \"title\": \"foo\"" + GSON_LINE_SEPARATOR + "}";
-  private static final String JSON_FEED_PRETTY = "{" + GSON_LINE_SEPARATOR + "  \"entries\": ["
-      + GSON_LINE_SEPARATOR + "    {" + GSON_LINE_SEPARATOR + "      \"title\": \"foo\""
-      + GSON_LINE_SEPARATOR + "    }," + GSON_LINE_SEPARATOR + "    {"
-      + GSON_LINE_SEPARATOR + "      \"title\": \"bar\"" + GSON_LINE_SEPARATOR + "    }"
-      + GSON_LINE_SEPARATOR + "  ]" + GSON_LINE_SEPARATOR + "}";
+  private static final String JSON_FEED_PRETTY =
+      "{"
+          + GSON_LINE_SEPARATOR
+          + "  \"entries\": ["
+          + GSON_LINE_SEPARATOR
+          + "    {"
+          + GSON_LINE_SEPARATOR
+          + "      \"title\": \"foo\""
+          + GSON_LINE_SEPARATOR
+          + "    },"
+          + GSON_LINE_SEPARATOR
+          + "    {"
+          + GSON_LINE_SEPARATOR
+          + "      \"title\": \"bar\""
+          + GSON_LINE_SEPARATOR
+          + "    }"
+          + GSON_LINE_SEPARATOR
+          + "  ]"
+          + GSON_LINE_SEPARATOR
+          + "}";
 
   public AndroidJsonFactoryTest(String name) {
     super(name);
@@ -61,5 +75,4 @@ public class AndroidJsonFactoryTest extends AbstractJsonFactoryTest {
     feed.entries.add(entryBar);
     assertEquals(JSON_FEED_PRETTY, newFactory().toPrettyString(feed));
   }
-
 }
diff --git a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/FakeTest.java b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/FakeTest.java
index 7556138..e917e11 100644
--- a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/FakeTest.java
+++ b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/FakeTest.java
@@ -26,6 +26,5 @@ public class FakeTest extends TestCase {
     super(name);
   }
 
-  public final void test() throws Exception {
-  }
+  public final void test() throws Exception {}
 }
diff --git a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/package-info.java b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/package-info.java
index 8fdf668..7ecefd7 100644
--- a/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/package-info.java
+++ b/google-http-client-android-test/src/main/java/com/google/api/client/extensions/android/json/package-info.java
@@ -17,6 +17,4 @@
  *
  * @author Yaniv Inbar
  */
-
 package com.google.api.client.extensions.android.json;
-
diff --git a/google-http-client-android/pom.xml b/google-http-client-android/pom.xml
index 383e116..0278df8 100644
--- a/google-http-client-android/pom.xml
+++ b/google-http-client-android/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-android</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-android:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-android:current} -->
   <name>Android Platform Extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
diff --git a/google-http-client-apache-v2/pom.xml b/google-http-client-apache-v2/pom.xml
index f65cef7..542c6e0 100644
--- a/google-http-client-apache-v2/pom.xml
+++ b/google-http-client-apache-v2/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-apache-v2</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-apache-v2:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-apache-v2:current} -->
   <name>Apache HTTP transport v2 for the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
@@ -68,7 +68,7 @@
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
-        <version>2.5.4</version>
+        <version>5.1.4</version>
         <executions>
           <execution>
             <id>bundle-manifest</id>
diff --git a/google-http-client-appengine/pom.xml b/google-http-client-appengine/pom.xml
index 1ceaf99..814bb71 100644
--- a/google-http-client-appengine/pom.xml
+++ b/google-http-client-appengine/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-appengine</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-appengine:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-appengine:current} -->
   <name>Google App Engine extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
diff --git a/google-http-client-assembly/pom.xml b/google-http-client-assembly/pom.xml
index 0c6c621..af10fe9 100644
--- a/google-http-client-assembly/pom.xml
+++ b/google-http-client-assembly/pom.xml
@@ -4,12 +4,12 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <groupId>com.google.http-client</groupId>
   <artifactId>google-http-client-assembly</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-assembly:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-assembly:current} -->
   <packaging>pom</packaging>
   <name>Assembly for the Google HTTP Client Library for Java</name>
 
diff --git a/google-http-client-bom/pom.xml b/google-http-client-bom/pom.xml
index 01519db..392e97c 100644
--- a/google-http-client-bom/pom.xml
+++ b/google-http-client-bom/pom.xml
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.google.http-client</groupId>
   <artifactId>google-http-client-bom</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-bom:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-bom:current} -->
   <packaging>pom</packaging>
 
   <name>Google HTTP Client Library for Java BOM</name>
@@ -63,52 +63,52 @@
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-android</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-android:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-android:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-apache-v2</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-apache-v2:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-apache-v2:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-appengine</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-appengine:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-appengine:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-findbugs</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-findbugs:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-findbugs:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-gson</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-gson:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-gson:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-jackson2</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-jackson2:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-jackson2:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-protobuf</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-protobuf:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-protobuf:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-test</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-test:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-test:current} -->
       </dependency>
       <dependency>
         <groupId>com.google.http-client</groupId>
         <artifactId>google-http-client-xml</artifactId>
-        <version>1.40.1</version><!-- {x-version-update:google-http-client-xml:current} -->
+        <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-xml:current} -->
       </dependency>
     </dependencies>
   </dependencyManagement>
@@ -128,7 +128,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>3.3.1</version>
+        <version>3.3.2</version>
         <configuration>
           <skip>true</skip>
         </configuration>
@@ -136,7 +136,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-site-plugin</artifactId>
-        <version>3.9.1</version>
+        <version>3.11.0</version>
         <configuration>
           <skip>true</skip>
         </configuration>
@@ -144,18 +144,10 @@
       <plugin>
         <groupId>com.coveo</groupId>
         <artifactId>fmt-maven-plugin</artifactId>
-        <version>2.9</version>
+        <version>2.13</version>
         <configuration>
-          <style>google</style>
           <verbose>true</verbose>
         </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>com.google.googlejavaformat</groupId>
-            <artifactId>google-java-format</artifactId>
-            <version>1.7</version>
-          </dependency>
-        </dependencies>
       </plugin>
     </plugins>
   </build>
diff --git a/google-http-client-findbugs/google-http-client-findbugs-test/pom.xml b/google-http-client-findbugs/google-http-client-findbugs-test/pom.xml
index 1685b19..ad36ce9 100644
--- a/google-http-client-findbugs/google-http-client-findbugs-test/pom.xml
+++ b/google-http-client-findbugs/google-http-client-findbugs-test/pom.xml
@@ -11,7 +11,7 @@
     <plugins>
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.1</version>
+        <version>3.10.1</version>
         <configuration>
           <source>1.7</source>
           <target>1.7</target>
@@ -19,7 +19,7 @@
       </plugin>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.2.2</version>
         <configuration>
           <archive>
             <manifestEntries>
diff --git a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/BetaClass.java b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/BetaClass.java
index bd2ddb5..13ed288 100644
--- a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/BetaClass.java
+++ b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/BetaClass.java
@@ -20,8 +20,7 @@ import com.google.api.client.util.Beta;
 @Beta
 public class BetaClass {
 
-  public void method() {
-  }
+  public void method() {}
 
   @Beta
   public void betaMethod() {
@@ -36,8 +35,7 @@ public class BetaClass {
 
   int field;
 
-  @Beta
-  int betaField;
+  @Beta int betaField;
 
   @Override
   public String toString() {
diff --git a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaField.java b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaField.java
index ea1c531..4ceb1cb 100644
--- a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaField.java
+++ b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaField.java
@@ -19,12 +19,10 @@ import com.google.api.client.util.Beta;
 /** A class which contains {@link Beta} fields. */
 public class ClassWithBetaField {
 
-  @Beta
-  public int betaField;
+  @Beta public int betaField;
   public int field;
 
-  @Beta
-  public static final int betaStaticField = 10;
+  @Beta public static final int betaStaticField = 10;
   public static final int staticField = 20;
 
   public ClassWithBetaField() {
diff --git a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaMethod.java b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaMethod.java
index 8508221..3c80ee4 100644
--- a/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaMethod.java
+++ b/google-http-client-findbugs/google-http-client-findbugs-test/src/main/java/com/google/api/client/findbugs/test/ClassWithBetaMethod.java
@@ -19,8 +19,7 @@ import com.google.api.client.util.Beta;
 /** A class which contains {@link Beta} methods. */
 public class ClassWithBetaMethod {
 
-  @Beta
-  int betaField = 10;
+  @Beta int betaField = 10;
 
   @Beta
   public void betaMethod() {
diff --git a/google-http-client-findbugs/pom.xml b/google-http-client-findbugs/pom.xml
index f9d9b03..cb86215 100644
--- a/google-http-client-findbugs/pom.xml
+++ b/google-http-client-findbugs/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-findbugs</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-findbugs:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-findbugs:current} -->
   <name>Google APIs Client Library Findbugs custom plugin.</name>
 
   <build>
diff --git a/google-http-client-gson/pom.xml b/google-http-client-gson/pom.xml
index ad768a4..fb24cee 100644
--- a/google-http-client-gson/pom.xml
+++ b/google-http-client-gson/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-gson</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-gson:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-gson:current} -->
   <name>GSON extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -39,7 +39,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-jackson2/pom.xml b/google-http-client-jackson2/pom.xml
index 1d9ef42..178641f 100644
--- a/google-http-client-jackson2/pom.xml
+++ b/google-http-client-jackson2/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-jackson2</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-jackson2:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-jackson2:current} -->
   <name>Jackson 2 extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-protobuf/pom.xml b/google-http-client-protobuf/pom.xml
index 5f6cd1b..2810bd9 100644
--- a/google-http-client-protobuf/pom.xml
+++ b/google-http-client-protobuf/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-protobuf</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-protobuf:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-protobuf:current} -->
   <name>Protocol Buffer extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -16,7 +16,7 @@
       <extension>
         <groupId>kr.motd.maven</groupId>
         <artifactId>os-maven-plugin</artifactId>
-        <version>1.6.2</version>
+        <version>1.7.0</version>
       </extension>
     </extensions>
     <plugins>
diff --git a/google-http-client-test/pom.xml b/google-http-client-test/pom.xml
index 5bd3dc5..3d049ed 100644
--- a/google-http-client-test/pom.xml
+++ b/google-http-client-test/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-test</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-test:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-test:current} -->
   <name>Shared classes used for testing of artifacts in the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-xml/pom.xml b/google-http-client-xml/pom.xml
index 2e533db..19f01e7 100644
--- a/google-http-client-xml/pom.xml
+++ b/google-http-client-xml/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client-xml</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-xml:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-xml:current} -->
   <name>XML extensions to the Google HTTP Client Library for Java.</name>
 
   <build>
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client/pom.xml b/google-http-client/pom.xml
index 5c5314c..f519fec 100644
--- a/google-http-client/pom.xml
+++ b/google-http-client/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>google-http-client</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client:current} -->
   <name>Google HTTP Client Library for Java</name>
   <description>
     Google HTTP Client Library for Java. Functionality that works on all supported Java platforms,
@@ -21,7 +21,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-dependency-plugin</artifactId>
-          <version>3.1.2</version>
+          <version>3.3.0</version>
           <configuration>
             <ignoredUnusedDeclaredDependencies>io.opencensus:opencensus-impl</ignoredUnusedDeclaredDependencies>
           </configuration>
@@ -97,7 +97,7 @@
       <plugin>   
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
-        <version>2.5.4</version>
+        <version>5.1.4</version>
         <executions>
           <execution>
             <id>bundle-manifest</id>
diff --git a/google-http-client/src/main/java/com/google/api/client/http/GZipEncoding.java b/google-http-client/src/main/java/com/google/api/client/http/GZipEncoding.java
index c811b00..fce2289 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/GZipEncoding.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/GZipEncoding.java
@@ -45,6 +45,7 @@ public class GZipEncoding implements HttpEncoding {
             try {
               flush();
             } catch (IOException ignored) {
+              // fall through
             }
           }
         };
diff --git a/google-http-client/src/main/java/com/google/api/client/http/GzipSupport.java b/google-http-client/src/main/java/com/google/api/client/http/GzipSupport.java
new file mode 100644
index 0000000..6dc5df3
--- /dev/null
+++ b/google-http-client/src/main/java/com/google/api/client/http/GzipSupport.java
@@ -0,0 +1,90 @@
+package com.google.api.client.http;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.GZIPInputStream;
+
+final class GzipSupport {
+
+  private GzipSupport() {}
+
+  static GZIPInputStream newGzipInputStream(InputStream in) throws IOException {
+    return new GZIPInputStream(new OptimisticAvailabilityInputStream(in));
+  }
+
+  /**
+   * When {@link GZIPInputStream} completes processing an individual member it will call {@link
+   * InputStream#available()} to determine if there is more stream to try and process. If the call
+   * to {@code available()} returns 0 {@code GZIPInputStream} will determine it has processed the
+   * entirety of the underlying stream. This is spurious, as {@link InputStream#available()} is
+   * allowed to return 0 if it would require blocking in order for more bytes to be available. When
+   * {@code GZIPInputStream} is reading from a {@code Transfer-Encoding: chunked} response, if the
+   * chunk boundary happens to align closely enough to the member boundary {@code GZIPInputStream}
+   * won't consume the whole response.
+   *
+   * <p>This class, provides an optimistic "estimate" (in actuality, a lie) of the number of {@code
+   * available()} bytes in the underlying stream. It does this by tracking the last number of bytes
+   * read. If the last number of bytes read is grater than -1, we return {@link Integer#MAX_VALUE}
+   * to any call of {@link #available()}.
+   *
+   * <p>We're breaking the contract of available() in that we're lying about how much data we have
+   * accessible without blocking, however in the case where we're weaving {@link GZIPInputStream}
+   * into response processing we already know there are going to be blocking calls to read before
+   * the stream is exhausted.
+   *
+   * <p>This scenario isn't unique to processing of chunked responses, and can be replicated
+   * reliably using a {@link java.io.SequenceInputStream} with two underlying {@link
+   * java.io.ByteArrayInputStream}. See the corresponding test class for a reproduction.
+   *
+   * <p>The need for this class has been verified for the following JVMs:
+   *
+   * <ol>
+   *   <li>
+   *       <pre>
+   * openjdk version "1.8.0_292"
+   * OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
+   * OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
+   *   </pre>
+   *   <li>
+   *       <pre>
+   * openjdk version "11.0.14.1" 2022-02-08
+   * OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1)
+   * OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)
+   *   </pre>
+   *   <li>
+   *       <pre>
+   * openjdk version "17" 2021-09-14
+   * OpenJDK Runtime Environment Temurin-17+35 (build 17+35)
+   * OpenJDK 64-Bit Server VM Temurin-17+35 (build 17+35, mixed mode, sharing)
+   *   </pre>
+   * </ol>
+   */
+  private static final class OptimisticAvailabilityInputStream extends FilterInputStream {
+    private int lastRead = 0;
+
+    OptimisticAvailabilityInputStream(InputStream delegate) {
+      super(delegate);
+    }
+
+    @Override
+    public int available() throws IOException {
+      return lastRead > -1 ? Integer.MAX_VALUE : 0;
+    }
+
+    @Override
+    public int read() throws IOException {
+      return lastRead = super.read();
+    }
+
+    @Override
+    public int read(byte[] b) throws IOException {
+      return lastRead = super.read(b);
+    }
+
+    @Override
+    public int read(byte[] b, int off, int len) throws IOException {
+      return lastRead = super.read(b, off, len);
+    }
+  }
+}
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpMediaType.java b/google-http-client/src/main/java/com/google/api/client/http/HttpMediaType.java
index 9bab77b..f394993 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpMediaType.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpMediaType.java
@@ -26,8 +26,8 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- * HTTP Media-type as specified in the HTTP RFC ( {@link
- * "http://tools.ietf.org/html/rfc2616#section-3.7"}).
+ * HTTP Media-type as specified in the <a
+ * href="https://datatracker.ietf.org/doc/html/rfc2616#section-3.7">HTTP RFC</a>.
  *
  * <p>Implementation is not thread-safe.
  *
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java b/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
index 312702b..78f15d8 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
@@ -1113,7 +1113,9 @@ public final class HttpRequest {
     // throw an exception if unsuccessful response
     if (throwExceptionOnExecuteError && !response.isSuccessStatusCode()) {
       try {
-        throw new HttpResponseException(response);
+        throw new HttpResponseException.Builder(response)
+            .setAttemptCount(numRetries - retriesRemaining)
+            .build();
       } finally {
         response.disconnect();
       }
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java b/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
index e979432..1302086 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
@@ -30,7 +30,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.Locale;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.util.zip.GZIPInputStream;
 
 /**
  * HTTP response.
@@ -362,7 +361,7 @@ public final class HttpResponse {
               // GZIPInputStream.close() --> ConsumingInputStream.close() -->
               // exhaust(ConsumingInputStream)
               lowLevelResponseContent =
-                  new GZIPInputStream(new ConsumingInputStream(lowLevelResponseContent));
+                  GzipSupport.newGzipInputStream(new ConsumingInputStream(lowLevelResponseContent));
             }
           }
           // logging (wrap content with LoggingInputStream)
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpResponseException.java b/google-http-client/src/main/java/com/google/api/client/http/HttpResponseException.java
index a9d80a4..63bf6fe 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpResponseException.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpResponseException.java
@@ -42,6 +42,9 @@ public class HttpResponseException extends IOException {
   /** HTTP response content or {@code null} for none. */
   private final String content;
 
+  /** Number of attempts performed */
+  private final int attemptCount;
+
   /**
    * Constructor that constructs a detail message from the given HTTP response that includes the
    * status code, status message and HTTP response content.
@@ -73,6 +76,7 @@ public class HttpResponseException extends IOException {
     statusMessage = builder.statusMessage;
     headers = builder.headers;
     content = builder.content;
+    attemptCount = builder.attemptCount;
   }
 
   /**
@@ -121,6 +125,15 @@ public class HttpResponseException extends IOException {
     return content;
   }
 
+  /**
+   * Returns the attempt count
+   *
+   * @since 1.41
+   */
+  public final int getAttemptCount() {
+    return attemptCount;
+  }
+
   /**
    * Builder.
    *
@@ -145,6 +158,9 @@ public class HttpResponseException extends IOException {
     /** Detail message to use or {@code null} for none. */
     String message;
 
+    /** Number of attempts performed */
+    int attemptCount;
+
     /**
      * @param statusCode HTTP status code
      * @param statusMessage status message or {@code null}
@@ -260,6 +276,18 @@ public class HttpResponseException extends IOException {
       return this;
     }
 
+    /** Returns the request attempt count */
+    public final int getAttemptCount() {
+      return attemptCount;
+    }
+
+    /** Sets the attempt count for the related HTTP request execution. */
+    public Builder setAttemptCount(int attemptCount) {
+      Preconditions.checkArgument(attemptCount >= 0);
+      this.attemptCount = attemptCount;
+      return this;
+    }
+
     /** Returns a new instance of {@link HttpResponseException} based on this builder. */
     public HttpResponseException build() {
       return new HttpResponseException(this);
diff --git a/google-http-client/src/main/java/com/google/api/client/testing/util/TestableByteArrayInputStream.java b/google-http-client/src/main/java/com/google/api/client/testing/util/TestableByteArrayInputStream.java
index 270925a..3513579 100644
--- a/google-http-client/src/main/java/com/google/api/client/testing/util/TestableByteArrayInputStream.java
+++ b/google-http-client/src/main/java/com/google/api/client/testing/util/TestableByteArrayInputStream.java
@@ -41,7 +41,7 @@ public class TestableByteArrayInputStream extends ByteArrayInputStream {
    * @param offset offset in the buffer of the first byte to read
    * @param length maximum number of bytes to read from the buffer
    */
-  public TestableByteArrayInputStream(byte buf[], int offset, int length) {
+  public TestableByteArrayInputStream(byte[] buf, int offset, int length) {
     super(buf);
   }
 
diff --git a/google-http-client/src/main/java/com/google/api/client/util/ArrayValueMap.java b/google-http-client/src/main/java/com/google/api/client/util/ArrayValueMap.java
index 07119ab..41d5ca7 100644
--- a/google-http-client/src/main/java/com/google/api/client/util/ArrayValueMap.java
+++ b/google-http-client/src/main/java/com/google/api/client/util/ArrayValueMap.java
@@ -11,6 +11,7 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
+
 package com.google.api.client.util;
 
 import java.lang.reflect.Field;
diff --git a/google-http-client/src/test/java/com/google/api/client/http/GzipSupportTest.java b/google-http-client/src/test/java/com/google/api/client/http/GzipSupportTest.java
new file mode 100644
index 0000000..f7c8632
--- /dev/null
+++ b/google-http-client/src/test/java/com/google/api/client/http/GzipSupportTest.java
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.api.client.http;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.io.ByteStreams;
+import com.google.common.io.CountingInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.SequenceInputStream;
+import java.util.zip.GZIPInputStream;
+import org.junit.Test;
+
+public final class GzipSupportTest {
+
+  @SuppressWarnings("UnstableApiUsage") // CountingInputStream is @Beta
+  @Test
+  public void gzipInputStreamConsumesAllBytes() throws IOException {
+    byte[] data = new byte[] {(byte) 'a', (byte) 'b'};
+    // `echo -n a > a.txt && gzip -n9 a.txt`
+    byte[] member0 =
+        new byte[] {
+          0x1f,
+          (byte) 0x8b,
+          0x08,
+          0x00,
+          0x00,
+          0x00,
+          0x00,
+          0x00,
+          0x02,
+          0x03,
+          0x4b,
+          0x04,
+          0x00,
+          (byte) 0x43,
+          (byte) 0xbe,
+          (byte) 0xb7,
+          (byte) 0xe8,
+          0x01,
+          0x00,
+          0x00,
+          0x00
+        };
+    // `echo -n b > b.txt && gzip -n9 b.txt`
+    byte[] member1 =
+        new byte[] {
+          0x1f,
+          (byte) 0x8b,
+          0x08,
+          0x00,
+          0x00,
+          0x00,
+          0x00,
+          0x00,
+          0x02,
+          0x03,
+          0x4b,
+          0x02,
+          0x00,
+          (byte) 0xf9,
+          (byte) 0xef,
+          (byte) 0xbe,
+          (byte) 0x71,
+          0x01,
+          0x00,
+          0x00,
+          0x00
+        };
+    int totalZippedBytes = member0.length + member1.length;
+    try (InputStream s =
+            new SequenceInputStream(
+                new ByteArrayInputStream(member0), new ByteArrayInputStream(member1));
+        CountingInputStream countS = new CountingInputStream(s);
+        GZIPInputStream g = GzipSupport.newGzipInputStream(countS);
+        CountingInputStream countG = new CountingInputStream(g)) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      ByteStreams.copy(countG, baos);
+      assertThat(baos.toByteArray()).isEqualTo(data);
+      assertThat(countG.getCount()).isEqualTo(data.length);
+      assertThat(countS.getCount()).isEqualTo(totalZippedBytes);
+    }
+  }
+}
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpResponseExceptionTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpResponseExceptionTest.java
index 9066e9d..cbe6e6a 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpResponseExceptionTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpResponseExceptionTest.java
@@ -23,6 +23,7 @@ import com.google.api.client.http.HttpResponseException.Builder;
 import com.google.api.client.testing.http.MockHttpTransport;
 import com.google.api.client.testing.http.MockLowLevelHttpRequest;
 import com.google.api.client.testing.http.MockLowLevelHttpResponse;
+import com.google.api.client.util.ExponentialBackOff;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -30,6 +31,7 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 import junit.framework.TestCase;
+import org.junit.Assert;
 import org.junit.function.ThrowingRunnable;
 
 /**
@@ -208,6 +210,8 @@ public class HttpResponseExceptionTest extends TestCase {
                 + SIMPLE_GENERIC_URL
                 + LINE_SEPARATOR
                 + "Unable to find resource");
+    // no retries expected
+    assertEquals(1, responseException.getAttemptCount());
   }
 
   public void testInvalidCharset() throws Exception {
@@ -245,6 +249,50 @@ public class HttpResponseExceptionTest extends TestCase {
         .isEqualTo("404 Not Found\nGET " + SIMPLE_GENERIC_URL);
   }
 
+  public void testAttemptCountWithBackOff() throws Exception {
+    HttpTransport fakeTransport =
+        new MockHttpTransport() {
+          @Override
+          public LowLevelHttpRequest buildRequest(String method, String url) throws IOException {
+            return new MockLowLevelHttpRequest() {
+              @Override
+              public LowLevelHttpResponse execute() throws IOException {
+                MockLowLevelHttpResponse result = new MockLowLevelHttpResponse();
+                result.setStatusCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR);
+                result.setReasonPhrase("Error");
+                result.setContent("Unknown Error");
+                return result;
+              }
+            };
+          }
+        };
+    ExponentialBackOff backoff = new ExponentialBackOff.Builder().build();
+    final HttpRequest request =
+        fakeTransport.createRequestFactory().buildGetRequest(new GenericUrl("http://not/used"));
+    request.setUnsuccessfulResponseHandler(
+        new HttpBackOffUnsuccessfulResponseHandler(backoff)
+            .setBackOffRequired(
+                new HttpBackOffUnsuccessfulResponseHandler.BackOffRequired() {
+                  public boolean isRequired(HttpResponse response) {
+                    return true;
+                  }
+                }));
+    request.setNumberOfRetries(1);
+    HttpResponseException responseException =
+        assertThrows(
+            HttpResponseException.class,
+            new ThrowingRunnable() {
+              @Override
+              public void run() throws Throwable {
+                request.execute();
+              }
+            });
+
+    Assert.assertEquals(500, responseException.getStatusCode());
+    // original request and 1 retry - total 2
+    assertEquals(2, responseException.getAttemptCount());
+  }
+
   public void testUnsupportedCharset() throws Exception {
     HttpTransport transport =
         new MockHttpTransport() {
diff --git a/owlbot.py b/owlbot.py
new file mode 100644
index 0000000..8a64e38
--- /dev/null
+++ b/owlbot.py
@@ -0,0 +1,32 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import synthtool as s
+from synthtool.languages import java
+
+
+for library in s.get_staging_dirs():
+    # put any special-case replacements here
+    s.move(library)
+
+s.remove_staging_dirs()
+java.common_templates(
+    excludes=[
+        "README.md",
+        "java.header",
+        "checkstyle.xml",
+        "license-checks.xml",
+        ".github/workflows/samples.yaml",
+    ]
+)
diff --git a/pom.xml b/pom.xml
index c664500..5bf1b76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.google.http-client</groupId>
   <artifactId>google-http-client-parent</artifactId>
-  <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+  <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
   <packaging>pom</packaging>
   <name>Parent for the Google HTTP Client Library for Java</name>
   <description>Google HTTP Client Library for Java</description>
@@ -125,7 +125,7 @@
       <dependency>
         <groupId>com.google.errorprone</groupId>
         <artifactId>error_prone_annotations</artifactId>
-        <version>2.9.0</version>
+        <version>2.11.0</version>
       </dependency>
       <dependency>
         <groupId>com.google.appengine</groupId>
@@ -276,7 +276,7 @@
         </plugin>
         <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
-          <version>3.8.1</version>
+          <version>3.10.1</version>
           <configuration>
             <source>1.7</source>
             <target>1.7</target>
@@ -302,7 +302,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-javadoc-plugin</artifactId>
-          <version>3.3.1</version>
+          <version>3.3.2</version>
           <executions>
             <execution>
               <id>attach-javadocs</id>
@@ -315,7 +315,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.2.2</version>
           <executions>
             <execution>
               <goals>
@@ -350,22 +350,22 @@
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>animal-sniffer-maven-plugin</artifactId>
-          <version>1.17</version>
+          <version>1.21</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-project-info-reports-plugin</artifactId>
-          <version>3.1.2</version>
+          <version>3.2.2</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.9.1</version>
+          <version>3.11.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-dependency-plugin</artifactId>
-          <version>3.1.2</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -525,7 +525,7 @@
       <!-- Build the dependencies report at package time (needed for the assembly artifact). -->
       <plugin>
         <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>3.1.2</version>
+        <version>3.2.2</version>
         <executions>
           <execution>
             <goals>
@@ -542,18 +542,10 @@
       <plugin>
         <groupId>com.coveo</groupId>
         <artifactId>fmt-maven-plugin</artifactId>
-        <version>2.9</version>
+        <version>2.13</version>
         <configuration>
-          <style>google</style>
           <verbose>true</verbose>
         </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>com.google.googlejavaformat</groupId>
-            <artifactId>google-java-format</artifactId>
-            <version>1.7</version>
-          </dependency>
-        </dependencies>
       </plugin>
     </plugins>
   </build>
@@ -568,18 +560,18 @@
       - google-api-java-client/google-api-client-assembly/android-properties (make the filenames match the version here)
       - Internally, update the default features.json file
     -->
-    <project.http-client.version>1.40.1</project.http-client.version><!-- {x-version-update:google-http-client-parent:current} -->
-    <project.appengine.version>1.9.91</project.appengine.version>
+    <project.http-client.version>1.41.6-SNAPSHOT</project.http-client.version><!-- {x-version-update:google-http-client-parent:current} -->
+    <project.appengine.version>2.0.4</project.appengine.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.jsr305.version>3.0.2</project.jsr305.version>
-    <project.gson.version>2.8.8</project.gson.version>
-    <project.jackson-core2.version>2.13.0</project.jackson-core2.version>
-    <project.protobuf-java.version>3.18.1</project.protobuf-java.version>
+    <project.gson.version>2.9.0</project.gson.version>
+    <project.jackson-core2.version>2.13.2</project.jackson-core2.version>
+    <project.protobuf-java.version>3.19.4</project.protobuf-java.version>
     <project.guava.version>30.1.1-android</project.guava.version>
     <project.xpp3.version>1.1.4c</project.xpp3.version>
     <project.httpclient.version>4.5.13</project.httpclient.version>
-    <project.httpcore.version>4.4.14</project.httpcore.version>
-    <project.opencensus.version>0.28.0</project.opencensus.version>
+    <project.httpcore.version>4.4.15</project.httpcore.version>
+    <project.opencensus.version>0.31.0</project.opencensus.version>
     <project.root-directory>..</project.root-directory>
     <deploy.autorelease>false</deploy.autorelease>
   </properties>
@@ -667,7 +659,7 @@
               <dependency>
                 <groupId>com.puppycrawl.tools</groupId>
                 <artifactId>checkstyle</artifactId>
-                <version>9.0.1</version>
+                <version>9.3</version>
               </dependency>
             </dependencies>
             <configuration>
@@ -695,35 +687,44 @@
           <name>docFX</name>
         </property>
       </activation>
-      <reporting>
+      <properties>
+        <!-- default config values -->
+        <docletName>java-docfx-doclet-1.5.0</docletName>
+        <outputpath>${project.build.directory}/docfx-yml</outputpath>
+        <projectname>${project.artifactId}</projectname>
+        <excludeclasses></excludeclasses>
+        <excludePackages>com\.google\.api\.client\.findbugs:com\.google\.api\.client\.test:com\.google\.api\.services</excludePackages>
+        <source>8</source>            
+        <sourceFileExclude></sourceFileExclude>
+      </properties>
+      <build>
         <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-javadoc-plugin</artifactId>
-            <version>3.3.1</version>
-            <reportSets>
-              <reportSet>
-                <id>docFX</id>
-                <reports>
-                  <report>javadoc</report>
-                  <report>aggregate</report>
-                  <report>aggregate-jar</report>
-                </reports>
-              </reportSet>
-            </reportSets>
+            <version>3.3.2</version>
             <configuration>
               <doclet>com.microsoft.doclet.DocFxDoclet</doclet>
               <useStandardDocletOptions>false</useStandardDocletOptions>
-              <docletPath>${env.KOKORO_GFILE_DIR}/java-docfx-doclet-1.2.1.jar</docletPath>
+               <!-- custom config with -Dproperty=value -->
+              <docletPath>${env.KOKORO_GFILE_DIR}/${docletName}.jar</docletPath>
               <additionalOptions>
-                -outputpath ${project.build.directory}/docfx-yml
-                -projectname ${artifactId}
-                -excludepackages com\.google\.api\.client\.findbugs:com\.google\.api\.client\.test:com\.google\.api\.services
+                -outputpath ${outputpath} 
+                -projectname ${projectname} 
+                -excludeclasses ${excludeclasses}: 
+                -excludepackages ${excludePackages}:
               </additionalOptions>
+              <doclint>none</doclint>
+              <show>protected</show>
+              <nohelp>true</nohelp>
+              <source>${source}</source>
+              <sourceFileExcludes>
+                <exclude>${sourceFileExclude}</exclude>
+              </sourceFileExcludes>
             </configuration>
-          </plugin>
+          </plugin>  
         </plugins>
-      </reporting>
-    </profile>
+      </build>
+    </profile>    
   </profiles>
 </project>
diff --git a/samples/dailymotion-simple-cmdline-sample/pom.xml b/samples/dailymotion-simple-cmdline-sample/pom.xml
index 2599255..96b4c8d 100644
--- a/samples/dailymotion-simple-cmdline-sample/pom.xml
+++ b/samples/dailymotion-simple-cmdline-sample/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.http-client</groupId>
     <artifactId>google-http-client-parent</artifactId>
-    <version>1.40.1</version><!-- {x-version-update:google-http-client-parent:current} -->
+    <version>1.41.6-SNAPSHOT</version><!-- {x-version-update:google-http-client-parent:current} -->
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <artifactId>dailymotion-simple-cmdline-sample</artifactId>
@@ -95,7 +95,7 @@
               <dependency>
                 <groupId>com.puppycrawl.tools</groupId>
                 <artifactId>checkstyle</artifactId>
-                <version>9.0.1</version>
+                <version>9.3</version>
               </dependency>
             </dependencies>
             <configuration>
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 7980adb..5891c62 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.23</version>
+    <version>1.2.0</version>
   </parent>
 
   <properties>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-snippets-source</id>
diff --git a/samples/pom.xml b/samples/pom.xml
index 84d755d..d6b2bfa 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.23</version>
+    <version>1.2.0</version>
   </parent>
 
   <properties>
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 0cc5be9..cc6cb1f 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.23</version>
+    <version>1.2.0</version>
   </parent>
 
   <properties>
@@ -52,7 +52,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.2.0</version>
+        <version>3.3.0</version>
         <executions>
           <execution>
             <id>add-snippets-source</id>
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 9d02570..4d21285 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.23</version>
+    <version>1.2.0</version>
     <relativePath></relativePath>
   </parent>
 
@@ -31,7 +31,7 @@
       <dependency>
         <groupId>com.google.cloud</groupId>
         <artifactId>libraries-bom</artifactId>
-        <version>23.1.0</version>
+        <version>25.1.0</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
diff --git a/samples/snippets/src/main/java/com/example/json/YouTubeSample.java b/samples/snippets/src/main/java/com/example/json/YouTubeSample.java
index aad2b8a..56107f9 100644
--- a/samples/snippets/src/main/java/com/example/json/YouTubeSample.java
+++ b/samples/snippets/src/main/java/com/example/json/YouTubeSample.java
@@ -18,7 +18,6 @@ package com.example.json;
 
 import com.google.api.client.http.HttpResponse;
 import com.google.api.client.util.Key;
-
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -28,8 +27,7 @@ public class YouTubeSample {
     @Key("items")
     private List<SearchResult> searchResults;
 
-    @Key
-    private PageInfo pageInfo;
+    @Key private PageInfo pageInfo;
 
     public List<SearchResult> getSearchResults() {
       return searchResults;
@@ -41,11 +39,9 @@ public class YouTubeSample {
   }
 
   public static class PageInfo {
-    @Key
-    private long totalResults;
+    @Key private long totalResults;
 
-    @Key
-    private long resultsPerPage;
+    @Key private long resultsPerPage;
 
     public long getTotalResults() {
       return totalResults;
@@ -57,14 +53,12 @@ public class YouTubeSample {
   }
 
   public static class SearchResult {
-    @Key
-    private String kind;
+    @Key private String kind;
 
     @Key("id")
     private VideoId videoId;
 
-    @Key
-    private Snippet snippet;
+    @Key private Snippet snippet;
 
     public String getKind() {
       return kind;
@@ -80,11 +74,9 @@ public class YouTubeSample {
   }
 
   public static class VideoId {
-    @Key
-    private String kind;
+    @Key private String kind;
 
-    @Key
-    private String videoId;
+    @Key private String videoId;
 
     public String getKind() {
       return kind;
@@ -96,20 +88,15 @@ public class YouTubeSample {
   }
 
   public static class Snippet {
-    @Key
-    private String publishedAt;
+    @Key private String publishedAt;
 
-    @Key
-    private String channelId;
+    @Key private String channelId;
 
-    @Key
-    private String title;
+    @Key private String title;
 
-    @Key
-    private String description;
+    @Key private String description;
 
-    @Key
-    private Map<String, Thumbnail> thumbnails;
+    @Key private Map<String, Thumbnail> thumbnails;
 
     public String getPublishedAt() {
       return publishedAt;
@@ -133,14 +120,11 @@ public class YouTubeSample {
   }
 
   public static class Thumbnail {
-    @Key
-    private String url;
+    @Key private String url;
 
-    @Key
-    private long width;
+    @Key private long width;
 
-    @Key
-    private long height;
+    @Key private long height;
 
     public String getUrl() {
       return url;
@@ -171,5 +155,4 @@ public class YouTubeSample {
     }
     return listResponse;
   }
-
-}
\ No newline at end of file
+}
diff --git a/samples/snippets/src/test/java/com/example/json/YouTubeSampleTest.java b/samples/snippets/src/test/java/com/example/json/YouTubeSampleTest.java
index 8454437..92ed5ab 100644
--- a/samples/snippets/src/test/java/com/example/json/YouTubeSampleTest.java
+++ b/samples/snippets/src/test/java/com/example/json/YouTubeSampleTest.java
@@ -19,10 +19,6 @@ package com.example.json;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-import org.junit.Test;
 import com.google.api.client.http.HttpRequest;
 import com.google.api.client.http.HttpResponse;
 import com.google.api.client.http.HttpTransport;
@@ -36,12 +32,17 @@ import com.google.api.client.testing.http.MockHttpTransport;
 import com.google.api.client.testing.http.MockLowLevelHttpRequest;
 import com.google.api.client.testing.http.MockLowLevelHttpResponse;
 import com.google.common.base.Preconditions;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+import org.junit.Test;
 
 public class YouTubeSampleTest {
 
   @Test
   public void testParsing() throws IOException {
-    final InputStream contents = getClass().getClassLoader().getResourceAsStream("youtube-search.json");
+    final InputStream contents =
+        getClass().getClassLoader().getResourceAsStream("youtube-search.json");
     Preconditions.checkNotNull(contents);
     HttpTransport transport =
         new MockHttpTransport() {
@@ -91,4 +92,4 @@ public class YouTubeSampleTest {
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/versions.txt b/versions.txt
index 106d4e3..b94bfbd 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,17 +1,17 @@
 # Format:
 # module:released-version:current-version
 
-google-http-client:1.40.1:1.40.1
-google-http-client-bom:1.40.1:1.40.1
-google-http-client-parent:1.40.1:1.40.1
-google-http-client-android:1.40.1:1.40.1
-google-http-client-android-test:1.40.1:1.40.1
-google-http-client-apache-v2:1.40.1:1.40.1
-google-http-client-appengine:1.40.1:1.40.1
-google-http-client-assembly:1.40.1:1.40.1
-google-http-client-findbugs:1.40.1:1.40.1
-google-http-client-gson:1.40.1:1.40.1
-google-http-client-jackson2:1.40.1:1.40.1
-google-http-client-protobuf:1.40.1:1.40.1
-google-http-client-test:1.40.1:1.40.1
-google-http-client-xml:1.40.1:1.40.1
+google-http-client:1.41.5:1.41.6-SNAPSHOT
+google-http-client-bom:1.41.5:1.41.6-SNAPSHOT
+google-http-client-parent:1.41.5:1.41.6-SNAPSHOT
+google-http-client-android:1.41.5:1.41.6-SNAPSHOT
+google-http-client-android-test:1.41.5:1.41.6-SNAPSHOT
+google-http-client-apache-v2:1.41.5:1.41.6-SNAPSHOT
+google-http-client-appengine:1.41.5:1.41.6-SNAPSHOT
+google-http-client-assembly:1.41.5:1.41.6-SNAPSHOT
+google-http-client-findbugs:1.41.5:1.41.6-SNAPSHOT
+google-http-client-gson:1.41.5:1.41.6-SNAPSHOT
+google-http-client-jackson2:1.41.5:1.41.6-SNAPSHOT
+google-http-client-protobuf:1.41.5:1.41.6-SNAPSHOT
+google-http-client-test:1.41.5:1.41.6-SNAPSHOT
+google-http-client-xml:1.41.5:1.41.6-SNAPSHOT