Fix non-bzlmod distribution (#172)

Since we are building the renderer from source and using rules_jvm_external to pull in Maven deps, the WORKSPACE setup for a user of Stardoc is now significantly more complicated; the user will now need to do the multi-step rules_jvm_external initialization and maven_install.

For convenience, let's wrap maven_install in a macro - and finally split out the legacy-test-only maven deps into their own .json file and repo.

Update stardoc_repositories to pull in all the new deps we need to build Java code.

Update maintainer guide.
diff --git a/MODULE.bazel b/MODULE.bazel
index 38dc741..d5e84cf 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -12,6 +12,7 @@
 
 maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
 maven.install(
+    name = "stardoc_maven",
     # We don't yet specify the maven coordinates in the MODULE.bazel to avoid duplicating information.
     # Always respect the maven_install.json file generated by rules_jvm_external from the WORKSPACE file.
     lock_file = "//:maven_install.json",
@@ -19,4 +20,4 @@
         "https://repo1.maven.org/maven2",
     ],
 )
-use_repo(maven, "maven")
+use_repo(maven, "stardoc_maven")
diff --git a/WORKSPACE b/WORKSPACE
index 749bf55..2609843 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -5,19 +5,6 @@
 
 stardoc_repositories()
 
-RULES_JVM_EXTERNAL_TAG = "4.5"
-
-RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
-
-http_archive(
-    name = "rules_jvm_external",
-    patch_args = ["-p1"],
-    patches = ["//:rules_jvm_external.patch"],
-    sha256 = RULES_JVM_EXTERNAL_SHA,
-    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
-    url = "https://github.com/bazelbuild/rules_jvm_external/archive/refs/tags/%s.zip" % RULES_JVM_EXTERNAL_TAG,
-)
-
 load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
 
 rules_jvm_external_deps()
@@ -26,18 +13,32 @@
 
 rules_jvm_external_setup()
 
+load(":deps.bzl", "stardoc_external_deps")
+
+stardoc_external_deps()
+
+load("@stardoc_maven//:defs.bzl", stardoc_pinned_maven_install = "pinned_maven_install")
+
+stardoc_pinned_maven_install()
+
+### INTERNAL ONLY - lines after this are not included in the release packaging.
+#
+# Include dependencies which are only needed for development of Stardoc here.
+
+load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+
+# Needed for generating the Stardoc release binary.
+git_repository(
+    name = "io_bazel",
+    commit = "b71b2df2b22e052f8540a23051b589c6ef870d0a",  # 2023-08-01
+    remote = "https://github.com/bazelbuild/bazel.git",
+)
+
 load("@rules_jvm_external//:defs.bzl", "maven_install")
 
+# Bazel's Maven dependencies - must live in @maven
 maven_install(
     artifacts = [
-        "com.beust:jcommander:1.82",
-        "com.google.escapevelocity:escapevelocity:1.1",
-        "com.google.guava:guava:31.1-jre",
-        "com.google.truth:truth:1.1.3",
-        "junit:junit:4.13.2",
-        # Artifacts below this line are only needed for building @io_bazel for
-        # stardoc_binary.jar integration tests. They should be removed once we
-        # fully migrate to starlark_doc_extract after Bazel 7.
         "com.github.ben-manes.caffeine:caffeine:3.0.5",
         "com.github.stephenc.jcip:jcip-annotations:1.0-1",
         "com.google.auto.service:auto-service-annotations:1.0.1",
@@ -53,6 +54,7 @@
         "com.google.flogger:flogger:0.5.1",
         "com.google.flogger:google-extensions:0.5.1",
         "com.google.guava:failureaccess:1.0.1",
+        "com.google.guava:guava:31.1-jre",
         "com.google.j2objc:j2objc-annotations:1.3",
         "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
         "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
@@ -65,7 +67,7 @@
         "org.checkerframework:checker-qual:3.19.0",
     ],
     fail_if_repin_required = True,
-    maven_install_json = "//:maven_install.json",
+    maven_install_json = "//:legacy_maven_install.json",
     repositories = [
         "https://repo1.maven.org/maven2",
     ],
@@ -76,31 +78,6 @@
 
 pinned_maven_install()
 
-http_archive(
-    name = "com_google_protobuf",
-    sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae",
-    strip_prefix = "protobuf-21.7",
-    urls = [
-        "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz",
-        "https://github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz",
-    ],
-)
-
-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
-
-### INTERNAL ONLY - lines after this are not included in the release packaging.
-#
-# Include dependencies which are only needed for development of Stardoc here.
-
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-# Needed for generating the Stardoc release binary.
-git_repository(
-    name = "io_bazel",
-    commit = "b71b2df2b22e052f8540a23051b589c6ef870d0a",  # 2023-08-01
-    remote = "https://github.com/bazelbuild/bazel.git",
-)
-
 # The following binds are needed for building protobuf java libraries.
 bind(
     name = "guava",
@@ -182,7 +159,3 @@
         "https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/1.3.3.zip",
     ],
 )
-
-### END INTERNAL ONLY
-# protobuf_deps() must not be called before @rules_python are loaded (if they are loaded).
-protobuf_deps()
diff --git a/deps.bzl b/deps.bzl
new file mode 100644
index 0000000..4d77a6b
--- /dev/null
+++ b/deps.bzl
@@ -0,0 +1,54 @@
+# Copyright 2023 The Bazel Authors. All rights reserved.
+#
+# 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.
+
+"""WORKSPACE dependency definitions for Stardoc."""
+
+load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
+load("@rules_jvm_external//:defs.bzl", "maven_install")
+
+# Maven artifacts required by Stardoc
+STARDOC_MAVEN_ARTIFACTS = [
+    "com.beust:jcommander:1.82",
+    "com.google.escapevelocity:escapevelocity:1.1",
+    "com.google.guava:guava:31.1-jre",
+    "com.google.truth:truth:1.1.3",
+    "junit:junit:4.13.2",
+]
+
+def stardoc_external_deps():
+    """
+    Sets up Stardoc's workspace dependencies.
+
+    Requires stardoc_repositories() to be called first.
+
+    Normally should be followed up by
+
+    ```bzl
+        load("@stardoc_maven//:defs.bzl", stardoc_pinned_maven_install = "pinned_maven_install")
+
+        stardoc_pinned_maven_install()
+    ```
+    """
+    protobuf_deps()
+
+    maven_install(
+        name = "stardoc_maven",
+        artifacts = STARDOC_MAVEN_ARTIFACTS,
+        fail_if_repin_required = True,
+        maven_install_json = "@io_bazel_stardoc//:maven_install.json",
+        repositories = [
+            "https://repo1.maven.org/maven2",
+        ],
+        strict_visibility = True,
+    )
diff --git a/docs/maintainers_guide.md b/docs/maintainers_guide.md
index fabd533..15d4337 100644
--- a/docs/maintainers_guide.md
+++ b/docs/maintainers_guide.md
@@ -16,7 +16,11 @@
 
 ## Making a New Release
 
-1.  Update CHANGELOG.md at the top. You may want to use the following template:
+1.  Verify tests. Verify that dependencies are consistent between `setup.bzl` +
+    `WORKSPACE` and `MODULE.bazel` (but note that `MODULE.bazel` does not
+    include dependencies on `io_bazel` and its transitive deps).
+2.  Update `CHANGELOG.md` at the top. You may want to use the following \
+    template:
 
 --------------------------------------------------------------------------------
 
@@ -38,22 +42,26 @@
 
 --------------------------------------------------------------------------------
 
-2.  Bump `version` in version.bzl to the new version.
-3.  Ensure that the commits for steps 1 and 2 have been merged. All further
-    steps must be performed on a single, known-good git commit.
-4.  `bazel build //distro`
-5.  Copy the `stardoc-$VERSION.tar.gz` tarball to the mirror (you'll need Bazel
+3.  Bump `version` in `version.bzl` *and* `MODULE.bazel` to the new version.
+4.  Ensure that the commits for steps 1-3 have been merged. All further steps
+    must be performed on a single, known-good git commit.
+5.  `bazel build //distro`
+6.  Copy the `stardoc-$VERSION.tar.gz` tarball to the mirror (you'll need Bazel
     developer gcloud credentials; assuming you are a Bazel developer, you can
     obtain them via `gcloud init`):
 
-```
-gsutil cp bazel-bin/distro/stardoc-$VERSION.tar.gz gs://bazel-mirror/github.com/bazelbuild/stardoc/releases/download/$VERSION/stardoc-$VERSION.tar.gz
-gsutil setmeta -h "Cache-Control: public, max-age=31536000" "gs://bazel-mirror/github.com/bazelbuild/stardoc/releases/download/$VERSION/stardoc-$VERSION.tar.gz"
-```
+    ```bash
+    gsutil cp bazel-bin/distro/stardoc-$VERSION.tar.gz gs://bazel-mirror/github.com/bazelbuild/stardoc/releases/download/$VERSION/stardoc-$VERSION.tar.gz
+    gsutil setmeta -h "Cache-Control: public, max-age=31536000" "gs://bazel-mirror/github.com/bazelbuild/stardoc/releases/download/$VERSION/stardoc-$VERSION.tar.gz"
+    ```
 
-6.  Run `sha256sum bazel-bin/distro/stardoc-$VERSION.tar.gz`; you'll need the
-    checksum for the release notes.
-7.  Draft a new release with a new tag named $VERSION in github. Attach
+7.  Obtain checksum for release notes:
+
+    ```bash
+    sha256sum bazel-bin/distro/stardoc-$VERSION.tar.gz
+    ```
+
+8.  Draft a new release with a new tag named $VERSION in github. Attach
     `stardoc-$VERSION.tar.gz` to the release. For the release notes, use the
     CHANGELOG.md entry plus the following template:
 
@@ -63,7 +71,7 @@
 
 To use Stardoc, add the following to your `WORKSPACE` file:
 
-```
+```starlark
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
 http_archive(
@@ -78,10 +86,28 @@
 load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories")
 
 stardoc_repositories()
+
+load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
+
+rules_jvm_external_deps()
+
+load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
+
+rules_jvm_external_setup()
+
+load("@io_bazel_stardoc//:deps.bzl", "stardoc_external_deps")
+
+stardoc_external_deps()
+
+load("@stardoc_maven//:defs.bzl", stardoc_pinned_maven_install = "pinned_maven_install")
+
+stardoc_pinned_maven_install()
 ```
 
-The load statement and function call after the `io_bazel_stardoc` repository
-definition ensure that this repository's dependencies are loaded.
+The sequence of function calls and load statements after the `io_bazel_stardoc`
+repository definition ensures that this repository's dependencies are loaded
+(each function call defines additional repositories for Stardoc's dependencies,
+which are then used by subsequent load statements).
 
 **Using the rules**
 
@@ -89,3 +115,40 @@
 
 --------------------------------------------------------------------------------
 
+9.  Obtain [Subresource Integrity](https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description)
+    format checksum for bzlmod:
+
+```bash
+echo -n sha256-; cat bazel-bin/distro/stardoc-$VERSION.tar.gz | openssl dgst -sha256 -binary | base64
+```
+
+10. Create a PR at [Bazel Central Registry](https://github.com/bazelbuild/bazel-central-registry)
+    to update the registry's versions of bazel_skylib and
+    bazel_skylib_gazelle_plugin.
+
+    Use https://github.com/bazelbuild/bazel-central-registry/pull/677 as the
+    model; you will need to update `modules/stardoc/metadata.json` to list the
+    new version in `versions`, and create new $VERSION subdirectories for the
+    updated module, using the latest existing version subdirectories as the
+    guide. Use Subresource Integrity checksums obtained above in the new
+    `source.json` file.
+
+    Ensure that the `MODULE.bazel` file you add in the new $VERSION
+    subdirectory exactly matches the `MODULE.bazel` file packaged in the
+    stardoc-$VERSION.tar.gz tarball - or buildkite checks will fail.
+
+11. Once the Bazel Central Registry PR is merged, insert in the release
+    description after the `WORKSPACE` setup section:
+
+--------------------------------------------------------------------------------
+
+**MODULE.bazel setup**
+
+```starlark
+bazel_dep(name = "stardoc", version = "$VERSION")
+```
+
+For compatibility with `WORKSPACE` setup, add `repo_name = "io_bazel_stardoc"`
+to the `bazel_dep` call.
+
+--------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/legacy_maven_install.json b/legacy_maven_install.json
new file mode 100644
index 0000000..0ff1d50
--- /dev/null
+++ b/legacy_maven_install.json
@@ -0,0 +1,677 @@
+{
+    "dependency_tree": {
+        "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+        "__INPUT_ARTIFACTS_HASH": 1429940565,
+        "__RESOLVED_ARTIFACTS_HASH": 1065334191,
+        "conflict_resolution": {},
+        "dependencies": [
+            {
+                "coord": "com.github.ben-manes.caffeine:caffeine:3.0.5",
+                "dependencies": [
+                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "org.checkerframework:checker-qual:3.19.0"
+                ],
+                "directDependencies": [
+                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "org.checkerframework:checker-qual:3.19.0"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar"
+                ],
+                "packages": [
+                    "com.github.benmanes.caffeine.cache",
+                    "com.github.benmanes.caffeine.cache.stats"
+                ],
+                "sha256": "8a9b54d3506a3b92ee46b217bcee79196b21ca6d52dc2967c686a205fb2f9c15",
+                "url": "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar"
+            },
+            {
+                "coord": "com.github.stephenc.jcip:jcip-annotations:1.0-1",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar"
+                ],
+                "packages": [
+                    "net.jcip.annotations"
+                ],
+                "sha256": "4fccff8382aafc589962c4edb262f6aa595e34f1e11e61057d1c6a96e8fc7323",
+                "url": "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar"
+            },
+            {
+                "coord": "com.google.auto.service:auto-service-annotations:1.0.1",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar"
+                ],
+                "packages": [
+                    "com.google.auto.service"
+                ],
+                "sha256": "c7bec54b7b5588b5967e870341091c5691181d954cf2039f1bf0a6eeb837473b",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar"
+            },
+            {
+                "coord": "com.google.auto.service:auto-service:1.0",
+                "dependencies": [
+                    "com.google.auto.service:auto-service-annotations:1.0.1",
+                    "com.google.auto:auto-common:1.2.1",
+                    "com.google.guava:guava:31.1-jre"
+                ],
+                "directDependencies": [
+                    "com.google.auto.service:auto-service-annotations:1.0.1",
+                    "com.google.auto:auto-common:1.2.1",
+                    "com.google.guava:guava:31.1-jre"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
+                ],
+                "packages": [
+                    "com.google.auto.service.processor"
+                ],
+                "sha256": "4ae44dd05b49a1109a463c0d2aaf920c24f76d1e996bb89f29481c4ff75ec526",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
+            },
+            {
+                "coord": "com.google.auto.value:auto-value-annotations:1.9",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar"
+                ],
+                "packages": [
+                    "com.google.auto.value",
+                    "com.google.auto.value.extension.memoized",
+                    "com.google.auto.value.extension.serializable",
+                    "com.google.auto.value.extension.toprettystring"
+                ],
+                "sha256": "fa5469f4c44ee598a2d8f033ab0a9dcbc6498a0c5e0c998dfa0c2adf51358044",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar"
+            },
+            {
+                "coord": "com.google.auto.value:auto-value:1.8.2",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar"
+                ],
+                "packages": [
+                    "autovalue.shaded.com.google$.auto.common",
+                    "autovalue.shaded.com.google$.auto.service",
+                    "autovalue.shaded.com.google$.common.annotations",
+                    "autovalue.shaded.com.google$.common.base",
+                    "autovalue.shaded.com.google$.common.collect",
+                    "autovalue.shaded.com.google$.common.hash",
+                    "autovalue.shaded.com.google$.common.math",
+                    "autovalue.shaded.com.google$.common.primitives",
+                    "autovalue.shaded.com.google$.common.reflect",
+                    "autovalue.shaded.com.google$.errorprone.annotations",
+                    "autovalue.shaded.com.google$.errorprone.annotations.concurrent",
+                    "autovalue.shaded.com.google$.escapevelocity",
+                    "autovalue.shaded.com.google$.j2objc.annotations",
+                    "autovalue.shaded.com.squareup.javapoet$",
+                    "autovalue.shaded.net.ltgt.gradle.incap$",
+                    "autovalue.shaded.org.checkerframework$.checker.nullness.qual",
+                    "autovalue.shaded.org.checkerframework$.framework.qual",
+                    "com.google.auto.value.extension",
+                    "com.google.auto.value.extension.memoized.processor",
+                    "com.google.auto.value.extension.serializable.processor",
+                    "com.google.auto.value.extension.serializable.serializer",
+                    "com.google.auto.value.extension.serializable.serializer.impl",
+                    "com.google.auto.value.extension.serializable.serializer.interfaces",
+                    "com.google.auto.value.extension.serializable.serializer.runtime",
+                    "com.google.auto.value.extension.toprettystring.processor",
+                    "com.google.auto.value.processor"
+                ],
+                "sha256": "2067b788d4c1c96fd621ad861053a5c4d8a801cfafc77fec20d49a6e9340a745",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar"
+            },
+            {
+                "coord": "com.google.auto:auto-common:1.2.1",
+                "dependencies": [
+                    "com.google.guava:guava:31.1-jre"
+                ],
+                "directDependencies": [
+                    "com.google.guava:guava:31.1-jre"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar"
+                ],
+                "packages": [
+                    "com.google.auto.common"
+                ],
+                "sha256": "f43f29fe2a6ebaf04b2598cdeec32a4e346d49a9404e990f5fc19c19f3a28d0e",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar"
+            },
+            {
+                "coord": "com.google.code.findbugs:jsr305:3.0.2",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar"
+                ],
+                "packages": [
+                    "javax.annotation",
+                    "javax.annotation.concurrent",
+                    "javax.annotation.meta"
+                ],
+                "sha256": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7",
+                "url": "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar"
+            },
+            {
+                "coord": "com.google.code.gson:gson:2.9.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar"
+                ],
+                "packages": [
+                    "com.google.gson",
+                    "com.google.gson.annotations",
+                    "com.google.gson.internal",
+                    "com.google.gson.internal.bind",
+                    "com.google.gson.internal.bind.util",
+                    "com.google.gson.internal.reflect",
+                    "com.google.gson.internal.sql",
+                    "com.google.gson.reflect",
+                    "com.google.gson.stream"
+                ],
+                "sha256": "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d",
+                "url": "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar"
+            },
+            {
+                "coord": "com.google.errorprone:error_prone_annotations:2.18.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar"
+                ],
+                "packages": [
+                    "com.google.errorprone.annotations",
+                    "com.google.errorprone.annotations.concurrent"
+                ],
+                "sha256": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae",
+                "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar"
+            },
+            {
+                "coord": "com.google.errorprone:error_prone_type_annotations:2.18.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar"
+                ],
+                "packages": [
+                    "com.google.errorprone.annotations"
+                ],
+                "sha256": "d2ab73bc6807277f7463391504313e47bc3465ab1916339c8e82be633a9ab375",
+                "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar"
+            },
+            {
+                "coord": "com.google.flogger:flogger-system-backend:0.5.1",
+                "dependencies": [
+                    "com.google.flogger:flogger:0.5.1",
+                    "org.checkerframework:checker-compat-qual:2.5.3"
+                ],
+                "directDependencies": [
+                    "com.google.flogger:flogger:0.5.1",
+                    "org.checkerframework:checker-compat-qual:2.5.3"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar"
+                ],
+                "packages": [
+                    "com.google.common.flogger.backend.system"
+                ],
+                "sha256": "685de33b53eb313049bbeee7f4b7a80dd09e8e754e96b048a3edab2cebb36442",
+                "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar"
+            },
+            {
+                "coord": "com.google.flogger:flogger:0.5.1",
+                "dependencies": [
+                    "com.google.flogger:flogger:0.5.1",
+                    "org.checkerframework:checker-compat-qual:2.5.3"
+                ],
+                "directDependencies": [
+                    "com.google.flogger:flogger:0.5.1",
+                    "org.checkerframework:checker-compat-qual:2.5.3"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar"
+                ],
+                "packages": [
+                    "com.google.common.flogger",
+                    "com.google.common.flogger.backend",
+                    "com.google.common.flogger.context",
+                    "com.google.common.flogger.parameter",
+                    "com.google.common.flogger.parser",
+                    "com.google.common.flogger.util"
+                ],
+                "sha256": "b5ecd1483e041197012786f749968a62063c1964d3ecfbf96ba92a95797bb8f5",
+                "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar"
+            },
+            {
+                "coord": "com.google.flogger:google-extensions:0.5.1",
+                "dependencies": [
+                    "com.google.flogger:flogger:0.5.1",
+                    "org.checkerframework:checker-compat-qual:2.5.3"
+                ],
+                "directDependencies": [
+                    "com.google.flogger:flogger:0.5.1"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar"
+                ],
+                "packages": [
+                    "com.google.common.flogger"
+                ],
+                "sha256": "8b0862cad85b9549f355fe383c6c63816d2f19529634e033ae06d0107ab110b9",
+                "url": "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar"
+            },
+            {
+                "coord": "com.google.guava:failureaccess:1.0.1",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar"
+                ],
+                "packages": [
+                    "com.google.common.util.concurrent.internal"
+                ],
+                "sha256": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26",
+                "url": "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar"
+            },
+            {
+                "coord": "com.google.guava:guava:31.1-jre",
+                "dependencies": [
+                    "com.google.code.findbugs:jsr305:3.0.2",
+                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.guava:failureaccess:1.0.1",
+                    "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+                    "com.google.j2objc:j2objc-annotations:1.3",
+                    "org.checkerframework:checker-qual:3.19.0"
+                ],
+                "directDependencies": [
+                    "com.google.code.findbugs:jsr305:3.0.2",
+                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.guava:failureaccess:1.0.1",
+                    "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+                    "com.google.j2objc:j2objc-annotations:1.3",
+                    "org.checkerframework:checker-qual:3.19.0"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar"
+                ],
+                "packages": [
+                    "com.google.common.annotations",
+                    "com.google.common.base",
+                    "com.google.common.base.internal",
+                    "com.google.common.cache",
+                    "com.google.common.collect",
+                    "com.google.common.escape",
+                    "com.google.common.eventbus",
+                    "com.google.common.graph",
+                    "com.google.common.hash",
+                    "com.google.common.html",
+                    "com.google.common.io",
+                    "com.google.common.math",
+                    "com.google.common.net",
+                    "com.google.common.primitives",
+                    "com.google.common.reflect",
+                    "com.google.common.util.concurrent",
+                    "com.google.common.xml",
+                    "com.google.thirdparty.publicsuffix"
+                ],
+                "sha256": "a42edc9cab792e39fe39bb94f3fca655ed157ff87a8af78e1d6ba5b07c4a00ab",
+                "url": "https://repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar"
+            },
+            {
+                "coord": "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar"
+                ],
+                "packages": [],
+                "sha256": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99",
+                "url": "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar"
+            },
+            {
+                "coord": "com.google.j2objc:j2objc-annotations:1.3",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar"
+                ],
+                "packages": [
+                    "com.google.j2objc.annotations"
+                ],
+                "sha256": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b",
+                "url": "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar"
+            },
+            {
+                "coord": "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
+                "dependencies": [
+                    "com.google.auto.value:auto-value-annotations:1.9",
+                    "com.google.auto.value:auto-value:1.8.2",
+                    "com.google.code.gson:gson:2.9.0",
+                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
+                    "com.squareup:javapoet:1.12.0",
+                    "io.sweers.autotransient:autotransient:1.0.0"
+                ],
+                "directDependencies": [
+                    "com.google.auto.value:auto-value-annotations:1.9",
+                    "com.google.auto.value:auto-value:1.8.2",
+                    "com.google.code.gson:gson:2.9.0",
+                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
+                    "com.squareup:javapoet:1.12.0"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar"
+                ],
+                "packages": [
+                    "autovaluegson.shaded.com.google.auto.common",
+                    "autovaluegson.shaded.com.google.common.annotations",
+                    "autovaluegson.shaded.com.google.common.base",
+                    "autovaluegson.shaded.com.google.common.cache",
+                    "autovaluegson.shaded.com.google.common.collect",
+                    "autovaluegson.shaded.com.google.common.escape",
+                    "autovaluegson.shaded.com.google.common.eventbus",
+                    "autovaluegson.shaded.com.google.common.graph",
+                    "autovaluegson.shaded.com.google.common.hash",
+                    "autovaluegson.shaded.com.google.common.html",
+                    "autovaluegson.shaded.com.google.common.io",
+                    "autovaluegson.shaded.com.google.common.math",
+                    "autovaluegson.shaded.com.google.common.net",
+                    "autovaluegson.shaded.com.google.common.primitives",
+                    "autovaluegson.shaded.com.google.common.reflect",
+                    "autovaluegson.shaded.com.google.common.util.concurrent",
+                    "autovaluegson.shaded.com.google.common.xml",
+                    "com.ryanharter.auto.value.gson"
+                ],
+                "sha256": "261be84be30a56994e132d718a85efcd579197a2edb9426b84c5722c56955eca",
+                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar"
+            },
+            {
+                "coord": "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1",
+                "dependencies": [
+                    "com.google.auto.value:auto-value-annotations:1.9",
+                    "com.google.auto.value:auto-value:1.8.2",
+                    "com.google.code.gson:gson:2.9.0",
+                    "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
+                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
+                    "com.squareup:javapoet:1.12.0",
+                    "io.sweers.autotransient:autotransient:1.0.0"
+                ],
+                "directDependencies": [
+                    "com.google.auto.value:auto-value-annotations:1.9",
+                    "com.google.code.gson:gson:2.9.0",
+                    "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
+                    "com.squareup:javapoet:1.12.0"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar"
+                ],
+                "packages": [
+                    "autovaluegson.factory.shaded.com.google.auto.common",
+                    "autovaluegson.factory.shaded.com.google.common.annotations",
+                    "autovaluegson.factory.shaded.com.google.common.base",
+                    "autovaluegson.factory.shaded.com.google.common.cache",
+                    "autovaluegson.factory.shaded.com.google.common.collect",
+                    "autovaluegson.factory.shaded.com.google.common.escape",
+                    "autovaluegson.factory.shaded.com.google.common.eventbus",
+                    "autovaluegson.factory.shaded.com.google.common.graph",
+                    "autovaluegson.factory.shaded.com.google.common.hash",
+                    "autovaluegson.factory.shaded.com.google.common.html",
+                    "autovaluegson.factory.shaded.com.google.common.io",
+                    "autovaluegson.factory.shaded.com.google.common.math",
+                    "autovaluegson.factory.shaded.com.google.common.net",
+                    "autovaluegson.factory.shaded.com.google.common.primitives",
+                    "autovaluegson.factory.shaded.com.google.common.reflect",
+                    "autovaluegson.factory.shaded.com.google.common.util.concurrent",
+                    "autovaluegson.factory.shaded.com.google.common.xml",
+                    "com.ryanharter.auto.value.gson.factory"
+                ],
+                "sha256": "5a76c3d401c984999d59868f08df05a15613d1428f7764fed80b722e2a277f6c",
+                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar"
+            },
+            {
+                "coord": "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
+                "dependencies": [
+                    "com.google.code.gson:gson:2.9.0",
+                    "io.sweers.autotransient:autotransient:1.0.0"
+                ],
+                "directDependencies": [
+                    "com.google.code.gson:gson:2.9.0",
+                    "io.sweers.autotransient:autotransient:1.0.0"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar"
+                ],
+                "packages": [
+                    "com.ryanharter.auto.value.gson",
+                    "com.ryanharter.auto.value.gson.internal"
+                ],
+                "sha256": "84ee23b7989d4bf19930b5bd3d03c0f2efb9e73bcee3a0208a9d1b2e1979c049",
+                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar"
+            },
+            {
+                "coord": "com.squareup:javapoet:1.12.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar"
+                ],
+                "packages": [
+                    "com.squareup.javapoet"
+                ],
+                "sha256": "2b70cdfa8c9e997b4007035a266c273c0df341f9c57c9d0b45a680ae3fd882db",
+                "url": "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar"
+            },
+            {
+                "coord": "commons-collections:commons-collections:3.2.2",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar"
+                ],
+                "packages": [
+                    "org.apache.commons.collections",
+                    "org.apache.commons.collections.bag",
+                    "org.apache.commons.collections.bidimap",
+                    "org.apache.commons.collections.buffer",
+                    "org.apache.commons.collections.collection",
+                    "org.apache.commons.collections.comparators",
+                    "org.apache.commons.collections.functors",
+                    "org.apache.commons.collections.iterators",
+                    "org.apache.commons.collections.keyvalue",
+                    "org.apache.commons.collections.list",
+                    "org.apache.commons.collections.map",
+                    "org.apache.commons.collections.set"
+                ],
+                "sha256": "eeeae917917144a68a741d4c0dff66aa5c5c5fd85593ff217bced3fc8ca783b8",
+                "url": "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar"
+            },
+            {
+                "coord": "commons-lang:commons-lang:2.6",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"
+                ],
+                "packages": [
+                    "org.apache.commons.lang",
+                    "org.apache.commons.lang.builder",
+                    "org.apache.commons.lang.enum",
+                    "org.apache.commons.lang.enums",
+                    "org.apache.commons.lang.exception",
+                    "org.apache.commons.lang.math",
+                    "org.apache.commons.lang.mutable",
+                    "org.apache.commons.lang.reflect",
+                    "org.apache.commons.lang.text",
+                    "org.apache.commons.lang.time"
+                ],
+                "sha256": "50f11b09f877c294d56f24463f47d28f929cf5044f648661c0f0cfbae9a2f49c",
+                "url": "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"
+            },
+            {
+                "coord": "io.sweers.autotransient:autotransient:1.0.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar"
+                ],
+                "packages": [
+                    "io.sweers.autotransient"
+                ],
+                "sha256": "914ce84508410ee1419514925f93b1855a9f7a7b5b5d02fc07f411d2a45f1bba",
+                "url": "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar"
+            },
+            {
+                "coord": "org.apache.tomcat:tomcat-annotations-api:8.0.5",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar"
+                ],
+                "packages": [
+                    "javax.annotation",
+                    "javax.annotation.security",
+                    "javax.annotation.sql",
+                    "javax.ejb",
+                    "javax.persistence",
+                    "javax.xml.ws"
+                ],
+                "sha256": "748677bebb1651a313317dfd93e984ed8f8c9e345538fa8b0ab0cbb804631953",
+                "url": "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar"
+            },
+            {
+                "coord": "org.apache.velocity:velocity:1.7",
+                "dependencies": [
+                    "commons-collections:commons-collections:3.2.2",
+                    "commons-lang:commons-lang:2.6"
+                ],
+                "directDependencies": [
+                    "commons-collections:commons-collections:3.2.2",
+                    "commons-lang:commons-lang:2.6"
+                ],
+                "file": "v1/https/repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar"
+                ],
+                "packages": [
+                    "org.apache.velocity",
+                    "org.apache.velocity.anakia",
+                    "org.apache.velocity.app",
+                    "org.apache.velocity.app.event",
+                    "org.apache.velocity.app.event.implement",
+                    "org.apache.velocity.app.tools",
+                    "org.apache.velocity.context",
+                    "org.apache.velocity.convert",
+                    "org.apache.velocity.exception",
+                    "org.apache.velocity.io",
+                    "org.apache.velocity.runtime",
+                    "org.apache.velocity.runtime.directive",
+                    "org.apache.velocity.runtime.log",
+                    "org.apache.velocity.runtime.parser",
+                    "org.apache.velocity.runtime.parser.node",
+                    "org.apache.velocity.runtime.resource",
+                    "org.apache.velocity.runtime.resource.loader",
+                    "org.apache.velocity.runtime.resource.util",
+                    "org.apache.velocity.runtime.visitor",
+                    "org.apache.velocity.servlet",
+                    "org.apache.velocity.texen",
+                    "org.apache.velocity.texen.ant",
+                    "org.apache.velocity.texen.util",
+                    "org.apache.velocity.util",
+                    "org.apache.velocity.util.introspection"
+                ],
+                "sha256": "ec92dae810034f4b46dbb16ef4364a4013b0efb24a8c5dd67435cae46a290d8e",
+                "url": "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar"
+            },
+            {
+                "coord": "org.checkerframework:checker-compat-qual:2.5.3",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
+                ],
+                "packages": [
+                    "org.checkerframework.checker.nullness.compatqual"
+                ],
+                "sha256": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d",
+                "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
+            },
+            {
+                "coord": "org.checkerframework:checker-qual:3.19.0",
+                "dependencies": [],
+                "directDependencies": [],
+                "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar",
+                "mirror_urls": [
+                    "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar"
+                ],
+                "packages": [
+                    "org.checkerframework.checker.builder.qual",
+                    "org.checkerframework.checker.calledmethods.qual",
+                    "org.checkerframework.checker.compilermsgs.qual",
+                    "org.checkerframework.checker.fenum.qual",
+                    "org.checkerframework.checker.formatter.qual",
+                    "org.checkerframework.checker.guieffect.qual",
+                    "org.checkerframework.checker.i18n.qual",
+                    "org.checkerframework.checker.i18nformatter.qual",
+                    "org.checkerframework.checker.index.qual",
+                    "org.checkerframework.checker.initialization.qual",
+                    "org.checkerframework.checker.interning.qual",
+                    "org.checkerframework.checker.lock.qual",
+                    "org.checkerframework.checker.mustcall.qual",
+                    "org.checkerframework.checker.nullness.qual",
+                    "org.checkerframework.checker.optional.qual",
+                    "org.checkerframework.checker.propkey.qual",
+                    "org.checkerframework.checker.regex.qual",
+                    "org.checkerframework.checker.signature.qual",
+                    "org.checkerframework.checker.signedness.qual",
+                    "org.checkerframework.checker.tainting.qual",
+                    "org.checkerframework.checker.units.qual",
+                    "org.checkerframework.common.aliasing.qual",
+                    "org.checkerframework.common.initializedfields.qual",
+                    "org.checkerframework.common.reflection.qual",
+                    "org.checkerframework.common.returnsreceiver.qual",
+                    "org.checkerframework.common.subtyping.qual",
+                    "org.checkerframework.common.util.report.qual",
+                    "org.checkerframework.common.value.qual",
+                    "org.checkerframework.dataflow.qual",
+                    "org.checkerframework.framework.qual"
+                ],
+                "sha256": "a827c49183f3a632277d27a0a4673686cb341507447b9d570261094bd748aa68",
+                "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar"
+            }
+        ],
+        "version": "0.1.0"
+    }
+}
diff --git a/maven_install.json b/maven_install.json
index 015c173..387ce2c 100644
--- a/maven_install.json
+++ b/maven_install.json
@@ -1,8 +1,8 @@
 {
     "dependency_tree": {
         "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
-        "__INPUT_ARTIFACTS_HASH": -2046468587,
-        "__RESOLVED_ARTIFACTS_HASH": 1700352167,
+        "__INPUT_ARTIFACTS_HASH": -1307148388,
+        "__RESOLVED_ARTIFACTS_HASH": 1168733205,
         "conflict_resolution": {},
         "dependencies": [
             {
@@ -26,83 +26,12 @@
                 "url": "https://repo1.maven.org/maven2/com/beust/jcommander/1.82/jcommander-1.82.jar"
             },
             {
-                "coord": "com.github.ben-manes.caffeine:caffeine:3.0.5",
-                "dependencies": [
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
-                    "org.checkerframework:checker-qual:3.19.0"
-                ],
-                "directDependencies": [
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
-                    "org.checkerframework:checker-qual:3.19.0"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar"
-                ],
-                "packages": [
-                    "com.github.benmanes.caffeine.cache",
-                    "com.github.benmanes.caffeine.cache.stats"
-                ],
-                "sha256": "8a9b54d3506a3b92ee46b217bcee79196b21ca6d52dc2967c686a205fb2f9c15",
-                "url": "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/caffeine/3.0.5/caffeine-3.0.5.jar"
-            },
-            {
-                "coord": "com.github.stephenc.jcip:jcip-annotations:1.0-1",
+                "coord": "com.google.auto.value:auto-value-annotations:1.8.1",
                 "dependencies": [],
                 "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar",
+                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar",
                 "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar"
-                ],
-                "packages": [
-                    "net.jcip.annotations"
-                ],
-                "sha256": "4fccff8382aafc589962c4edb262f6aa595e34f1e11e61057d1c6a96e8fc7323",
-                "url": "https://repo1.maven.org/maven2/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar"
-            },
-            {
-                "coord": "com.google.auto.service:auto-service-annotations:1.0.1",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar"
-                ],
-                "packages": [
-                    "com.google.auto.service"
-                ],
-                "sha256": "c7bec54b7b5588b5967e870341091c5691181d954cf2039f1bf0a6eeb837473b",
-                "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service-annotations/1.0.1/auto-service-annotations-1.0.1.jar"
-            },
-            {
-                "coord": "com.google.auto.service:auto-service:1.0",
-                "dependencies": [
-                    "com.google.auto.service:auto-service-annotations:1.0.1",
-                    "com.google.auto:auto-common:1.2.1",
-                    "com.google.guava:guava:31.1-jre"
-                ],
-                "directDependencies": [
-                    "com.google.auto.service:auto-service-annotations:1.0.1",
-                    "com.google.auto:auto-common:1.2.1",
-                    "com.google.guava:guava:31.1-jre"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
-                ],
-                "packages": [
-                    "com.google.auto.service.processor"
-                ],
-                "sha256": "4ae44dd05b49a1109a463c0d2aaf920c24f76d1e996bb89f29481c4ff75ec526",
-                "url": "https://repo1.maven.org/maven2/com/google/auto/service/auto-service/1.0/auto-service-1.0.jar"
-            },
-            {
-                "coord": "com.google.auto.value:auto-value-annotations:1.9",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar"
+                    "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar"
                 ],
                 "packages": [
                     "com.google.auto.value",
@@ -110,65 +39,8 @@
                     "com.google.auto.value.extension.serializable",
                     "com.google.auto.value.extension.toprettystring"
                 ],
-                "sha256": "fa5469f4c44ee598a2d8f033ab0a9dcbc6498a0c5e0c998dfa0c2adf51358044",
-                "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.jar"
-            },
-            {
-                "coord": "com.google.auto.value:auto-value:1.8.2",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar"
-                ],
-                "packages": [
-                    "autovalue.shaded.com.google$.auto.common",
-                    "autovalue.shaded.com.google$.auto.service",
-                    "autovalue.shaded.com.google$.common.annotations",
-                    "autovalue.shaded.com.google$.common.base",
-                    "autovalue.shaded.com.google$.common.collect",
-                    "autovalue.shaded.com.google$.common.hash",
-                    "autovalue.shaded.com.google$.common.math",
-                    "autovalue.shaded.com.google$.common.primitives",
-                    "autovalue.shaded.com.google$.common.reflect",
-                    "autovalue.shaded.com.google$.errorprone.annotations",
-                    "autovalue.shaded.com.google$.errorprone.annotations.concurrent",
-                    "autovalue.shaded.com.google$.escapevelocity",
-                    "autovalue.shaded.com.google$.j2objc.annotations",
-                    "autovalue.shaded.com.squareup.javapoet$",
-                    "autovalue.shaded.net.ltgt.gradle.incap$",
-                    "autovalue.shaded.org.checkerframework$.checker.nullness.qual",
-                    "autovalue.shaded.org.checkerframework$.framework.qual",
-                    "com.google.auto.value.extension",
-                    "com.google.auto.value.extension.memoized.processor",
-                    "com.google.auto.value.extension.serializable.processor",
-                    "com.google.auto.value.extension.serializable.serializer",
-                    "com.google.auto.value.extension.serializable.serializer.impl",
-                    "com.google.auto.value.extension.serializable.serializer.interfaces",
-                    "com.google.auto.value.extension.serializable.serializer.runtime",
-                    "com.google.auto.value.extension.toprettystring.processor",
-                    "com.google.auto.value.processor"
-                ],
-                "sha256": "2067b788d4c1c96fd621ad861053a5c4d8a801cfafc77fec20d49a6e9340a745",
-                "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value/1.8.2/auto-value-1.8.2.jar"
-            },
-            {
-                "coord": "com.google.auto:auto-common:1.2.1",
-                "dependencies": [
-                    "com.google.guava:guava:31.1-jre"
-                ],
-                "directDependencies": [
-                    "com.google.guava:guava:31.1-jre"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar"
-                ],
-                "packages": [
-                    "com.google.auto.common"
-                ],
-                "sha256": "f43f29fe2a6ebaf04b2598cdeec32a4e346d49a9404e990f5fc19c19f3a28d0e",
-                "url": "https://repo1.maven.org/maven2/com/google/auto/auto-common/1.2.1/auto-common-1.2.1.jar"
+                "sha256": "37ec09b47d7ed35a99d13927db5c86fc9071f620f943ead5d757144698310852",
+                "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar"
             },
             {
                 "coord": "com.google.code.findbugs:jsr305:3.0.2",
@@ -187,66 +59,30 @@
                 "url": "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar"
             },
             {
-                "coord": "com.google.code.gson:gson:2.9.0",
+                "coord": "com.google.errorprone:error_prone_annotations:2.11.0",
                 "dependencies": [],
                 "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar",
+                "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar",
                 "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar"
-                ],
-                "packages": [
-                    "com.google.gson",
-                    "com.google.gson.annotations",
-                    "com.google.gson.internal",
-                    "com.google.gson.internal.bind",
-                    "com.google.gson.internal.bind.util",
-                    "com.google.gson.internal.reflect",
-                    "com.google.gson.internal.sql",
-                    "com.google.gson.reflect",
-                    "com.google.gson.stream"
-                ],
-                "sha256": "c96d60551331a196dac54b745aa642cd078ef89b6f267146b705f2c2cbef052d",
-                "url": "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.0/gson-2.9.0.jar"
-            },
-            {
-                "coord": "com.google.errorprone:error_prone_annotations:2.18.0",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar"
+                    "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar"
                 ],
                 "packages": [
                     "com.google.errorprone.annotations",
                     "com.google.errorprone.annotations.concurrent"
                 ],
-                "sha256": "9e6814cb71816988a4fd1b07a993a8f21bb7058d522c162b1de849e19bea54ae",
-                "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar"
-            },
-            {
-                "coord": "com.google.errorprone:error_prone_type_annotations:2.18.0",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar"
-                ],
-                "packages": [
-                    "com.google.errorprone.annotations"
-                ],
-                "sha256": "d2ab73bc6807277f7463391504313e47bc3465ab1916339c8e82be633a9ab375",
-                "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_type_annotations/2.18.0/error_prone_type_annotations-2.18.0.jar"
+                "sha256": "721cb91842b46fa056847d104d5225c8b8e1e8b62263b993051e1e5a0137b7ec",
+                "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar"
             },
             {
                 "coord": "com.google.escapevelocity:escapevelocity:1.1",
                 "dependencies": [
                     "com.google.code.findbugs:jsr305:3.0.2",
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.errorprone:error_prone_annotations:2.11.0",
                     "com.google.guava:failureaccess:1.0.1",
                     "com.google.guava:guava:31.1-jre",
                     "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
                     "com.google.j2objc:j2objc-annotations:1.3",
-                    "org.checkerframework:checker-qual:3.19.0"
+                    "org.checkerframework:checker-qual:3.13.0"
                 ],
                 "directDependencies": [
                     "com.google.guava:guava:31.1-jre"
@@ -262,70 +98,6 @@
                 "url": "https://repo1.maven.org/maven2/com/google/escapevelocity/escapevelocity/1.1/escapevelocity-1.1.jar"
             },
             {
-                "coord": "com.google.flogger:flogger-system-backend:0.5.1",
-                "dependencies": [
-                    "com.google.flogger:flogger:0.5.1",
-                    "org.checkerframework:checker-compat-qual:2.5.3"
-                ],
-                "directDependencies": [
-                    "com.google.flogger:flogger:0.5.1",
-                    "org.checkerframework:checker-compat-qual:2.5.3"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar"
-                ],
-                "packages": [
-                    "com.google.common.flogger.backend.system"
-                ],
-                "sha256": "685de33b53eb313049bbeee7f4b7a80dd09e8e754e96b048a3edab2cebb36442",
-                "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger-system-backend/0.5.1/flogger-system-backend-0.5.1.jar"
-            },
-            {
-                "coord": "com.google.flogger:flogger:0.5.1",
-                "dependencies": [
-                    "com.google.flogger:flogger:0.5.1",
-                    "org.checkerframework:checker-compat-qual:2.5.3"
-                ],
-                "directDependencies": [
-                    "com.google.flogger:flogger:0.5.1",
-                    "org.checkerframework:checker-compat-qual:2.5.3"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar"
-                ],
-                "packages": [
-                    "com.google.common.flogger",
-                    "com.google.common.flogger.backend",
-                    "com.google.common.flogger.context",
-                    "com.google.common.flogger.parameter",
-                    "com.google.common.flogger.parser",
-                    "com.google.common.flogger.util"
-                ],
-                "sha256": "b5ecd1483e041197012786f749968a62063c1964d3ecfbf96ba92a95797bb8f5",
-                "url": "https://repo1.maven.org/maven2/com/google/flogger/flogger/0.5.1/flogger-0.5.1.jar"
-            },
-            {
-                "coord": "com.google.flogger:google-extensions:0.5.1",
-                "dependencies": [
-                    "com.google.flogger:flogger:0.5.1",
-                    "org.checkerframework:checker-compat-qual:2.5.3"
-                ],
-                "directDependencies": [
-                    "com.google.flogger:flogger:0.5.1"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar"
-                ],
-                "packages": [
-                    "com.google.common.flogger"
-                ],
-                "sha256": "8b0862cad85b9549f355fe383c6c63816d2f19529634e033ae06d0107ab110b9",
-                "url": "https://repo1.maven.org/maven2/com/google/flogger/google-extensions/0.5.1/google-extensions-0.5.1.jar"
-            },
-            {
                 "coord": "com.google.guava:failureaccess:1.0.1",
                 "dependencies": [],
                 "directDependencies": [],
@@ -343,19 +115,19 @@
                 "coord": "com.google.guava:guava:31.1-jre",
                 "dependencies": [
                     "com.google.code.findbugs:jsr305:3.0.2",
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.errorprone:error_prone_annotations:2.11.0",
                     "com.google.guava:failureaccess:1.0.1",
                     "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
                     "com.google.j2objc:j2objc-annotations:1.3",
-                    "org.checkerframework:checker-qual:3.19.0"
+                    "org.checkerframework:checker-qual:3.13.0"
                 ],
                 "directDependencies": [
                     "com.google.code.findbugs:jsr305:3.0.2",
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.errorprone:error_prone_annotations:2.11.0",
                     "com.google.guava:failureaccess:1.0.1",
                     "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava",
                     "com.google.j2objc:j2objc-annotations:1.3",
-                    "org.checkerframework:checker-qual:3.19.0"
+                    "org.checkerframework:checker-qual:3.13.0"
                 ],
                 "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar",
                 "mirror_urls": [
@@ -413,20 +185,20 @@
             {
                 "coord": "com.google.truth:truth:1.1.3",
                 "dependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.auto.value:auto-value-annotations:1.8.1",
+                    "com.google.errorprone:error_prone_annotations:2.11.0",
                     "com.google.guava:guava:31.1-jre",
                     "junit:junit:4.13.2",
-                    "org.checkerframework:checker-qual:3.19.0",
+                    "org.checkerframework:checker-qual:3.13.0",
                     "org.hamcrest:hamcrest-core:1.3",
                     "org.ow2.asm:asm:9.1"
                 ],
                 "directDependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.errorprone:error_prone_annotations:2.18.0",
+                    "com.google.auto.value:auto-value-annotations:1.8.1",
+                    "com.google.errorprone:error_prone_annotations:2.11.0",
                     "com.google.guava:guava:31.1-jre",
                     "junit:junit:4.13.2",
-                    "org.checkerframework:checker-qual:3.19.0",
+                    "org.checkerframework:checker-qual:3.13.0",
                     "org.ow2.asm:asm:9.1"
                 ],
                 "file": "v1/https/repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar",
@@ -440,191 +212,6 @@
                 "url": "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar"
             },
             {
-                "coord": "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
-                "dependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.auto.value:auto-value:1.8.2",
-                    "com.google.code.gson:gson:2.9.0",
-                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
-                    "com.squareup:javapoet:1.12.0",
-                    "io.sweers.autotransient:autotransient:1.0.0"
-                ],
-                "directDependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.auto.value:auto-value:1.8.2",
-                    "com.google.code.gson:gson:2.9.0",
-                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
-                    "com.squareup:javapoet:1.12.0"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar"
-                ],
-                "packages": [
-                    "autovaluegson.shaded.com.google.auto.common",
-                    "autovaluegson.shaded.com.google.common.annotations",
-                    "autovaluegson.shaded.com.google.common.base",
-                    "autovaluegson.shaded.com.google.common.cache",
-                    "autovaluegson.shaded.com.google.common.collect",
-                    "autovaluegson.shaded.com.google.common.escape",
-                    "autovaluegson.shaded.com.google.common.eventbus",
-                    "autovaluegson.shaded.com.google.common.graph",
-                    "autovaluegson.shaded.com.google.common.hash",
-                    "autovaluegson.shaded.com.google.common.html",
-                    "autovaluegson.shaded.com.google.common.io",
-                    "autovaluegson.shaded.com.google.common.math",
-                    "autovaluegson.shaded.com.google.common.net",
-                    "autovaluegson.shaded.com.google.common.primitives",
-                    "autovaluegson.shaded.com.google.common.reflect",
-                    "autovaluegson.shaded.com.google.common.util.concurrent",
-                    "autovaluegson.shaded.com.google.common.xml",
-                    "com.ryanharter.auto.value.gson"
-                ],
-                "sha256": "261be84be30a56994e132d718a85efcd579197a2edb9426b84c5722c56955eca",
-                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-extension/1.3.1/auto-value-gson-extension-1.3.1.jar"
-            },
-            {
-                "coord": "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1",
-                "dependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.auto.value:auto-value:1.8.2",
-                    "com.google.code.gson:gson:2.9.0",
-                    "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
-                    "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
-                    "com.squareup:javapoet:1.12.0",
-                    "io.sweers.autotransient:autotransient:1.0.0"
-                ],
-                "directDependencies": [
-                    "com.google.auto.value:auto-value-annotations:1.9",
-                    "com.google.code.gson:gson:2.9.0",
-                    "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
-                    "com.squareup:javapoet:1.12.0"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar"
-                ],
-                "packages": [
-                    "autovaluegson.factory.shaded.com.google.auto.common",
-                    "autovaluegson.factory.shaded.com.google.common.annotations",
-                    "autovaluegson.factory.shaded.com.google.common.base",
-                    "autovaluegson.factory.shaded.com.google.common.cache",
-                    "autovaluegson.factory.shaded.com.google.common.collect",
-                    "autovaluegson.factory.shaded.com.google.common.escape",
-                    "autovaluegson.factory.shaded.com.google.common.eventbus",
-                    "autovaluegson.factory.shaded.com.google.common.graph",
-                    "autovaluegson.factory.shaded.com.google.common.hash",
-                    "autovaluegson.factory.shaded.com.google.common.html",
-                    "autovaluegson.factory.shaded.com.google.common.io",
-                    "autovaluegson.factory.shaded.com.google.common.math",
-                    "autovaluegson.factory.shaded.com.google.common.net",
-                    "autovaluegson.factory.shaded.com.google.common.primitives",
-                    "autovaluegson.factory.shaded.com.google.common.reflect",
-                    "autovaluegson.factory.shaded.com.google.common.util.concurrent",
-                    "autovaluegson.factory.shaded.com.google.common.xml",
-                    "com.ryanharter.auto.value.gson.factory"
-                ],
-                "sha256": "5a76c3d401c984999d59868f08df05a15613d1428f7764fed80b722e2a277f6c",
-                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-factory/1.3.1/auto-value-gson-factory-1.3.1.jar"
-            },
-            {
-                "coord": "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
-                "dependencies": [
-                    "com.google.code.gson:gson:2.9.0",
-                    "io.sweers.autotransient:autotransient:1.0.0"
-                ],
-                "directDependencies": [
-                    "com.google.code.gson:gson:2.9.0",
-                    "io.sweers.autotransient:autotransient:1.0.0"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar"
-                ],
-                "packages": [
-                    "com.ryanharter.auto.value.gson",
-                    "com.ryanharter.auto.value.gson.internal"
-                ],
-                "sha256": "84ee23b7989d4bf19930b5bd3d03c0f2efb9e73bcee3a0208a9d1b2e1979c049",
-                "url": "https://repo1.maven.org/maven2/com/ryanharter/auto/value/auto-value-gson-runtime/1.3.1/auto-value-gson-runtime-1.3.1.jar"
-            },
-            {
-                "coord": "com.squareup:javapoet:1.12.0",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar"
-                ],
-                "packages": [
-                    "com.squareup.javapoet"
-                ],
-                "sha256": "2b70cdfa8c9e997b4007035a266c273c0df341f9c57c9d0b45a680ae3fd882db",
-                "url": "https://repo1.maven.org/maven2/com/squareup/javapoet/1.12.0/javapoet-1.12.0.jar"
-            },
-            {
-                "coord": "commons-collections:commons-collections:3.2.2",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar"
-                ],
-                "packages": [
-                    "org.apache.commons.collections",
-                    "org.apache.commons.collections.bag",
-                    "org.apache.commons.collections.bidimap",
-                    "org.apache.commons.collections.buffer",
-                    "org.apache.commons.collections.collection",
-                    "org.apache.commons.collections.comparators",
-                    "org.apache.commons.collections.functors",
-                    "org.apache.commons.collections.iterators",
-                    "org.apache.commons.collections.keyvalue",
-                    "org.apache.commons.collections.list",
-                    "org.apache.commons.collections.map",
-                    "org.apache.commons.collections.set"
-                ],
-                "sha256": "eeeae917917144a68a741d4c0dff66aa5c5c5fd85593ff217bced3fc8ca783b8",
-                "url": "https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar"
-            },
-            {
-                "coord": "commons-lang:commons-lang:2.6",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"
-                ],
-                "packages": [
-                    "org.apache.commons.lang",
-                    "org.apache.commons.lang.builder",
-                    "org.apache.commons.lang.enum",
-                    "org.apache.commons.lang.enums",
-                    "org.apache.commons.lang.exception",
-                    "org.apache.commons.lang.math",
-                    "org.apache.commons.lang.mutable",
-                    "org.apache.commons.lang.reflect",
-                    "org.apache.commons.lang.text",
-                    "org.apache.commons.lang.time"
-                ],
-                "sha256": "50f11b09f877c294d56f24463f47d28f929cf5044f648661c0f0cfbae9a2f49c",
-                "url": "https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"
-            },
-            {
-                "coord": "io.sweers.autotransient:autotransient:1.0.0",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar"
-                ],
-                "packages": [
-                    "io.sweers.autotransient"
-                ],
-                "sha256": "914ce84508410ee1419514925f93b1855a9f7a7b5b5d02fc07f411d2a45f1bba",
-                "url": "https://repo1.maven.org/maven2/io/sweers/autotransient/autotransient/1.0.0/autotransient-1.0.0.jar"
-            },
-            {
                 "coord": "junit:junit:4.13.2",
                 "dependencies": [
                     "org.hamcrest:hamcrest-core:1.3"
@@ -674,89 +261,12 @@
                 "url": "https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar"
             },
             {
-                "coord": "org.apache.tomcat:tomcat-annotations-api:8.0.5",
+                "coord": "org.checkerframework:checker-qual:3.13.0",
                 "dependencies": [],
                 "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar",
+                "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.13.0/checker-qual-3.13.0.jar",
                 "mirror_urls": [
-                    "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar"
-                ],
-                "packages": [
-                    "javax.annotation",
-                    "javax.annotation.security",
-                    "javax.annotation.sql",
-                    "javax.ejb",
-                    "javax.persistence",
-                    "javax.xml.ws"
-                ],
-                "sha256": "748677bebb1651a313317dfd93e984ed8f8c9e345538fa8b0ab0cbb804631953",
-                "url": "https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-annotations-api/8.0.5/tomcat-annotations-api-8.0.5.jar"
-            },
-            {
-                "coord": "org.apache.velocity:velocity:1.7",
-                "dependencies": [
-                    "commons-collections:commons-collections:3.2.2",
-                    "commons-lang:commons-lang:2.6"
-                ],
-                "directDependencies": [
-                    "commons-collections:commons-collections:3.2.2",
-                    "commons-lang:commons-lang:2.6"
-                ],
-                "file": "v1/https/repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar"
-                ],
-                "packages": [
-                    "org.apache.velocity",
-                    "org.apache.velocity.anakia",
-                    "org.apache.velocity.app",
-                    "org.apache.velocity.app.event",
-                    "org.apache.velocity.app.event.implement",
-                    "org.apache.velocity.app.tools",
-                    "org.apache.velocity.context",
-                    "org.apache.velocity.convert",
-                    "org.apache.velocity.exception",
-                    "org.apache.velocity.io",
-                    "org.apache.velocity.runtime",
-                    "org.apache.velocity.runtime.directive",
-                    "org.apache.velocity.runtime.log",
-                    "org.apache.velocity.runtime.parser",
-                    "org.apache.velocity.runtime.parser.node",
-                    "org.apache.velocity.runtime.resource",
-                    "org.apache.velocity.runtime.resource.loader",
-                    "org.apache.velocity.runtime.resource.util",
-                    "org.apache.velocity.runtime.visitor",
-                    "org.apache.velocity.servlet",
-                    "org.apache.velocity.texen",
-                    "org.apache.velocity.texen.ant",
-                    "org.apache.velocity.texen.util",
-                    "org.apache.velocity.util",
-                    "org.apache.velocity.util.introspection"
-                ],
-                "sha256": "ec92dae810034f4b46dbb16ef4364a4013b0efb24a8c5dd67435cae46a290d8e",
-                "url": "https://repo1.maven.org/maven2/org/apache/velocity/velocity/1.7/velocity-1.7.jar"
-            },
-            {
-                "coord": "org.checkerframework:checker-compat-qual:2.5.3",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
-                ],
-                "packages": [
-                    "org.checkerframework.checker.nullness.compatqual"
-                ],
-                "sha256": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d",
-                "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar"
-            },
-            {
-                "coord": "org.checkerframework:checker-qual:3.19.0",
-                "dependencies": [],
-                "directDependencies": [],
-                "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar",
-                "mirror_urls": [
-                    "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar"
+                    "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.13.0/checker-qual-3.13.0.jar"
                 ],
                 "packages": [
                     "org.checkerframework.checker.builder.qual",
@@ -771,7 +281,6 @@
                     "org.checkerframework.checker.initialization.qual",
                     "org.checkerframework.checker.interning.qual",
                     "org.checkerframework.checker.lock.qual",
-                    "org.checkerframework.checker.mustcall.qual",
                     "org.checkerframework.checker.nullness.qual",
                     "org.checkerframework.checker.optional.qual",
                     "org.checkerframework.checker.propkey.qual",
@@ -790,8 +299,8 @@
                     "org.checkerframework.dataflow.qual",
                     "org.checkerframework.framework.qual"
                 ],
-                "sha256": "a827c49183f3a632277d27a0a4673686cb341507447b9d570261094bd748aa68",
-                "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.jar"
+                "sha256": "3ea0dcd73b4d6cb2fb34bd7ed4dad6db327a01ebad7db05eb7894076b3d64491",
+                "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.13.0/checker-qual-3.13.0.jar"
             },
             {
                 "coord": "org.hamcrest:hamcrest-core:1.3",
diff --git a/setup.bzl b/setup.bzl
index 3009dae..0eddb96 100644
--- a/setup.bzl
+++ b/setup.bzl
@@ -12,17 +12,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Repository external dependency resolution functions."""
+"""WORKSPACE prerequisites for Stardoc."""
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-def _include_if_not_defined(repo_rule, name, **kwargs):
-    if not native.existing_rule(name):
-        repo_rule(name = name, **kwargs)
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
 
 def stardoc_repositories():
-    """Adds the external repositories used by the Starlark rules."""
-    _include_if_not_defined(
+    """Adds the external repositories for rules used by Stardoc."""
+    maybe(
         http_archive,
         name = "bazel_skylib",
         urls = [
@@ -31,7 +28,19 @@
         ],
         sha256 = "66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa",
     )
-    _include_if_not_defined(
+
+    maybe(
+        http_archive,
+        name = "com_google_protobuf",
+        sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae",
+        strip_prefix = "protobuf-21.7",
+        urls = [
+            "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz",
+            "https://github.com/protocolbuffers/protobuf/archive/v21.7.tar.gz",
+        ],
+    )
+
+    maybe(
         http_archive,
         name = "rules_java",
         urls = [
@@ -40,7 +49,20 @@
         ],
         sha256 = "76402a50ae6859d50bd7aed8c1b8ef09dae5c1035bb3ca7d276f7f3ce659818a",
     )
-    _include_if_not_defined(
+
+    RULES_JVM_EXTERNAL_TAG = "4.5"
+    RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
+    maybe(
+        http_archive,
+        name = "rules_jvm_external",
+        patch_args = ["-p1"],
+        patches = ["@io_bazel_stardoc//:rules_jvm_external.patch"],
+        sha256 = RULES_JVM_EXTERNAL_SHA,
+        strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
+        url = "https://github.com/bazelbuild/rules_jvm_external/archive/refs/tags/%s.zip" % RULES_JVM_EXTERNAL_TAG,
+    )
+
+    maybe(
         http_archive,
         name = "rules_license",
         urls = [
@@ -49,3 +71,25 @@
         ],
         sha256 = "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360",
     )
+
+    # Transitive dep of com_google_protobuf. Unfortunately, protobuf_deps()
+    # pulls in a dep that's too old.
+    maybe(
+        http_archive,
+        name = "rules_proto",
+        sha256 = "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd",
+        strip_prefix = "rules_proto-5.3.0-21.7",
+        urls = [
+            "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz",
+        ],
+    )
+
+    # Transitive dep of com_google_protobuf. Unfortunately, protobuf_deps()
+    # pulls in a dep that's too old.
+    maybe(
+        http_archive,
+        name = "rules_python",
+        sha256 = "a644da969b6824cc87f8fe7b18101a8a6c57da5db39caa6566ec6109f37d2141",
+        strip_prefix = "rules_python-0.20.0",
+        url = "https://github.com/bazelbuild/rules_python/releases/download/0.20.0/rules_python-0.20.0.tar.gz",
+    )
diff --git a/src/main/java/com/google/devtools/build/skydoc/renderer/BUILD b/src/main/java/com/google/devtools/build/skydoc/renderer/BUILD
index db17567..deab52e 100644
--- a/src/main/java/com/google/devtools/build/skydoc/renderer/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/renderer/BUILD
@@ -39,7 +39,7 @@
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
         "//stardoc/proto:stardoc_output_java_proto",
         "@com_google_protobuf//:protobuf_java",
-        "@maven//:com_beust_jcommander",
-        "@maven//:com_google_guava_guava",
+        "@stardoc_maven//:com_beust_jcommander",
+        "@stardoc_maven//:com_google_guava_guava",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/skydoc/rendering/BUILD b/src/main/java/com/google/devtools/build/skydoc/rendering/BUILD
index 0153417..014af3b 100644
--- a/src/main/java/com/google/devtools/build/skydoc/rendering/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/rendering/BUILD
@@ -21,7 +21,7 @@
     ),
     deps = [
         "//stardoc/proto:stardoc_output_java_proto",
-        "@maven//:com_google_escapevelocity_escapevelocity",
-        "@maven//:com_google_guava_guava",
+        "@stardoc_maven//:com_google_escapevelocity_escapevelocity",
+        "@stardoc_maven//:com_google_guava_guava",
     ],
 )
diff --git a/src/test/java/com/google/devtools/build/skydoc/rendering/BUILD b/src/test/java/com/google/devtools/build/skydoc/rendering/BUILD
index 3405102..2b89f20 100644
--- a/src/test/java/com/google/devtools/build/skydoc/rendering/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/rendering/BUILD
@@ -21,7 +21,7 @@
     srcs = ["MarkdownUtilTest.java"],
     deps = [
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
-        "@maven//:com_google_truth_truth",
-        "@maven//:junit_junit",
+        "@stardoc_maven//:com_google_truth_truth",
+        "@stardoc_maven//:junit_junit",
     ],
 )