)]}'
{
  "log": [
    {
      "commit": "76086193541ca88c2fa02b695c15a2fdf8aff989",
      "tree": "c3115b6734c8112b4856318a7b5c0d109938ca62",
      "parents": [
        "841aaefb3e76f4948f6e4172fd0183971a359518"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Aug 07 13:58:03 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Aug 07 13:59:09 2026"
      },
      "message": "Improve UnnamedVariable documentation\n\nPiperOrigin-RevId: 960906256\n"
    },
    {
      "commit": "841aaefb3e76f4948f6e4172fd0183971a359518",
      "tree": "3e2428c587e389fcc5f88bb67c6bfd1edd8d4fe1",
      "parents": [
        "59ab20811fb05aefbad052d1280a12ea70626569"
      ],
      "author": {
        "name": "Michael Diamond",
        "email": "diamondm@google.com",
        "time": "Wed Aug 05 17:09:23 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Aug 05 17:10:11 2026"
      },
      "message": "Add links to outage caused by this bug. Referenced in http://b/18854585#comment5.\n\nPiperOrigin-RevId: 959726600\n"
    },
    {
      "commit": "59ab20811fb05aefbad052d1280a12ea70626569",
      "tree": "51fc9989801ba3178bab0f75b5cd62fc7ff37d58",
      "parents": [
        "eb5a7e440484a415630bc0bc7742e383ca803521"
      ],
      "author": {
        "name": "Error Prone Team",
        "email": "java-team-github-bot@google.com",
        "time": "Tue Aug 04 18:10:16 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Aug 04 18:11:34 2026"
      },
      "message": "Add `java.util.Properties` to `WellKnownThreadSafety`.\n\nPiperOrigin-RevId: 959124000\n"
    },
    {
      "commit": "eb5a7e440484a415630bc0bc7742e383ca803521",
      "tree": "ae2b3685efdd004c28042d182a7eedd47a5b54da",
      "parents": [
        "4144d4a366e9ae492c62c6c06b97705cf1b335bf"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Tue Aug 04 17:19:30 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Aug 04 17:20:41 2026"
      },
      "message": "Ignore unused local variables in Refaster templates.\n\nAlso, test the existing handling of _parameters_ in Refaster templates from https://github.com/google/error-prone/pull/4060.\n\nPiperOrigin-RevId: 959093859\n"
    },
    {
      "commit": "4144d4a366e9ae492c62c6c06b97705cf1b335bf",
      "tree": "61dd78773fa61926d5048ef5984c07e91e9ef49b",
      "parents": [
        "57ac6b98525e695ed847d1ce0a0ef49a593e36e1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 03 18:46:02 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Aug 03 20:52:06 2026"
      },
      "message": "Bump the github-actions group across 1 directory with 2 updates\n\nBumps the github-actions group with 2 updates in the / directory: [actions/setup-java](https://github.com/actions/setup-java) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).\n\n\nUpdates `actions/setup-java` from 5.6.0 to 5.7.0\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/03ad4de0992f5dab5e18fcb136590ce7c4a0ac95...b6effb05e454b25005698d916606bdc6ffcbf961)\n\nUpdates `softprops/action-gh-release` from 3.0.1 to 3.0.2\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/action-gh-release/compare/718ea10b132b3b2eba29c1007bb80653f286566b...3d0d9888cb7fd7b750713d6e236d1fcb99157228)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\n- dependency-name: softprops/action-gh-release\n  dependency-version: 3.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "57ac6b98525e695ed847d1ce0a0ef49a593e36e1",
      "tree": "2e894a2d7464f84adf06ff5bee1e74f54bd86efb",
      "parents": [
        "60ceb270db9cc2890351335bbe2442f5bbda1356"
      ],
      "author": {
        "name": "Chris Povirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jul 31 21:53:58 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Aug 03 18:43:56 2026"
      },
      "message": "Address [excessive permissions](https://docs.zizmor.sh/audits/#excessive-permissions).\n"
    },
    {
      "commit": "60ceb270db9cc2890351335bbe2442f5bbda1356",
      "tree": "e077a3812b28024319e7c7b2cc0e42b1f8a18bc5",
      "parents": [
        "531c01d139ac6268bdd0030a2612d7bbdd5c06a6"
      ],
      "author": {
        "name": "Chris Povirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jul 31 21:24:21 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Aug 03 18:43:56 2026"
      },
      "message": "Improve version comments.\n"
    },
    {
      "commit": "531c01d139ac6268bdd0030a2612d7bbdd5c06a6",
      "tree": "0611846cc358e3a9f9f6d1383e697e8ff290506b",
      "parents": [
        "c7b004af339be7ca9140b7b70a11312e48878f25"
      ],
      "author": {
        "name": "Chris Povirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jul 31 19:47:54 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Aug 03 18:43:56 2026"
      },
      "message": "Address `zizmor` findings:\n\n- [`persist-credentials: false`](https://docs.zizmor.sh/audits/#artipacked)\n- [pinning `uses`](https://docs.zizmor.sh/audits/#unpinned-uses)\n\nThere may be other findings, but these are the easy one.\n"
    },
    {
      "commit": "c7b004af339be7ca9140b7b70a11312e48878f25",
      "tree": "bbbe47a6defd025fc51125d7127a4789de5d4da0",
      "parents": [
        "a2017138ccfae362a2ddb6ca44d1bd2985a829ce"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Aug 02 17:22:58 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sun Aug 02 17:23:47 2026"
      },
      "message": "Bump the dependencies group with 2 updates\n\nBumps the dependencies group with 2 updates: [org.apache.maven.plugins:maven-toolchains-plugin](https://github.com/apache/maven-toolchains-plugin) and [org.safere:safere](https://github.com/eaftan/safere).\n\nUpdates `org.apache.maven.plugins:maven-toolchains-plugin` from 3.2.0 to 3.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/releases\"\u003eorg.apache.maven.plugins:maven-toolchains-plugin\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e🚀 New features and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDiscover additional JDKs on Windows (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/140\"\u003e#140\u003c/a\u003e) (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/143\"\u003e#143\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Okeanos\"\u003e\u003ccode\u003e@​Okeanos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLog matching discovered toolchain as info in select-jdk-toolchain mojo (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/144\"\u003e#144\u003c/a\u003e) \u003ca href\u003d\"https://github.com/HannesWell\"\u003e\u003ccode\u003e@​HannesWell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd additional locations for auto-discovery to scan (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/130\"\u003e#130\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Okeanos\"\u003e\u003ccode\u003e@​Okeanos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix matching against one of multiple env-variables pointing to one JDK (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/148\"\u003e#148\u003c/a\u003e) \u003ca href\u003d\"https://github.com/HannesWell\"\u003e\u003ccode\u003e@​HannesWell\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/145\"\u003e#145\u003c/a\u003e: JDKs installed by asdf are not discovered. (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/146\"\u003e#146\u003c/a\u003e) \u003ca href\u003d\"https://github.com/mbutov\"\u003e\u003ccode\u003e@​mbutov\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://issues.apache.org/jira/browse/MTOOLCHAINS-53\"\u003e[MTOOLCHAINS-53]\u003c/a\u003e - Fix possible NPE (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/54\"\u003e#54\u003c/a\u003e) \u003ca href\u003d\"https://github.com/gnodet\"\u003e\u003ccode\u003e@​gnodet\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📝 Documentation updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate toolchains documentation to use JSR-330 terminology and links (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/165\"\u003e#165\u003c/a\u003e) \u003ca href\u003d\"https://github.com/slawekjaranowski\"\u003e\u003ccode\u003e@​slawekjaranowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Maven site links in See Also menu (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/155\"\u003e#155\u003c/a\u003e) \u003ca href\u003d\"https://github.com/euiwpoi\"\u003e\u003ccode\u003e@​euiwpoi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://issues.apache.org/jira/browse/MNGSITE-529\"\u003e[MNGSITE-529]\u003c/a\u003e - Rename \u0026quot;Goals\u0026quot; to \u0026quot;Plugin Documentation\u0026quot; (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/48\"\u003e#48\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Bukama\"\u003e\u003ccode\u003e@​Bukama\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👻 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace Plexus XML configuration with JSR-330 annotated beans (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/160\"\u003e#160\u003c/a\u003e) \u003ca href\u003d\"https://github.com/slawekjaranowski\"\u003e\u003ccode\u003e@​slawekjaranowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd .asf.yaml project metadata for ATR (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/158\"\u003e#158\u003c/a\u003e) \u003ca href\u003d\"https://github.com/slawekjaranowski\"\u003e\u003ccode\u003e@​slawekjaranowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate site descriptors and download page content (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/159\"\u003e#159\u003c/a\u003e) \u003ca href\u003d\"https://github.com/slawekjaranowski\"\u003e\u003ccode\u003e@​slawekjaranowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: enable prevent branch protection rules (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/131\"\u003e#131\u003c/a\u003e) \u003ca href\u003d\"https://github.com/sebtiem\"\u003e\u003ccode\u003e@​sebtiem\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrefer Inject API over plexus-component-annotations (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/127\"\u003e#127\u003c/a\u003e) \u003ca href\u003d\"https://github.com/olamy\"\u003e\u003ccode\u003e@​olamy\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove Jira URL (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/84\"\u003e#84\u003c/a\u003e) \u003ca href\u003d\"https://github.com/sparsick\"\u003e\u003ccode\u003e@​sparsick\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable Github Issues (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/55\"\u003e#55\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Bukama\"\u003e\u003ccode\u003e@​Bukama\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove Java 5 references and clean up (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/24\"\u003e#24\u003c/a\u003e) \u003ca href\u003d\"https://github.com/elharo\"\u003e\u003ccode\u003e@​elharo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📦 Dependency updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump apache/maven-gh-actions-shared/.github/workflows/release-drafter.yml from 4 to 5 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/162\"\u003e#162\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump apache/maven-gh-actions-shared/.github/workflows/stale.yml from 4 to 5 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/161\"\u003e#161\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml from 4 to 5 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/163\"\u003e#163\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml from 4 to 5 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/164\"\u003e#164\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate plexus-utils to 3.6.1 in IT dependencies (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/157\"\u003e#157\u003c/a\u003e) \u003ca href\u003d\"https://github.com/slawekjaranowski\"\u003e\u003ccode\u003e@​slawekjaranowski\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 48 to 49 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/156\"\u003e#156\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.15 to 3.9.16 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/154\"\u003e#154\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 47 to 48 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/153\"\u003e#153\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.14 to 3.9.15 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/151\"\u003e#151\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.13 to 3.9.14 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/149\"\u003e#149\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.12 to 3.9.13 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/147\"\u003e#147\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate to 47 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/138\"\u003e#138\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Bukama\"\u003e\u003ccode\u003e@​Bukama\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.10 to 3.9.11 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/124\"\u003e#124\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 44 to 45 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/61\"\u003e#61\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.9 to 3.9.10 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/60\"\u003e#60\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://issues.apache.org/jira/browse/MTOOLCHAINS-64\"\u003e[MTOOLCHAINS-64]\u003c/a\u003e - Bump org.apache.maven.plugins:maven-plugins from 43 to 44 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/52\"\u003e#52\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.junit:junit-bom from 5.12.0 to 5.12.1 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/pull/51\"\u003e#51\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/52474c04f074dec34db005886bcba3f9c5db78f7\"\u003e\u003ccode\u003e52474c0\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release maven-toolchains-plugin-3.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/39e84b2e86751264f4cc89be87ea8d9a93c2fdca\"\u003e\u003ccode\u003e39e84b2\u003c/code\u003e\u003c/a\u003e Update toolchains documentation to use JSR-330 terminology and links (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/a213292b980768a480bd87bb271d772c2b215906\"\u003e\u003ccode\u003ea213292\u003c/code\u003e\u003c/a\u003e Bump apache/maven-gh-actions-shared/.github/workflows/release-drafter.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/2402d77e3d12719fa18b1e08f66635287ec42d0f\"\u003e\u003ccode\u003e2402d77\u003c/code\u003e\u003c/a\u003e Replace Plexus XML configuration with JSR-330 annotated beans (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/ab80fc840732538637f13c8082b2d01b2d2dc2ce\"\u003e\u003ccode\u003eab80fc8\u003c/code\u003e\u003c/a\u003e Bump apache/maven-gh-actions-shared/.github/workflows/stale.yml (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/525f40c3ff59a6acce3598334e5843260d61d98e\"\u003e\u003ccode\u003e525f40c\u003c/code\u003e\u003c/a\u003e Bump apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/d3960b93d3c59dd47ac4e60f74715ae31c1f7b6c\"\u003e\u003ccode\u003ed3960b9\u003c/code\u003e\u003c/a\u003e Bump apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml (\u003ca href\u003d\"https://redirect.github.com/apache/maven-toolchains-plugin/issues/164\"\u003e#164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/e0b39a6ca45d9b78a5065c3bcc2dad4a0949f816\"\u003e\u003ccode\u003ee0b39a6\u003c/code\u003e\u003c/a\u003e Add .asf.yaml project metadata for ATR\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/e53bcec19fb51c7097050c841171043eab90920f\"\u003e\u003ccode\u003ee53bcec\u003c/code\u003e\u003c/a\u003e Add tag-template to release-drafter config\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/commit/df6df088f12ba10e29f3109a8573e6374b65bb2a\"\u003e\u003ccode\u003edf6df08\u003c/code\u003e\u003c/a\u003e Update site descriptors and download page content\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/apache/maven-toolchains-plugin/compare/maven-toolchains-plugin-3.2.0...maven-toolchains-plugin-3.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.safere:safere` from 0.9.0 to 0.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/eaftan/safere/releases\"\u003eorg.safere:safere\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSafeRE 0.10.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThis release adds structured static and runtime regex diagnostics, improves several successful-match and replacement paths, and expands the benchmark infrastructure used to compare SafeRE with other regex engines.\u003c/p\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ePattern.analysis()\u003c/code\u003e for immutable static information about pattern features, engine capabilities, limitations, program size, and captures, plus a process-wide \u003ccode\u003eSafeReMatchDiagnostics\u003c/code\u003e listener that reports the strategies used by matching and replacement operations without exposing pattern or input text. Runtime diagnostics remain disabled by default and the disabled path does not allocate diagnostics state. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccelerated long-input multi-byte literal searches over UTF-8 input with a SWAR candidate filter while preserving linear-time fallback behavior; measured absent-literal scans improved by 2.2–6.2×, with explicit Boyer-Moore-Horspool batching preserving short-input throughput. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/580\"\u003e#580\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduced repeated capture-extraction work after callers request inner captures, improving representative log parsing by 1.85× and stack-trace extraction by 1.51×. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded a single backward-scan path for greedy whole-input wrappers around word-bounded ASCII case-insensitive keyword alternatives, producing improvements from 108× at 1,000 characters to 14,726× at 100,000 characters in the measured matching workload. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved redundant anchored DFA verification passes when forward and reverse bounds are authoritative, improving representative successful searches by 1.21–1.33×. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved replacement fast paths by recording template capture demand earlier and directly handling nullable repeated character classes with literal templates; measured empty-match \u003ccode\u003ereplaceAll\u003c/code\u003e improved by 7.22× and Pig Latin replacement by 1.20×. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the benchmark report with reproducible same-runtime and cross-language comparisons, and integrated the separately licensed OpenJDK-derived regex benchmark suite into the standard collection workflow. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/581\"\u003e#581\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMade benchmark inputs reproducible across Java, C++, and Go by materializing one shared workload definition, and decoupled cross-engine workload selection from JMH entry points. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/601\"\u003e#601\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved release automation, centralized the CI JDK configuration, and made the C++ benchmark harness portable to macOS. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/582\"\u003e#582\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/598\"\u003e#598\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/600\"\u003e#600\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eThanks to \u003ca href\u003d\"https://github.com/wendigo\"\u003e\u003ccode\u003e@​wendigo\u003c/code\u003e\u003c/a\u003e for the SWAR-based UTF-8 literal-search acceleration and its benchmark and correctness coverage.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href\u003d\"https://github.com/eaftan/safere/compare/v0.9.0...v0.10.0\"\u003ehttps://github.com/eaftan/safere/compare/v0.9.0...v0.10.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/20f4ec5e386a914076e5eb586f38755eb00a6a1d\"\u003e\u003ccode\u003e20f4ec5\u003c/code\u003e\u003c/a\u003e Update README examples for 0.10.0 (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/621\"\u003e#621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/e03377d2a32208e7eb6523d510b86e8aa0408829\"\u003e\u003ccode\u003ee03377d\u003c/code\u003e\u003c/a\u003e Decouple cross-engine benchmark execution (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/c4e8203bab7d31ca030f024382518c76d8ffed80\"\u003e\u003ccode\u003ec4e8203\u003c/code\u003e\u003c/a\u003e Materialize shared benchmark inputs before execution (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/601\"\u003e#601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/e84ff6018a4f0878f3a9ca8216afb4ab17ec43df\"\u003e\u003ccode\u003ee84ff60\u003c/code\u003e\u003c/a\u003e Centralize CI JDK configuration (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/600\"\u003e#600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/7ac65120197821c9b2abd60b0f6863909b6292a5\"\u003e\u003ccode\u003e7ac6512\u003c/code\u003e\u003c/a\u003e Make C++ benchmark harness build on macOS (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/598\"\u003e#598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/ea3f66d4607ddd5e6e7f5e390b89f90ebcb1b7da\"\u003e\u003ccode\u003eea3f66d\u003c/code\u003e\u003c/a\u003e Integrate external OpenJDK regex benchmarks (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/f4360fd72c2251c9c3693654e3484926d26b54de\"\u003e\u003ccode\u003ef4360fd\u003c/code\u003e\u003c/a\u003e Add static and runtime regex diagnostics (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/1f7c41483b0a6c66729a4878dae539ace7a56e66\"\u003e\u003ccode\u003e1f7c414\u003c/code\u003e\u003c/a\u003e Improve replacement fast paths (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/589\"\u003e#589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/bc315e75dcd1ad9e1fa5feb6e1c04cbf4c1a5359\"\u003e\u003ccode\u003ebc315e7\u003c/code\u003e\u003c/a\u003e Remove redundant anchored DFA passes (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/50708cf2a975791c88793b0821ca4acd781f9c43\"\u003e\u003ccode\u003e50708cf\u003c/code\u003e\u003c/a\u003e Accelerate greedy keyword searches (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/eaftan/safere/compare/v0.9.0...v0.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s major version (unless you unignore this specific dependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s minor version (unless you unignore this specific dependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\u003c/details\u003e\n\nFixes https://github.com/google/error-prone/pull/5995\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5995 from google:dependabot/maven/dependencies-102eaeaa0f 72b18a09b9504f66a7b9b3c1d600cf5a6c7f7e0d\nPiperOrigin-RevId: 957985602\n"
    },
    {
      "commit": "a2017138ccfae362a2ddb6ca44d1bd2985a829ce",
      "tree": "7a52c6e5ae4dce4b4d651f0a1a020a8f133d127d",
      "parents": [
        "663409a35b5ae8a52b0bd163eb9103322d6ca7fd"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Sun Aug 02 09:30:52 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sun Aug 02 09:31:49 2026"
      },
      "message": "Add descriptions to the `ErrorProneCommentStyle` enum.\n\nPiperOrigin-RevId: 957881951\n"
    },
    {
      "commit": "663409a35b5ae8a52b0bd163eb9103322d6ca7fd",
      "tree": "7ec8cfb96137ce2e4482fdcc077355af09597aec",
      "parents": [
        "859d2b019d3496c342f2bd92aec2687f0739695c"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Sun Aug 02 00:48:44 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sun Aug 02 00:49:44 2026"
      },
      "message": "Remove `containsAtLeast` from `DistinctVarargsChecker` --- it respects cardinality and duplicates are meaningful!\n\nPiperOrigin-RevId: 957758519\n"
    },
    {
      "commit": "859d2b019d3496c342f2bd92aec2687f0739695c",
      "tree": "ed46d279cc3a486de85becf6079c63afc5b26135",
      "parents": [
        "e0cb5a1f02776854c71b677c39f805b5f5b09745"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Sat Aug 01 22:41:46 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sat Aug 01 22:42:29 2026"
      },
      "message": "Add JDK, Guava, Protobuf, Truth, Mockito, and ErrorProne APIs to DistinctVarargsChecker.\n\nFlag method invocations when passed non-distinct arguments for:\n- Objects.hash, Objects.requireNonNullElse, com.google.common.base.Objects.hashCode\n- MoreObjects.firstNonNull\n- CompletableFuture.allOf, CompletableFuture.anyOf\n- Mockito.verifyNoInteractions, Mockito.verifyNoMoreInteractions, Mockito.inOrder, Mockito.ignoreStubs\n- EnumSet.of\n- Predicates.and, Predicates.or\n- java.nio.file.Files (copy, move, isSameFile, mismatch, write, writeString)\n- Collections.disjoint\n- Sets.intersection, Sets.union, Sets.difference, Sets.symmetricDifference\n- Stream.concat, IntStream.concat, LongStream.concat, DoubleStream.concat, Iterables.concat\n- Math.max/min, StrictMath.max/min, Primitive boxed max/min (Integer, Long, Double, Float)\n- Guava Primitive max/min (Ints, Longs, Doubles, Floats, Shorts, Chars, SignedBytes, UnsignedBytes)\n- Comparators.min, Comparators.max\n- Maps.difference\n- FieldMaskUtil (union, intersection, subtract)\n- Truth Subject (isAnyOf, isNoneOf), Truth IterableSubject (containsAnyOf, containsAtLeast), Truth MapSubject (containsExactly key parity)\n- ErrorProne Matchers (anyOf, allOf), MethodClassMatcher (namedAnyOf), StaticMethodMatcher/InstanceMethodMatcher/AnyMethodMatcher (onClassAny, onExactClassAny, onDescendantOfAny)\n\nPiperOrigin-RevId: 957729607\n"
    },
    {
      "commit": "e0cb5a1f02776854c71b677c39f805b5f5b09745",
      "tree": "9ae75868fb83d2bf14fcc7689c3ffe678208ddbb",
      "parents": [
        "0fbd51ee3b5b667d09f696ac49cb43628aadb435"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Sat Aug 01 21:53:39 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sat Aug 01 21:54:40 2026"
      },
      "message": "Improve `TraditionalJavadocToMarkdown` ordered list handling\n\nConverts traditional Javadoc `\u003col\u003e` list items to `1.` numbered bullets.\n\nPiperOrigin-RevId: 957719804\n"
    },
    {
      "commit": "0fbd51ee3b5b667d09f696ac49cb43628aadb435",
      "tree": "76b595c888b298b8167f457dada65245bee2e023",
      "parents": [
        "16e05d52d27c511288d29968c4dfccf40de574b7"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Sat Aug 01 13:32:49 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sat Aug 01 13:34:36 2026"
      },
      "message": "Skip tests under JDK 23 that fail there.\n\n(I confirmed that they fail under 24, as well.)\n\nThese tests have been failing in OSS CI since they were released there in https://github.com/google/error-prone/commit/48281bf1ed10aa82ebae210a1eb6c3890269206a.\n\nExample [failure](https://github.com/google/error-prone/actions/runs/30458321809/job/90597568011):\n\n```\n[ERROR]   TraditionalJavadocToMarkdownTest.tableTag:1948 value of:\n    maybeFormat(...)\nexpected:\n    /// \u003ctable\u003e\n    /// \u003ctr\u003e\u003ctd\u003eFoo\u003c/td\u003e\u003c/tr\u003e\n    /// \u003c/table\u003e\n    public class Test {}\n\nbut was:\n    /// \u003ctable\u003e\n    ///  \u003ctr\u003e\u003ctd\u003eFoo\u003c/td\u003e\u003c/tr\u003e\n    ///  \u003c/table\u003e\n    public class Test {}\n```\n\nI am doubly confused because the _original_ batch of failures did _not_ contain `nestedPreTags` but then the failures for _this_ PR did, forcing me to revise it.\n\nPiperOrigin-RevId: 957613778\n"
    },
    {
      "commit": "16e05d52d27c511288d29968c4dfccf40de574b7",
      "tree": "3ca35bf609fd4a445fda50c16002cd72536a9be0",
      "parents": [
        "8fb3863c0a0ab7427bcdf44c81676ac984912914"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Fri Jul 31 20:01:32 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jul 31 20:02:40 2026"
      },
      "message": "Refactor `TraditionalJavadocToMarkdown` to use a unified scope stack.\n\nReplaces separate `inPre`, `inSee`, and `aTagStack` tracking fields with a unified `Deque\u003cTagFrame\u003e scopeStack` tracking HTML start and end tags during `DocTreePathScanner` traversal.\n\n- Represent `TagFrame` as a generic Java `record TagFrame(String name, ImmutableMap\u003cString, String\u003e attributes)`.\n- Unify `visitStartElement` pipeline across all HTML elements.\n- Implement zero-allocation `depthOf`, `inPre`, and `listDepth` helper queries on `scopeStack`.\n- Add implementation comments for `TagFrame`, `inSee()`, and `visitEndElement`.\n- Add test coverage for nested italic formatting (`\u003ci\u003e`/`\u003cem\u003e`), nested mixed `ol`/`ul` lists, and unmatched closing HTML tags.\n\nPiperOrigin-RevId: 957293242\n"
    },
    {
      "commit": "8fb3863c0a0ab7427bcdf44c81676ac984912914",
      "tree": "8898826992c24fc768e844a889086b4d17d636fd",
      "parents": [
        "b3a72398db0452d47ba22f693cc1a34ac0ad45c9"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Thu Jul 30 18:33:42 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 30 18:34:29 2026"
      },
      "message": "Remove unused imports when comparing test outputs\n\nAnd also remove unused imports in MisformattedTestData\n\nPiperOrigin-RevId: 956642850\n"
    },
    {
      "commit": "b3a72398db0452d47ba22f693cc1a34ac0ad45c9",
      "tree": "e917076723598aa33ca116ff6ab5f0f95a0a1021",
      "parents": [
        "9c2cd0e8b53d6e8b637aa0c37f98725366fd4e04"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Thu Jul 30 16:46:26 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 30 16:47:38 2026"
      },
      "message": "Bump `google-java-format` version to 1.36.0 and release some additional markdown tests.\n\nPiperOrigin-RevId: 956579488\n"
    },
    {
      "commit": "9c2cd0e8b53d6e8b637aa0c37f98725366fd4e04",
      "tree": "267c4bbfcaa7719c0ce54c9128031d2e0f48c6fa",
      "parents": [
        "ab6b20e36f037e08a8fa5411b530b64fa56900fa"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Thu Jul 30 06:08:30 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 30 06:10:40 2026"
      },
      "message": "Bump JSpecify to 1.0.1.\n\nPiperOrigin-RevId: 956293113\n"
    },
    {
      "commit": "ab6b20e36f037e08a8fa5411b530b64fa56900fa",
      "tree": "e8611c66f5cb649e1a0245c9c325f80af9d79ab4",
      "parents": [
        "837aa93432139167041bf3f90dd2e3ac653dc6db"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 29 23:16:22 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 29 23:17:09 2026"
      },
      "message": "Preserves HTML anchor tags (e.g. `\u003ca id\u003d\"...\"\u003e` and `\u003ca name\u003d\"...\"\u003e`) that do\nnot possess an `href` attribute during Javadoc to Markdown conversion, rather\nthan converting them into empty Markdown links.\n\nPiperOrigin-RevId: 956143951\n"
    },
    {
      "commit": "837aa93432139167041bf3f90dd2e3ac653dc6db",
      "tree": "7bd38c0ece1a96409553ab293203cb10bde4c067",
      "parents": [
        "d087e67f894f56edb9676c62feb54d7a57c26335"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 29 18:49:39 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 29 18:50:34 2026"
      },
      "message": "Add some additional tests w/ loop and switch case reassignments to `ReturnMissingNullableTest`.\n\nPiperOrigin-RevId: 956005916\n"
    },
    {
      "commit": "d087e67f894f56edb9676c62feb54d7a57c26335",
      "tree": "ec53dae15cd58fbb3b464a8bbbb1cae96160da03",
      "parents": [
        "48281bf1ed10aa82ebae210a1eb6c3890269206a"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 29 17:57:46 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 29 17:58:33 2026"
      },
      "message": "Add a[] for nested types in `MultipleNullnessAnnotations`.\n\nPiperOrigin-RevId: 955975207\n"
    },
    {
      "commit": "48281bf1ed10aa82ebae210a1eb6c3890269206a",
      "tree": "8ba58fab674329383cfca78f256bf7690d25ea78",
      "parents": [
        "23b126f08ecbe805d158b4203c1b1012f8faec2c"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 29 13:54:33 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 29 13:55:31 2026"
      },
      "message": "Open source the `TraditionalJavadocToMarkdown` conversion tool (and tests).\n\nPiperOrigin-RevId: 955856661\n"
    },
    {
      "commit": "23b126f08ecbe805d158b4203c1b1012f8faec2c",
      "tree": "6470a9be5706eb81b2c96551f749d5a566d045e2",
      "parents": [
        "04af48c45e781f26bfdb53854cdeb7e7a12949dc"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Wed Jul 29 10:38:37 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 29 10:39:43 2026"
      },
      "message": "Remove unused imports in MisformattedTestData\n\nAnd run it over Error Prone.\n\nPiperOrigin-RevId: 955782665\n"
    },
    {
      "commit": "04af48c45e781f26bfdb53854cdeb7e7a12949dc",
      "tree": "21df495100f4c2da5fd564da70bad88079cd0fdc",
      "parents": [
        "a9c52159d07683744d166d58ded1aa6ce65c79a5"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Tue Jul 28 18:03:22 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jul 28 18:04:13 2026"
      },
      "message": "[StatementSwitchToExpressionSwitch] refactor and consolidate wrapping-in-braces logic\n\nPiperOrigin-RevId: 955357577\n"
    },
    {
      "commit": "a9c52159d07683744d166d58ded1aa6ce65c79a5",
      "tree": "b9eb3e2230025e733fb679bef5c31e3367c157d1",
      "parents": [
        "4cfc7155fd2fcbf2e290d2990df83dfc75d31db1"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Tue Jul 28 18:00:20 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jul 28 18:01:16 2026"
      },
      "message": "Delete `BugPattern.generateExamplesFromTestCases()`, ~6 years after its deprecation.\n\nPiperOrigin-RevId: 955355534\n"
    },
    {
      "commit": "4cfc7155fd2fcbf2e290d2990df83dfc75d31db1",
      "tree": "c4a5bfed82704b4d61aea3398facd3b4d072f4cc",
      "parents": [
        "1a19f25aa6b3c51b029a1a5402d5e3ebb45f69c9"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Mon Jul 27 21:06:03 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 21:07:02 2026"
      },
      "message": "Discourage referring to `PrimitiveIterator.OfInt` as just \"`OfInt`\" (and similarly for the other variants).\n\nIf people dislike the long name, I\u0027d recommend `var`. (Of course, that applies only to implementation code, not to APIs.)\n\nPiperOrigin-RevId: 954819127\n"
    },
    {
      "commit": "1a19f25aa6b3c51b029a1a5402d5e3ebb45f69c9",
      "tree": "5c9a7455a38621adccbc8afa871dfdf8931c6a51",
      "parents": [
        "af371f400d6c50862dcc2449bad97f7a9ab42cec"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jul 27 20:45:44 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 20:46:33 2026"
      },
      "message": "Add test cases demonstrating that `ReturnsNullCollection` and `ProvidesNull` currently do not flag conditional `null` returns (e.g., `return foo ? bar : null`).\nThese tests currently pass without diagnostics and will be updated when the checks are updated to use `hasDefinitelyNullBranch` in a follow-up CL.\n\nPiperOrigin-RevId: 954808074\n"
    },
    {
      "commit": "af371f400d6c50862dcc2449bad97f7a9ab42cec",
      "tree": "54c7b0b120f14569e5080ae1ef4b55b3a6b72d9f",
      "parents": [
        "0f10bb0ac166ebb825a8a75ddbe689075519ceb6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 17:19:45 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 17:20:54 2026"
      },
      "message": "Bump the dependencies group with 3 updates\n\nBumps the dependencies group with 3 updates: [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin), [org.safere:safere](https://github.com/eaftan/safere) and [joda-time:joda-time](https://github.com/JodaOrg/joda-time).\n\nUpdates `org.apache.maven.plugins:maven-jar-plugin` from 3.5.0 to 3.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/releases\"\u003eorg.apache.maven.plugins:maven-jar-plugin\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e📝 Documentation updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AGENTS.md + SECURITY.md security-model pointer for scanner discoverability (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/550\"\u003e#550\u003c/a\u003e) \u003ca href\u003d\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e👻 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd AGENTS.md + SECURITY.md security-model pointer for scanner discoverability (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/550\"\u003e#550\u003c/a\u003e) \u003ca href\u003d\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse plugin version properties (3.x) (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/535\"\u003e#535\u003c/a\u003e) \u003ca href\u003d\"https://github.com/Bukama\"\u003e\u003ccode\u003e@​Bukama\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📦 Dependency updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 48 to 49 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/547\"\u003e#547\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.codehaus.plexus:plexus-archiver from 4.11.0 to 4.12.0 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/538\"\u003e#538\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.15 to 3.9.16 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/536\"\u003e#536\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 47 to 48 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/534\"\u003e#534\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump commons-io:commons-io from 2.21.0 to 2.22.0 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/529\"\u003e#529\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.14 to 3.9.15 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/528\"\u003e#528\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.12 to 3.9.14 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/526\"\u003e#526\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.5.0 to 3.5.1 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/523\"\u003e#523\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 46 to 47 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/519\"\u003e#519\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.codehaus.plexus:plexus-archiver from 4.10.4 to 4.11.0 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/516\"\u003e#516\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.0 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/517\"\u003e#517\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven.plugins:maven-plugins from 45 to 46 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/514\"\u003e#514\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump org.apache.maven:maven-archiver from 3.6.5 to 3.6.6 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/511\"\u003e#511\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump mavenVersion from 3.9.11 to 3.9.12 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/pull/509\"\u003e#509\u003c/a\u003e) @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/b0cd63d0ad544aa552f06e4492faf984bf2c85c1\"\u003e\u003ccode\u003eb0cd63d\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release maven-jar-plugin-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/5318a4feaf529d6fa22c4622fff2d54fefe7f7dd\"\u003e\u003ccode\u003e5318a4f\u003c/code\u003e\u003c/a\u003e Add AGENTS.md + SECURITY.md security-model pointer for scanner discoverability\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/8e0b9bb307fc29b8d267f18eca9d47be0a7f16e0\"\u003e\u003ccode\u003e8e0b9bb\u003c/code\u003e\u003c/a\u003e Bump org.apache.maven.plugins:maven-plugins from 48 to 49 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/d5a438b6add9a9115f5a2c9b27db67e0d962bb74\"\u003e\u003ccode\u003ed5a438b\u003c/code\u003e\u003c/a\u003e Fix javadoc\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/774fac9215d92bfac67ece082872b00475580b21\"\u003e\u003ccode\u003e774fac9\u003c/code\u003e\u003c/a\u003e Bump org.codehaus.plexus:plexus-archiver from 4.11.0 to 4.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/b71f40368edc878b3dcaa9840d950bd7d297d4c4\"\u003e\u003ccode\u003eb71f403\u003c/code\u003e\u003c/a\u003e Bump mavenVersion from 3.9.15 to 3.9.16 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/536\"\u003e#536\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/9f2a001a00fcbb0408219a11f62b48c4dfde78d3\"\u003e\u003ccode\u003e9f2a001\u003c/code\u003e\u003c/a\u003e Use plugin version properties (3.x) (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/68a978f952ba510f7378fd287c5172dc560079e3\"\u003e\u003ccode\u003e68a978f\u003c/code\u003e\u003c/a\u003e Bump org.apache.maven.plugins:maven-plugins from 47 to 48 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/534\"\u003e#534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/e1058217f657691a3e50b0c7e0620fd13c8e83c3\"\u003e\u003ccode\u003ee105821\u003c/code\u003e\u003c/a\u003e Bump commons-io:commons-io from 2.21.0 to 2.22.0 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/commit/953dc1abbb527b8128657f2aeadfdca0557d974d\"\u003e\u003ccode\u003e953dc1a\u003c/code\u003e\u003c/a\u003e Bump mavenVersion from 3.9.14 to 3.9.15 (\u003ca href\u003d\"https://redirect.github.com/apache/maven-jar-plugin/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.5.0...maven-jar-plugin-3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.safere:safere` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/eaftan/safere/releases\"\u003eorg.safere:safere\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSafeRE 0.9.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eSafeRE 0.9.0 adds direct matching and replacement over borrowed UTF-8 byte-array views, avoiding an input-sized conversion to \u003ccode\u003eString\u003c/code\u003e for applications that already store text as UTF-8. This release also substantially improves matching, replacement, and splitting performance across the DFA, NFA, BitState, and OnePass engines, while expanding differential and scaling coverage for the optimized paths.\u003c/p\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eUtf8Input\u003c/code\u003e and \u003ccode\u003eUtf8Matcher\u003c/code\u003e for matching validated or trusted UTF-8 byte-array views. Match and capture coordinates are reported as relative byte offsets, and \u003ccode\u003eUtf8Sink\u003c/code\u003e supports byte-native replacement output. Existing compiled \u003ccode\u003ePattern\u003c/code\u003e instances can be shared between the \u003ccode\u003eString\u003c/code\u003e and UTF-8 APIs. See the \u003ca href\u003d\"https://github.com/eaftan/safere/blob/v0.9.0/UTF8.md\"\u003edirect UTF-8 matching guide\u003c/a\u003e for API details and semantic boundaries. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/569\"\u003e#569\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/576\"\u003e#576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCompatibility and correctness\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrected DFA priority and match-boundary handling for overlapping alternatives, empty-width assertions, ambiguous reverse starts, and boundary-sensitive matches. These fixes allow more patterns to use the DFA path without changing leftmost-first match results. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/505\"\u003e#505\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/506\"\u003e#506\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/532\"\u003e#532\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevented an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e when complex empty-width loops temporarily expand to duplicate DFA states. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed OnePass eligibility, literal-prefix extraction through nested capture groups, literal prefix fallback behavior, grapheme-search fast rejection, and CRLF-sensitive DFA transition caching. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/487\"\u003e#487\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/541\"\u003e#541\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/555\"\u003e#555\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/558\"\u003e#558\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/572\"\u003e#572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded call-by-call UTF-8 crosschecks against SafeRE \u003ccode\u003eString\u003c/code\u003e matching and \u003ccode\u003ejava.util.regex\u003c/code\u003e, covering captures, matcher state, input windows, byte-coordinate mapping, and replacement output. This also fixed bounded literal search so budget exhaustion falls back safely instead of missing a final candidate. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpanded DFA eligibility for safe alternations and greedy nested nullable loops, and removed obsolete start-reliability fallbacks after correcting reverse-DFA semantics. Representative benchmark improvements include 14.7x for a 100 KB safe-alternation replacement workload and approximately 100x for an overlapping-URL search that previously fell back from the DFA. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/495\"\u003e#495\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/506\"\u003e#506\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded ASCII-specialized DFA loops and streamlined DFA state storage, transition lookup, cache hits, character-class lookup, and inner-loop dispatch. The ASCII fast paths improved the reported representative 1 KB search workloads by 22% to 37%. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/501\"\u003e#501\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/517\"\u003e#517\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/535\"\u003e#535\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/546\"\u003e#546\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/561\"\u003e#561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduced Pike NFA allocation and execution overhead through reusable state storage, pooled NFA instances, generational visited-state tracking, combined code-point decoding, and cached empty-width context. Reported scan-heavy forced-NFA workloads improved by 2.3x to 2.5x, with representative replacement and split workloads improving by 2.2x and 1.6x respectively. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/496\"\u003e#496\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/510\"\u003e#510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded optimized replacement paths for DFA-eligible and character-class patterns, including replacements that reference capture groups, while reducing temporary allocations in \u003ccode\u003eappendReplacement\u003c/code\u003e. \u003ccode\u003ePattern.split\u003c/code\u003e and \u003ccode\u003esplitWithDelimiters\u003c/code\u003e now share an optimized match position scan. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/547\"\u003e#547\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/549\"\u003e#549\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/554\"\u003e#554\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/556\"\u003e#556\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved unanchored search acceleration by extracting starting character classes through alternations and case-insensitive literals, scanning for required pattern content, and retaining the DFA path after rejected literal-prefix candidates. The reported alternation-prefix workload improved by 46%. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/492\"\u003e#492\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/541\"\u003e#541\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduced allocations and copying in matcher group storage, OnePass captures, replacement builders, BitState capture resolution, and split operations. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/543\"\u003e#543\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/544\"\u003e#544\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/548\"\u003e#548\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance figures above are workload-specific benchmark results reported by the corresponding changes; they are not general throughput guarantees.\u003c/p\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpanded comparative real-world benchmarks, added stable work-counter scaling tests, and now run saved fuzz regression inputs in CI. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/500\"\u003e#500\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/514\"\u003e#514\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/515\"\u003e#515\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the native RE2 FFM comparison wrapper and its portability across Linux and macOS. (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/499\"\u003e#499\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/536\"\u003e#536\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/eaftan/safere/pull/557\"\u003e#557\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eThank you to the community contributors who helped make this release possible:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/cushon\"\u003e\u003ccode\u003e@​cushon\u003c/code\u003e\u003c/a\u003e contributed extensive correctness and performance work across the DFA, NFA, BitState, and OnePass engines, as well as replacement, splitting, benchmarking, and native RE2 comparison improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e improved benchmark-script compatibility across Bash versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href\u003d\"https://github.com/eaftan/safere/compare/v0.8.0...v0.9.0\"\u003ehttps://github.com/eaftan/safere/compare/v0.8.0...v0.9.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/6fe67606d7c7724b9b1f1736c3bee04c674eaec5\"\u003e\u003ccode\u003e6fe6760\u003c/code\u003e\u003c/a\u003e Prepare documentation for the 0.9.0 release (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/1907a4ef81bd3302c4aba40613c8aaa554bb7dde\"\u003e\u003ccode\u003e1907a4e\u003c/code\u003e\u003c/a\u003e Accelerate searches using required pattern content (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/399b7a7d96f5582ace990dd41629a244dbdc3f6f\"\u003e\u003ccode\u003e399b7a7\u003c/code\u003e\u003c/a\u003e Document direct UTF-8 matching API (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/576\"\u003e#576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/4fdf92a8a6dc0124c4af29fe247f9fb8c0249e9e\"\u003e\u003ccode\u003e4fdf92a\u003c/code\u003e\u003c/a\u003e Crosscheck UTF-8 matching against String oracles (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/abbe57f461d1e58b0ad622b6a8f7ef00698f8a9b\"\u003e\u003ccode\u003eabbe57f\u003c/code\u003e\u003c/a\u003e Restore String matching performance after UTF-8 input changes (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/572\"\u003e#572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/7a392a13729e34e2631c1be470b802e983970974\"\u003e\u003ccode\u003e7a392a1\u003c/code\u003e\u003c/a\u003e Add direct UTF-8 input support (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/c8f51f3fa99976566ac9a3260df371caedec929e\"\u003e\u003ccode\u003ec8f51f3\u003c/code\u003e\u003c/a\u003e Add daily repo assist skill (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/0431e1ec683cf7af27cd410ba9420d304ee1ee3f\"\u003e\u003ccode\u003e0431e1e\u003c/code\u003e\u003c/a\u003e Optimize replacement operations with DFA fast path (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/737f66ad8c8686afbcd03dd5532ff883f9094cf8\"\u003e\u003ccode\u003e737f66a\u003c/code\u003e\u003c/a\u003e Avoid unnecessary third DFA pass for start-anchored patterns (\u003ca href\u003d\"https://redirect.github.com/eaftan/safere/issues/563\"\u003e#563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/eaftan/safere/commit/37f5e828a157c203bfd47125e1c69f91cd5316d0\"\u003e\u003ccode\u003e37f5e82\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Generalize \u003ccode\u003echarClassPrefixAscii\u003c/code\u003e to support non-ASCII character clas...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/eaftan/safere/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `joda-time:joda-time` from 2.14.2 to 2.14.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/JodaOrg/joda-time/releases\"\u003ejoda-time:joda-time\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v2.14.3\u003c/h2\u003e\n\u003cp\u003eSee the \u003ca href\u003d\"https://www.joda.org/joda-time/changes-report.html#a2.14.3\"\u003echange notes\u003c/a\u003e for more information.\u003c/p\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate time zone data to 2026cgtz by \u003ca href\u003d\"https://github.com/jodastephen\"\u003e\u003ccode\u003e@​jodastephen\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/JodaOrg/joda-time/pull/833\"\u003eJodaOrg/joda-time#833\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/JodaOrg/joda-time/compare/v2.14.2...v2.14.3\"\u003ehttps://github.com/JodaOrg/joda-time/compare/v2.14.2...v2.14.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/JodaOrg/joda-time/commit/bbfaf93fbc7b33fa266b1e246efb099a41869917\"\u003e\u003ccode\u003ebbfaf93\u003c/code\u003e\u003c/a\u003e Release v2.14.3\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/JodaOrg/joda-time/commit/2a7a1aed39fc5641dcc9cb7bb10618769328497c\"\u003e\u003ccode\u003e2a7a1ae\u003c/code\u003e\u003c/a\u003e Update time zone data to 2026cgtz (\u003ca href\u003d\"https://redirect.github.com/JodaOrg/joda-time/issues/833\"\u003e#833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/JodaOrg/joda-time/compare/v2.14.2...v2.14.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s major version (unless you unignore this specific dependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s minor version (unless you unignore this specific dependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\u003c/details\u003e\n\nFixes https://github.com/google/error-prone/pull/5966\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5966 from google:dependabot/maven/dependencies-7f7858161f f4a2939d365ac3312d31fee18305db563724e3d2\nPiperOrigin-RevId: 954697824\n"
    },
    {
      "commit": "0f10bb0ac166ebb825a8a75ddbe689075519ceb6",
      "tree": "26e297bae49c972b3cc3133b4a8cbbce5339b346",
      "parents": [
        "3f5fe61863d1838606756d4f9d3dd8172bb02e57"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jul 27 16:49:36 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 16:50:17 2026"
      },
      "message": "PUBLIC: Replace `.setArgs(\"-XepCompilingTestOnlyCode\")` and `.setArgs(ImmutableList.of(\"-XepCompilingTestOnlyCode\"))` with the new `.setTestOnly()` helper method across static analysis and Error Prone test suites.\n\nPiperOrigin-RevId: 954681629\n"
    },
    {
      "commit": "3f5fe61863d1838606756d4f9d3dd8172bb02e57",
      "tree": "b65d2dc8cfe372b4c52eba2696e1e8999c25ae3a",
      "parents": [
        "2e5f4f710595723f02e1226aa3409ad504289cd7"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jul 27 16:22:46 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 16:23:27 2026"
      },
      "message": "PUBLIC: Add no-arg `setTestOnly()` to Error Prone\u0027s `CompilationTestHelper` and `BugCheckerRefactoringTestHelper` to automatically pass `-XepCompilingTestOnlyCode` during test compilation.\n\nPiperOrigin-RevId: 954668388\n"
    },
    {
      "commit": "2e5f4f710595723f02e1226aa3409ad504289cd7",
      "tree": "1d0a9f23c09d6ca331a00cfdb2e7d04934617232",
      "parents": [
        "c91de5be89ec899148f33d539c5161ad48b0e143"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jul 27 14:27:17 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 27 15:22:00 2026"
      },
      "message": "PUBLIC: Suggest `TestParameterInjector` instead of a loop over an `enum` in a unit test.\n\nTest parameterization executes each input case in strict isolation, ensuring that a single failure doesn\u0027t halt the rest of your test case while providing clear, per-case reporting without the need for manual loops. See []\n\njavacflume results: unknown commit\n\nPiperOrigin-RevId: 954617044\n"
    },
    {
      "commit": "c91de5be89ec899148f33d539c5161ad48b0e143",
      "tree": "ab30505f62b8ad86162d2e8cb52bdabdb53a8760",
      "parents": [
        "49ae9b27f62647547255a5dbd6868f0f05a997ac"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Thu Jul 23 23:49:34 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 23 23:50:22 2026"
      },
      "message": "[StatementSwitchToExpressionSwith] fix bug in generated code when hoisted variables are later redefined\n\nPiperOrigin-RevId: 953027031\n"
    },
    {
      "commit": "49ae9b27f62647547255a5dbd6868f0f05a997ac",
      "tree": "31d52279fc7cc39c3c5f0caaf68474fe6f8086b1",
      "parents": [
        "9b2df08cc8c2fed48660803562ad0f7842786a5f"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Wed Jul 22 20:59:03 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 22 20:59:52 2026"
      },
      "message": "[IfChainToSwitch] fix a bug whereby invalid code can be emitted for certain subject types\n\nPiperOrigin-RevId: 952316264\n"
    },
    {
      "commit": "9b2df08cc8c2fed48660803562ad0f7842786a5f",
      "tree": "a3089156e4277a94f3a86ea8ef438508d038b893",
      "parents": [
        "b9e6eb12fd61c50ecd00ce96b1c8a20f0a6ba79e"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Wed Jul 22 18:48:21 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 22 18:49:10 2026"
      },
      "message": "[IfChainToSwitch] add unit test to document invalid finding\n\nPiperOrigin-RevId: 952246532\n"
    },
    {
      "commit": "b9e6eb12fd61c50ecd00ce96b1c8a20f0a6ba79e",
      "tree": "9adff7ec31a1bfe1f5bcbc5a80575ad5ea2c2238",
      "parents": [
        "4b7ea2fc022db33593fb58966b01d798ad685838"
      ],
      "author": {
        "name": "Chaoren Lin",
        "email": "aoe@google.com",
        "time": "Tue Jul 21 22:18:03 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jul 21 22:19:13 2026"
      },
      "message": "Internal change.\n\nPiperOrigin-RevId: 951726048\n"
    },
    {
      "commit": "4b7ea2fc022db33593fb58966b01d798ad685838",
      "tree": "c95ae8fbbdd9441e78afc45187e99f85c861661f",
      "parents": [
        "89abe474c2d2eb02597f552f7cf6057217c24bbb"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Tue Jul 21 16:15:22 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jul 21 16:16:51 2026"
      },
      "message": "Update comment for [javac and Dagger\u0027s support for type-use annotations](https://github.com/google/dagger/releases/tag/dagger-2.60).\n\n(relevant to https://github.com/google/dagger/issues/5165)\n\nPiperOrigin-RevId: 951527811\n"
    },
    {
      "commit": "89abe474c2d2eb02597f552f7cf6057217c24bbb",
      "tree": "6fc984149aa7a46727f0aca6c80efd60a4da4482",
      "parents": [
        "0187d08f98ae23232fa863e76ddf2251acd9e374"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Mon Jul 20 22:01:16 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 20 22:02:53 2026"
      },
      "message": "Use `findEnclosingMethod` in `ProvidesNull`.\n\nThis further consolidates on that method, building upon the work of https://github.com/google/error-prone/commit/c62014a98a3bb8be42378066b65389b7ba47d1ba. In this case, there wasn\u0027t anything buggy about the reimplementation; it was just unnecessary.\n\nPiperOrigin-RevId: 951071484\n"
    },
    {
      "commit": "0187d08f98ae23232fa863e76ddf2251acd9e374",
      "tree": "ed727b9f576ae959f9194c4dc1a7423095ee01cb",
      "parents": [
        "775a1ace35fe99e7a11c423b76a788af1fe1985a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 13 17:41:49 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 13 17:43:09 2026"
      },
      "message": "Bump the dependencies group with 2 updates\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s major version (unless you unignore this specific dependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s minor version (unless you unignore this specific dependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\u003c/details\u003e\n\nFixes #5954\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5954 from google:dependabot/maven/dependencies-77a97074f9 43b104554d5b2c926e3aab8768b67cf151c64798\nPiperOrigin-RevId: 947123678\n"
    },
    {
      "commit": "775a1ace35fe99e7a11c423b76a788af1fe1985a",
      "tree": "db57ef6220c44120aa662f3758d9977bf88f3bc1",
      "parents": [
        "54bc491d41b0e568ff44292b6354596c307b07b6"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Fri Jul 10 20:16:11 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jul 10 20:17:15 2026"
      },
      "message": "Stop migrating `@Suppress` to `@Ignore`. `@Suppress` is nearly dead!\n\nPiperOrigin-RevId: 945860219\n"
    },
    {
      "commit": "54bc491d41b0e568ff44292b6354596c307b07b6",
      "tree": "221d5c36202c90f4f8b0b43a31101ffdf63a8226",
      "parents": [
        "c8511cea39e2a26835b6f7c250113f75b5a115ea"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Fri Jul 10 16:32:19 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jul 10 16:34:14 2026"
      },
      "message": "PUBLIC: Stop flagging `@Ignore` on JUnit3 tests. Internally, we\u0027ve made our legacy JUnit3 runner skip tests with `@Ignore` (unknown commit). Externally, basically nobody uses JUnit3 anymore (and if someone does make this mistake, they\u0027ll quickly notice anyways).\n\nPiperOrigin-RevId: 945750863\n"
    },
    {
      "commit": "c8511cea39e2a26835b6f7c250113f75b5a115ea",
      "tree": "6283ddee815bbea608ccedbcb6984ca28c3ae5b6",
      "parents": [
        "63937ff3560990a1e258f1ea388a483360ae710d"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Tue Jul 07 16:29:58 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jul 07 16:30:43 2026"
      },
      "message": "Test that `SuggestedFixes.replaceIncludingComments` removes Markdown Javadoc.\n\nkak@ points out that this may have been addressed way back in https://github.com/google/error-prone/commit/2dde25434696cc2f87e76b64bf60d8875da36a09.\n\nPiperOrigin-RevId: 943937282\n"
    },
    {
      "commit": "63937ff3560990a1e258f1ea388a483360ae710d",
      "tree": "a8cd77222d935fc923eb7e603e8d289e02db0c2b",
      "parents": [
        "c75dd09ed6926882ff51c13e570742b4630b010d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 06 17:32:41 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jul 06 17:33:49 2026"
      },
      "message": "Bump org.checkerframework:checker-qual from 4.2.0 to 4.2.1 in the dependencies group\n\nBumps the dependencies group with 1 update: [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework).\n\nUpdates `org.checkerframework:checker-qual` from 4.2.0 to 4.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/typetools/checker-framework/releases\"\u003eorg.checkerframework:checker-qual\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChecker Framework 4.2.1\u003c/h2\u003e\n\u003ch2\u003eVersion 4.2.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7726\"\u003e#7726\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md\"\u003eorg.checkerframework:checker-qual\u0027s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.2.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7726\"\u003e#7726\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/ef8cecd00663136e5bb4d6d3d32f936d500f519c\"\u003e\u003ccode\u003eef8cecd\u003c/code\u003e\u003c/a\u003e new release 4.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/5d046116bece9b5ebb359fab260c2d17988a5e41\"\u003e\u003ccode\u003e5d04611\u003c/code\u003e\u003c/a\u003e Prep for release.\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/0907ddc90cd25f32e5bf8922d8277d0b41de7fc2\"\u003e\u003ccode\u003e0907ddc\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003e@MonotonicNonNull\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/6a7d71c8cbba0c3c14547d4c06ddb500d15c71d2\"\u003e\u003ccode\u003e6a7d71c\u003c/code\u003e\u003c/a\u003e Gradle formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/c10d86a0c787c2e5ca95a2c5bb9f4c598b23504e\"\u003e\u003ccode\u003ec10d86a\u003c/code\u003e\u003c/a\u003e Update plugin com-gradleup-shadow to v9.4.3 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7778\"\u003e#7778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/ec79d1f81a434153c13e0fb83692119304cf2908\"\u003e\u003ccode\u003eec79d1f\u003c/code\u003e\u003c/a\u003e Update Gradle to v9.6.1 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7779\"\u003e#7779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/f95a2e030e54bae2e26a5e7fa47177acceb4ef6b\"\u003e\u003ccode\u003ef95a2e0\u003c/code\u003e\u003c/a\u003e More examples for \u003ccode\u003e-AresourceLeakIgnoredExceptions\u003c/code\u003e (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7774\"\u003e#7774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/79948a2df22a82425a3a17b70b6d784c812d7d5d\"\u003e\u003ccode\u003e79948a2\u003c/code\u003e\u003c/a\u003e Update Gradle to v9.6.0 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7775\"\u003e#7775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/e013552e6274b87c9f5dd1c768b4dd12a828707f\"\u003e\u003ccode\u003ee013552\u003c/code\u003e\u003c/a\u003e Update actions/checkout action to v7 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7776\"\u003e#7776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/4ba90c265ca8ee0ad4da7ce67af275ee6c7c40e1\"\u003e\u003ccode\u003e4ba90c2\u003c/code\u003e\u003c/a\u003e Update plugin com-diffplug-spotless to v8.7.0 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7773\"\u003e#7773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/typetools/checker-framework/compare/checker-framework-4.2.0...checker-framework-4.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dorg.checkerframework:checker-qual\u0026package-manager\u003dmaven\u0026previous-version\u003d4.2.0\u0026new-version\u003d4.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s major version (unless you unignore this specific dependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s minor version (unless you unignore this specific dependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\u003c/details\u003e\n\nFixes #5948\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5948 from google:dependabot/maven/dependencies-fef32f420f de9bb578d1f2fc7809143d2cb7c1c94812032a1c\nPiperOrigin-RevId: 943369386\n"
    },
    {
      "commit": "c75dd09ed6926882ff51c13e570742b4630b010d",
      "tree": "dcd97d4a51363b611ac94224c4d07b6337b35af0",
      "parents": [
        "2be3abde2ec4d434b1e408c515142fc678f3d788"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Sat Jul 04 14:44:51 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sat Jul 04 14:45:54 2026"
      },
      "message": "Move PreferPreconditions to JavaCodeClarity to run on changed lines\n\nand only emit findings if `Preconditions` is already on the classpath.\n\nThis check is producing a lot of findings on unchanged lines and for third_party/ code that doesn\u0027t depend on Guava (like SafeRE).\n\nPiperOrigin-RevId: 942497251\n"
    },
    {
      "commit": "2be3abde2ec4d434b1e408c515142fc678f3d788",
      "tree": "022fd86a7d6f81495ce39691513847500a3777ce",
      "parents": [
        "1bb55ab3a7c10c5926ea08b40f901eec4ab57fc5"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jul 03 15:44:23 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jul 03 15:45:29 2026"
      },
      "message": "Fix ProtectedMembersInFinalClass to avoid suggesting removing `protected` from canonical constructors of `protected` record classes.\n\nAlong the way, introduce `ASTHelpers.isCanonicalRecordConstructor` to share some logic.\n\nCompare https://github.com/google/error-prone/commit/1bb55ab3a7c10c5926ea08b40f901eec4ab57fc5.\n\nPiperOrigin-RevId: 942157685\n"
    },
    {
      "commit": "1bb55ab3a7c10c5926ea08b40f901eec4ab57fc5",
      "tree": "a141e09a19c692c0b49d4b78e4f8d28e901b8739",
      "parents": [
        "316aa2b79a5ed0d70e54f932e2a229895e932599"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Thu Jul 02 20:16:40 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 02 20:17:25 2026"
      },
      "message": "Don\u0027t suggest making canonical record constructors more private than the record itself.\n\nThis addresses the problem from https://github.com/google/error-prone/issues/5182#issuecomment-3977179907.\n\nPiperOrigin-RevId: 941803040\n"
    },
    {
      "commit": "316aa2b79a5ed0d70e54f932e2a229895e932599",
      "tree": "f769c25a11c7c234057c9fbabb657d4f3afae7f1",
      "parents": [
        "2e3be3d46545bd499d862b361cb21e2f99071790"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Thu Jul 02 16:10:48 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 02 16:12:47 2026"
      },
      "message": "Add some[]\n\nPiperOrigin-RevId: 941728182\n"
    },
    {
      "commit": "2e3be3d46545bd499d862b361cb21e2f99071790",
      "tree": "eaf0aacf5fc653175e5a232996f338e31a2f894d",
      "parents": [
        "57b85a658132c4325e30af7959ee4714ac0d39d4"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Thu Jul 02 16:09:05 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 02 16:09:52 2026"
      },
      "message": "Rip out `ASTHelpers:EnclosingMethodFix`.\n\nPiperOrigin-RevId: 941727660\n"
    },
    {
      "commit": "57b85a658132c4325e30af7959ee4714ac0d39d4",
      "tree": "aba0bc5f0ec89858dffcf4af17e8b72c70ba7727",
      "parents": [
        "7e254695f8c495e47cb68d848d9090ddb6a490f2"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Thu Jul 02 15:59:02 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 02 15:59:51 2026"
      },
      "message": "`EffectivelyPrivate`: Exclude anything declared within an effectively private class that has a visible subclass in the same file.\n\nSee discussion in https://github.com/google/error-prone/issues/5182.\n\nPiperOrigin-RevId: 941723947\n"
    },
    {
      "commit": "7e254695f8c495e47cb68d848d9090ddb6a490f2",
      "tree": "ac4a2cfeeb070fcff6964ebcbe5509cf4e3c3014",
      "parents": [
        "b32b287498c4584543eebd75b14e3b739ddac985"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Thu Jul 02 14:39:19 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jul 02 14:40:01 2026"
      },
      "message": "Ignore Markdown Javadoc in `UnescapedEntity` check.\n\nInstead of trying to parse complex Markdown structures to avoid false positives for unescaped entities, this change proposes to simply ignore Markdown Javadoc (`///`) comments entirely for this check.\n\nThis is a simpler workaround for b/530215233.\n\nPiperOrigin-RevId: 941694985\n"
    },
    {
      "commit": "b32b287498c4584543eebd75b14e3b739ddac985",
      "tree": "279dd38ae6e27a8ce60f79cfc59a38fb6206c7e2",
      "parents": [
        "be8896aee16f3de5f95d188f3ba1045e36e872ac"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 01 21:53:00 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 21:56:38 2026"
      },
      "message": "Add a[]\n\nPiperOrigin-RevId: 941308935\n"
    },
    {
      "commit": "be8896aee16f3de5f95d188f3ba1045e36e872ac",
      "tree": "97d3e204d8b8842fee48cac903b20e06d2f899d3",
      "parents": [
        "2c718dadc6bed8061c9e67d5d82f229e78ae4647"
      ],
      "author": {
        "name": "Error Prone Team",
        "email": "java-team-github-bot@google.com",
        "time": "Wed Jul 01 20:48:58 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 20:50:03 2026"
      },
      "message": "Keep lambda parameter declared type when necessary\n\nJava does not allow lambdas to have a mix of parameters with declared\nand inferred types. This CL removes type declarations only when all\nlambda parameters with a declared type can be replaced with _.\n\nPiperOrigin-RevId: 941275408\n"
    },
    {
      "commit": "2c718dadc6bed8061c9e67d5d82f229e78ae4647",
      "tree": "928af7ca784ddff2bf23a6563b7d1499caebce65",
      "parents": [
        "4b6bc0f1cebd2a6cb1d67418150c6a08c472228c"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Wed Jul 01 20:07:30 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 20:10:01 2026"
      },
      "message": "Introduce minimal Refaster support for [unnamed variables](https://openjdk.org/jeps/456).\n\nThere is probably more to be worked out here, even to decide upon the full set of desired behaviors. But it\u0027s nice to at least not crash.\n\nPiperOrigin-RevId: 941255538\n"
    },
    {
      "commit": "4b6bc0f1cebd2a6cb1d67418150c6a08c472228c",
      "tree": "21cffa92de1c558cb3ba08859e11d24eb040d7cd",
      "parents": [
        "754efd84a67f78dfd04223e8e37450591e7d2908"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Wed Jul 01 19:34:51 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 19:35:53 2026"
      },
      "message": "[IfChainToSwitch] test-only change: explicitly set value of flag `EnableSafe` in tests\n\n* Instead of relying on implicit `false` in some tests, specifies the value\n* No change to test behavior\n\nPiperOrigin-RevId: 941238746\n"
    },
    {
      "commit": "754efd84a67f78dfd04223e8e37450591e7d2908",
      "tree": "636ceadc9c159dd335bcf8f7a5f5b4b7b1783127",
      "parents": [
        "7691b5e0ed02c3fc34d5ec8e7580ba4d42a6fb75"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 01 15:37:06 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 15:37:55 2026"
      },
      "message": "In the `Contains` matcher, return `null` when the input `tree` is `null`.\n\nh/t to cpovirk@ who spelunked this :-)\n\nPiperOrigin-RevId: 941115105\n"
    },
    {
      "commit": "7691b5e0ed02c3fc34d5ec8e7580ba4d42a6fb75",
      "tree": "62bbced32ef795c7256d2319446521bc55506cd9",
      "parents": [
        "0f841a5219832902dee3722531838875f3ce5d5b"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Wed Jul 01 14:14:08 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 14:14:59 2026"
      },
      "message": "Restrict MissingJavadoc to classes only\n\nPiperOrigin-RevId: 941077267\n"
    },
    {
      "commit": "0f841a5219832902dee3722531838875f3ce5d5b",
      "tree": "c8333082dccc6636cadaf0bca752f4778416d162",
      "parents": [
        "b4d13a0c2973b07a2045c354453f79abf0427581"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 01 14:10:37 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 14:12:53 2026"
      },
      "message": "PUBLIC: Add a note about getting the end position of a tree to `ASTHelpers.getStartPosition(Tree)`.\n\nPiperOrigin-RevId: 941075730\n"
    },
    {
      "commit": "b4d13a0c2973b07a2045c354453f79abf0427581",
      "tree": "c0463da6f5ade582e1287095ca693acd5496d165",
      "parents": [
        "44808f1eaf56ea329c3f17303bbddc4456b37a66"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jul 01 13:31:56 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 13:33:41 2026"
      },
      "message": "Add[]\n\nPiperOrigin-RevId: 941059839\n"
    },
    {
      "commit": "44808f1eaf56ea329c3f17303bbddc4456b37a66",
      "tree": "3340c44cca44921feb24fdb95c00bb4ec5549ddb",
      "parents": [
        "5ef437d995aa35b38a9cc7e6144e7d247abc4fc3"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Wed Jul 01 03:20:53 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jul 01 03:21:57 2026"
      },
      "message": "Update some checks and docs for [unnamed variables](https://openjdk.org/jeps/456).\n\nPiperOrigin-RevId: 940809404\n"
    },
    {
      "commit": "5ef437d995aa35b38a9cc7e6144e7d247abc4fc3",
      "tree": "62ec987166497db3300096acc2041d12fa3026d7",
      "parents": [
        "f824f905429a311d632eb9651491ac32c1aeec2c"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Tue Jun 30 21:43:32 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 30 21:44:24 2026"
      },
      "message": "Disable MissingJavadoc on constructors\n\nPiperOrigin-RevId: 940668225\n"
    },
    {
      "commit": "f824f905429a311d632eb9651491ac32c1aeec2c",
      "tree": "de7f5b42d6961d024cda6d5da58cba3083687d79",
      "parents": [
        "21018ff4b6e7fd816f09afeba1017340457f0bad"
      ],
      "author": {
        "name": "Error Prone Team",
        "email": "java-team-github-bot@google.com",
        "time": "Tue Jun 30 17:53:28 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 30 17:54:42 2026"
      },
      "message": "Fix[]\n\nThe section on Javadoc requirements has moved from s7.1.1 to s7.3 in the Google Java Style Guide.\n\nAdded in https://github.com/google/error-prone/commit/43874cde8d1a66cdcd0830c59f9e5398362085ab\n\nPiperOrigin-RevId: 940542494\n"
    },
    {
      "commit": "21018ff4b6e7fd816f09afeba1017340457f0bad",
      "tree": "ed7ad0d99ba097057a0e9fabea2266742ea48148",
      "parents": [
        "43874cde8d1a66cdcd0830c59f9e5398362085ab"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Tue Jun 30 15:43:23 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 30 15:44:22 2026"
      },
      "message": "[IfChainToSwitch] enable checker by default\n\nPiperOrigin-RevId: 940475298\n"
    },
    {
      "commit": "43874cde8d1a66cdcd0830c59f9e5398362085ab",
      "tree": "f0fe9a9323c14fd3d688220051fce7e54fdf0c94",
      "parents": [
        "a9851fe806f4946c6f7ba9ff4f7fd9027e3dca77"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Tue Jun 30 12:23:00 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 30 12:24:29 2026"
      },
      "message": "Implement MissingJavadoc Error Prone check\n\nAdd a consolidated MissingJavadoc Error Prone check that flags missing Javadoc comments on public classes, interfaces, enums, annotations, and public/protected methods and fields.\n\nAlso includes a special case for nested Builder classes to suggest a tailored diagnostic and prefix SuggestedFix.\n\nPiperOrigin-RevId: 940399041\n"
    },
    {
      "commit": "a9851fe806f4946c6f7ba9ff4f7fd9027e3dca77",
      "tree": "b34320f9d83a66a550e81e818c6f2dc2c3fb4603",
      "parents": [
        "deb4a7485c5f92e498264f2f54809d1a3799eb70"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Tue Jun 30 00:42:21 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 30 00:43:25 2026"
      },
      "message": "Document that Java uses object identity for `Throwable` equality in a couple places, even if you override `equals`.\n\nPiperOrigin-RevId: 940126889\n"
    },
    {
      "commit": "deb4a7485c5f92e498264f2f54809d1a3799eb70",
      "tree": "85942ae92d983d2ee6c7a123159f91026423bc07",
      "parents": [
        "084cfea81d48c0a5de0d710cd3850cf3d16b8457"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 17:45:17 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 29 17:45:55 2026"
      },
      "message": "Bump org.checkerframework:checker-qual from 3.42.0 to 4.2.0 in the dependencies group\n\nBumps the dependencies group with 1 update: [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework).\n\nUpdates `org.checkerframework:checker-qual` from 3.42.0 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/typetools/checker-framework/releases\"\u003eorg.checkerframework:checker-qual\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChecker Framework 4.2.0\u003c/h2\u003e\n\u003ch2\u003eVersion 4.2.0 (2026-06-01)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eRenamed error message key \u0026quot;createsmustcallfor.target.unparseable\u0026quot; to \u0026quot;createsmustcallfor.target.unparsable\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eImplementation details\u003c/h3\u003e\n\u003cp\u003eIn \u003ccode\u003eAnnotatedTypeFactory\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew overload \u003ccode\u003ecanonicalAnnotation(AnnotationMirror, TypeMirror)\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn \u003ccode\u003eTypeHierarchy\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew methods \u003ccode\u003eequalsShallowEffective()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7676\"\u003e#7676\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7679\"\u003e#7679\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7680\"\u003e#7680\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7695\"\u003e#7695\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7697\"\u003e#7697\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7699\"\u003e#7699\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7700\"\u003e#7700\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7727\"\u003e#7727\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eChecker Framework 4.1.0\u003c/h2\u003e\n\u003ch2\u003eVersion 4.1.0 (2026-05-01)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eRemoved deprecated script \u003ccode\u003echecker/bin-devel/build.sh\u003c/code\u003e; use \u003ccode\u003e./gradlew assemble\u003c/code\u003e instead.\u003c/p\u003e\n\u003cp\u003eRemoved deprecated names \u0026quot;builder\u0026quot;, \u0026quot;object.construction\u0026quot;, and \u0026quot;objectconstruction\u0026quot; for the Called Methods Checker.\u003c/p\u003e\n\u003ch3\u003eImplementation details\u003c/h3\u003e\n\u003cp\u003eNew method annotation \u003ccode\u003e@DoesNotUnrefineReceiver\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIn \u003ccode\u003eAnnotatedTypeFactory\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew method \u003ccode\u003ehasDoesNotUnrefineReceiver()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eisAliasedTypeAnnotation()\u003c/code\u003e is now protected rather than public.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/6890\"\u003e#6890\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7364\"\u003e#7364\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7488\"\u003e#7488\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.0 of the Checker Framework\u003c/h2\u003e\n\u003ch2\u003eVersion 4.0.0 (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eTo run the Checker Framework, you need to use a JDK 17 or later version of javac.  That is, you need to use JDK 17 or later when compiling your code.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md\"\u003eorg.checkerframework:checker-qual\u0027s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 4.2.0 (2026-06-01)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eRenamed error message key \u0026quot;createsmustcallfor.target.unparseable\u0026quot; to \u0026quot;createsmustcallfor.target.unparsable\u0026quot;.\u003c/p\u003e\n\u003ch3\u003eImplementation details\u003c/h3\u003e\n\u003cp\u003eIn \u003ccode\u003eAnnotatedTypeFactory\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew overload \u003ccode\u003ecanonicalAnnotation(AnnotationMirror, TypeMirror)\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIn \u003ccode\u003eTypeHierarchy\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew methods \u003ccode\u003eequalsShallowEffective()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7676\"\u003e#7676\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7679\"\u003e#7679\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7680\"\u003e#7680\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7695\"\u003e#7695\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7697\"\u003e#7697\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7699\"\u003e#7699\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7700\"\u003e#7700\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7727\"\u003e#7727\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 4.1.0 (2026-05-01)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eRemoved deprecated script \u003ccode\u003echecker/bin-devel/build.sh\u003c/code\u003e; use \u003ccode\u003e./gradlew assemble\u003c/code\u003e\ninstead.\u003c/p\u003e\n\u003cp\u003eRemoved deprecated names \u0026quot;builder\u0026quot;, \u0026quot;object.construction\u0026quot;, and\n\u0026quot;objectconstruction\u0026quot; for the Called Methods Checker.\u003c/p\u003e\n\u003ch3\u003eImplementation details\u003c/h3\u003e\n\u003cp\u003eNew method annotation \u003ccode\u003e@DoesNotUnrefineReceiver\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIn \u003ccode\u003eAnnotatedTypeFactory\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enew method \u003ccode\u003ehasDoesNotUnrefineReceiver()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eisAliasedTypeAnnotation()\u003c/code\u003e is now protected rather than public.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eClosed issues\u003c/h3\u003e\n\u003cp\u003e\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/6890\"\u003e#6890\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7364\"\u003e#7364\u003c/a\u003e, \u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7488\"\u003e#7488\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 4.0.0 (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eUser-visible changes\u003c/h3\u003e\n\u003cp\u003eTo run the Checker Framework, you need to use a JDK 17 or later version of\njavac.  That is, you need to use JDK 17 or later when compiling your code.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/231e85507cb0166a94145d2e35b8d3d355c3ced6\"\u003e\u003ccode\u003e231e855\u003c/code\u003e\u003c/a\u003e new release 4.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/e59f66f668bfffbadbd3185c103a898ee69fa745\"\u003e\u003ccode\u003ee59f66f\u003c/code\u003e\u003c/a\u003e Prep for release.\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/bcc021ff1928ddb3e2ca9afa876bb16a6e924396\"\u003e\u003ccode\u003ebcc021f\u003c/code\u003e\u003c/a\u003e Fix problem with type var in a method reference (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7729\"\u003e#7729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/91392e5f6a521ee48baa974f39038a3ff309c5e3\"\u003e\u003ccode\u003e91392e5\u003c/code\u003e\u003c/a\u003e Use gradle-git-properties version 4\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/cdae25801e483901ce5ebd814ad5286f5e332531\"\u003e\u003ccode\u003ecdae258\u003c/code\u003e\u003c/a\u003e Increase constraint limit (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7752\"\u003e#7752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/dbb553d23011306ced4a7d49fac82aa2df850e9d\"\u003e\u003ccode\u003edbb553d\u003c/code\u003e\u003c/a\u003e Fix check of receiver override (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7746\"\u003e#7746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/264c73dbc2cde531fe88f6546c76727de348d3af\"\u003e\u003ccode\u003e264c73d\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;unneeded.suppression\u0026quot; warning (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7747\"\u003e#7747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/d118b89190356b846201f2488b96710dfee11aef\"\u003e\u003ccode\u003ed118b89\u003c/code\u003e\u003c/a\u003e New methods \u003ccode\u003eequalsShallowEffective()\u003c/code\u003e (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7745\"\u003e#7745\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/a916913c161d0cf6078c32e823d724a4c31890ae\"\u003e\u003ccode\u003ea916913\u003c/code\u003e\u003c/a\u003e Simplify logic (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7744\"\u003e#7744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/typetools/checker-framework/commit/227974fbf0e546621a53da5f2db0de83fee61c46\"\u003e\u003ccode\u003e227974f\u003c/code\u003e\u003c/a\u003e Update plugin com-gradleup-shadow to v9.4.2 (\u003ca href\u003d\"https://redirect.github.com/typetools/checker-framework/issues/7749\"\u003e#7749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href\u003d\"https://github.com/typetools/checker-framework/compare/checker-framework-3.42.0...checker-framework-4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dorg.checkerframework:checker-qual\u0026package-manager\u003dmaven\u0026previous-version\u003d3.42.0\u0026new-version\u003d4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s major version (unless you unignore this specific dependency\u0027s major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency\u0027s minor version (unless you unignore this specific dependency\u0027s minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\u003c/details\u003e\n\nFixes #5920\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5920 from google:dependabot/maven/dependencies-8e0ca8f3b3 8763359049e710f3e73252d0f690deeea218c243\nPiperOrigin-RevId: 939914752\n"
    },
    {
      "commit": "084cfea81d48c0a5de0d710cd3850cf3d16b8457",
      "tree": "e453f319054f415634d3eafb33a99dc8444a613b",
      "parents": [
        "c62014a98a3bb8be42378066b65389b7ba47d1ba"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jun 29 16:42:17 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 29 16:42:56 2026"
      },
      "message": "Fix `IndexOutOfBoundsException` in `TimeUnitMismatch` when processing unnamed variables.\n\nThe `splitToLowercaseTerms` method can return an empty list for certain variable names (e.g., `_`). This change adds a check to prevent accessing the first element of an empty list, avoiding an `IndexOutOfBoundsException`. A test case for unnamed variables is added.\n\nPiperOrigin-RevId: 939881030\n"
    },
    {
      "commit": "c62014a98a3bb8be42378066b65389b7ba47d1ba",
      "tree": "30a784e60ee342491cc30317f210d3918bfc848b",
      "parents": [
        "1917d13a5d99ab1a61aa87d661aac68a514d2f74"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Sat Jun 27 17:03:10 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sat Jun 27 17:04:13 2026"
      },
      "message": "Migrate some checks off buggy reimplementations of `findEnclosingMethod` (or `TreePath`-returning cousins) and onto standard APIs, fixing a bug in the existing standard API.\n\n(The bug in the standard API is that it looks for `CLASS` but not other kinds of \"class trees.\")\n\nMore generally, consolidate on `ASTHelpers.findEnclosingMethod` (or document why we can\u0027t).\n\nPiperOrigin-RevId: 939096276\n"
    },
    {
      "commit": "1917d13a5d99ab1a61aa87d661aac68a514d2f74",
      "tree": "cca6fec9df62a95599612b1674f578e1da5d6191",
      "parents": [
        "988921dbabc42585685085dba3391937197b3ca5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 26 21:40:53 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 26 21:42:16 2026"
      },
      "message": "Bump the dependencies group across 1 directory with 47 updates\n\nBumps the dependencies group with 47 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) | `2.1` | `3.6.2` |\n| [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) | `3.0.0` | `3.6.3` |\n| [biz.aQute.bnd:bnd-maven-plugin](https://github.com/bndtools/bnd) | `6.4.0` | `7.3.0` |\n| [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) | `3.2.2` | `3.5.0` |\n| [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) | `3.11.2` | `3.12.0` |\n| [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) | `3.13.0` | `3.15.0` |\n| [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) | `2.1.2` | `3.4.0` |\n| [org.apache.maven.plugins:maven-site-plugin](https://github.com/apache/maven-site-plugin) | `3.10.0` | `3.22.0` |\n| [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | `3.1.0` | `3.5.6` |\n| [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) | `0.8.0` | `0.11.0` |\n| [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) | `1.6` | `3.2.8` |\n| [io.github.java-diff-utils:java-diff-utils](https://github.com/java-diff-utils/java-diff-utils) | `4.12` | `4.17` |\n| [com.google.auto.value:auto-value-annotations](https://github.com/google/auto) | `1.9` | `1.11.1` |\n| [com.google.auto.value:auto-value](https://github.com/google/auto) | `1.9` | `1.11.1` |\n| [org.hamcrest:hamcrest-core](https://github.com/hamcrest/JavaHamcrest) | `2.2` | `3.0` |\n| [com.google.truth:truth](https://github.com/google/truth) | `1.4.0` | `1.4.5` |\n| com.google.truth.extensions:truth-java8-extension | `1.4.0` | `1.4.5` |\n| com.google.truth.extensions:truth-proto-extension | `1.4.0` | `1.4.5` |\n| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `4.9.0` | `5.23.0` |\n| [com.google.guava:guava-testlib](https://github.com/google/guava) | `33.5.0-jre` | `33.6.0-jre` |\n| [com.google.guava:guava](https://github.com/google/guava) | `33.5.0-jre` | `33.6.0-jre` |\n| [com.github.ben-manes.caffeine:caffeine](https://github.com/ben-manes/caffeine) | `3.0.5` | `3.2.4` |\n| [com.google.jimfs:jimfs](https://github.com/google/jimfs) | `1.3.0` | `1.3.1` |\n| [com.google.auto.service:auto-service](https://github.com/google/auto) | `1.0.1` | `1.1.1` |\n| [com.google.auto.service:auto-service-annotations](https://github.com/google/auto) | `1.0.1` | `1.1.1` |\n| [org.hamcrest:hamcrest-library](https://github.com/hamcrest/JavaHamcrest) | `2.2` | `3.0` |\n| [org.pcollections:pcollections](https://github.com/hrldcpr/pcollections) | `4.0.1` | `5.0.0` |\n| [com.google.inject:guice](https://github.com/google/guice) | `5.1.0` | `7.0.0` |\n| com.google.inject.extensions:guice-assistedinject | `5.1.0` | `7.0.0` |\n| com.google.inject.extensions:guice-servlet | `5.1.0` | `7.0.0` |\n| com.google.inject.extensions:guice-testlib | `5.1.0` | `7.0.0` |\n| [org.jmock:jmock](https://github.com/jmock-developers/jmock-library) | `2.12.0` | `2.13.1` |\n| [org.jmock:jmock-junit4](https://github.com/jmock-developers/jmock-library) | `2.12.0` | `2.13.1` |\n| [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) | `4.33.2` | `4.35.1` |\n| com.google.protobuf:protobuf-java-util | `4.33.2` | `4.35.1` |\n| [com.google.dagger:dagger](https://github.com/google/dagger) | `2.50` | `2.60` |\n| [com.google.dagger:dagger-producers](https://github.com/google/dagger) | `2.50` | `2.60` |\n| [com.ibm.icu:icu4j](https://github.com/unicode-org/icu) | `74.2` | `78.3` |\n| [joda-time:joda-time](https://github.com/JodaOrg/joda-time) | `2.12.5` | `2.14.2` |\n| [org.easymock:easymock](https://github.com/easymock/easymock) | `5.2.0` | `5.6.0` |\n| [org.threeten:threeten-extra](https://github.com/ThreeTen/threeten-extra) | `1.7.2` | `1.10.0` |\n| [com.google.flogger:flogger](https://github.com/google/flogger) | `0.7.4` | `0.9` |\n| [kr.motd.maven:os-maven-plugin](https://github.com/trustin/os-maven-plugin) | `1.7.0` | `1.7.1` |\n| [org.yaml:snakeyaml](https://bitbucket.org/snakeyaml/snakeyaml) | `2.2` | `2.6` |\n| [com.github.spullara.mustache.java:compiler](https://github.com/spullara/mustache.java) | `0.9.11` | `0.9.14` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.10.1` | `2.14.0` |\n| [org.codehaus.mojo:exec-maven-plugin](https://github.com/mojohaus/exec-maven-plugin) | `3.0.0` | `3.6.3` |\n\nFixes #5916\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5916 from google:dependabot/maven/dependencies-3a515ac1cb 5773f27088f05d8b69b0adb536bca09136898e0f\nPiperOrigin-RevId: 938778359\n"
    },
    {
      "commit": "988921dbabc42585685085dba3391937197b3ca5",
      "tree": "b01ba826bc4ceef150b479675b4600251e0ec334",
      "parents": [
        "cce27d46e42ed068c2a2f4a2a2b2740f9a2d1f4b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 26 19:39:52 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 26 19:51:24 2026"
      },
      "message": "Bump the github-actions group across 1 directory with 4 updates\n\nBumps the github-actions group with 4 updates in the / directory: [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action), [actions/checkout](https://github.com/actions/checkout), [actions/setup-java](https://github.com/actions/setup-java) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).\n\n\nUpdates `styfle/cancel-workflow-action` from 0.12.0 to 0.13.1\n- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)\n- [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.12.0...0.13.1)\n\nUpdates `actions/checkout` from 3 to 7\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v3...v7)\n\nUpdates `actions/setup-java` from 4 to 5\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\nUpdates `softprops/action-gh-release` from 2.5.0 to 3.0.1\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/action-gh-release/compare/v2.5.0...v3.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: actions/setup-java\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: softprops/action-gh-release\n  dependency-version: 3.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: styfle/cancel-workflow-action\n  dependency-version: 0.13.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "cce27d46e42ed068c2a2f4a2a2b2740f9a2d1f4b",
      "tree": "58ccb873fed6efef8613e18f0cc64a2f963de38a",
      "parents": [
        "1b683cbb343fc5cdc55b367789b2e7d2f455f14a"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 26 19:38:42 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 26 19:38:42 2026"
      },
      "message": "Don\u0027t automatically upgrade io.github.eisop:dataflow-errorprone\n"
    },
    {
      "commit": "1b683cbb343fc5cdc55b367789b2e7d2f455f14a",
      "tree": "e3ac3df282a7c51c1e36bfec004386cb3bf73496",
      "parents": [
        "ab8fd5d0227f317b2f6688ce35f3bb35914ebdee"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Fri Jun 26 15:49:01 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 26 15:50:11 2026"
      },
      "message": "Use the `var` trick in a few more ErrorProne analyzers.\n\nPiperOrigin-RevId: 938613220\n"
    },
    {
      "commit": "ab8fd5d0227f317b2f6688ce35f3bb35914ebdee",
      "tree": "1ec4fde94226283ca4bd80b236f1f702020e3af2",
      "parents": [
        "554ac8f20933ba1857ed7ecc0dd36b0ea942c7a8"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 26 15:44:36 2026"
      },
      "committer": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 26 15:44:36 2026"
      },
      "message": "Enable batched dependabot updates\n"
    },
    {
      "commit": "554ac8f20933ba1857ed7ecc0dd36b0ea942c7a8",
      "tree": "6cc20133a36f4a366529db70ff6996f6c0480a72",
      "parents": [
        "630bc3be454c1d7edb0f0e4947516c9c6473e695"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Fri Jun 26 12:38:37 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 26 12:39:36 2026"
      },
      "message": "Bump `com.google.testparameterinjector` to v1.22.\n\nPiperOrigin-RevId: 938541177\n"
    },
    {
      "commit": "630bc3be454c1d7edb0f0e4947516c9c6473e695",
      "tree": "3ccdf0ef7ec4f0ce5878ecda24bbaa62d8c45687",
      "parents": [
        "3ef67994c280c9e6051d3552578e597ffda60b88"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Thu Jun 25 23:41:42 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 25 23:42:26 2026"
      },
      "message": "[IfChainToSwitch] improve detection of duplicate constant values and invalid switch expression types\n\nPiperOrigin-RevId: 938260967\n"
    },
    {
      "commit": "3ef67994c280c9e6051d3552578e597ffda60b88",
      "tree": "ed9b411d66454dabb1261cd9dfa4a4f5c081a41c",
      "parents": [
        "65cffb75fc8cfc2a701f087b11fc7969986a6184"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Thu Jun 25 20:38:52 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 25 20:39:57 2026"
      },
      "message": "Restore partial match behavior for `stringLiteral(Pattern)`\n\nThe migration to SafeRE in https://github.com/google/error-prone/commit/8f1c9c73d5704885520b4da8438bdcc6489b3173 accidentally changed behaviour, to use `pattern.asMatchPredicate()` (full-string matching) instead of `pattern.asPredicate()` (performs partial substring matching). This restores the previous behavior.\n\nPiperOrigin-RevId: 938168187\n"
    },
    {
      "commit": "65cffb75fc8cfc2a701f087b11fc7969986a6184",
      "tree": "459b2cd788f7c4d6471b4ae2ea1486d33ba2ace1",
      "parents": [
        "a83774e19d82c6c63a13349763f145386a18d8e0"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Thu Jun 25 01:01:46 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 25 01:02:49 2026"
      },
      "message": "Use the anonymous class + `var` trick in `CanIgnoreReturnValueSuggester`.\n\nPiperOrigin-RevId: 937662722\n"
    },
    {
      "commit": "a83774e19d82c6c63a13349763f145386a18d8e0",
      "tree": "1d8dfc0bca3f423fa90eb9c560b776c821d0c906",
      "parents": [
        "e1306de8a892a50f10621e9c6f63aada8fba2b68"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Thu Jun 25 00:13:50 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 25 00:15:47 2026"
      },
      "message": "Remove constructor + fields (pre-factoring before unknown commit, to minimize the diffs of that CL).\n\nPiperOrigin-RevId: 937643103\n"
    },
    {
      "commit": "e1306de8a892a50f10621e9c6f63aada8fba2b68",
      "tree": "22b548e8462aeba8b1519eac5adbd02d216b536d",
      "parents": [
        "fe6f01a851e8fdf8e3383609d0c892d4fc9e0e62"
      ],
      "author": {
        "name": "Chaoren Lin",
        "email": "aoe@google.com",
        "time": "Wed Jun 24 18:44:29 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 24 18:50:12 2026"
      },
      "message": "Remove sstable support from[]\n\nPiperOrigin-RevId: 937468612\n"
    },
    {
      "commit": "fe6f01a851e8fdf8e3383609d0c892d4fc9e0e62",
      "tree": "7620dabf794bede459c65d0d00b0cbd90b390441",
      "parents": [
        "1259c50f8f164fb021dbdde08651602964ae6fd8"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Wed Jun 24 15:46:52 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 24 15:48:03 2026"
      },
      "message": "Change `VarCheckerTest` to use text blocks and `BugCheckerRefactoringTestHelper`.\n\nPiperOrigin-RevId: 937363326\n"
    },
    {
      "commit": "1259c50f8f164fb021dbdde08651602964ae6fd8",
      "tree": "de49ba4a20652b04462d9a4f041aa4a86abe36c0",
      "parents": [
        "b70ccbc48cfdf904eab4efeb2783e74b3897091d"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Wed Jun 24 15:38:24 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 24 15:39:22 2026"
      },
      "message": "Allow `\u003d\u003d` comparisons on `Thread` instances.\n\nFixes https://github.com/google/error-prone/issues/5900\n\nPiperOrigin-RevId: 937358981\n"
    },
    {
      "commit": "b70ccbc48cfdf904eab4efeb2783e74b3897091d",
      "tree": "0a32645e4478a11fed972a5b1dc3ab8348e5738d",
      "parents": [
        "ef51c422226c2096bf7d24ec6b26bb8a85ef49b4"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jun 24 15:02:42 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 24 15:03:30 2026"
      },
      "message": "Change `TypeParameterQualifierTest` to use textblocks and `BugCheckerRefactoringTestHelper`.\n\nPiperOrigin-RevId: 937341303\n"
    },
    {
      "commit": "ef51c422226c2096bf7d24ec6b26bb8a85ef49b4",
      "tree": "996e6a15444fe86cdc47d17471e0487fc268d7ba",
      "parents": [
        "4dec3e9f234fdc4c0d9cdab5c88a9002c9a85709"
      ],
      "author": {
        "name": "Stephan Schroevers",
        "email": "stephan.schroevers@teampicnic.com",
        "time": "Wed Jun 24 14:42:04 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 24 14:43:27 2026"
      },
      "message": "Make `TypeParameterQualifier` allow `T::foo` in a Refaster `@BeforeTemplate`.\n\nStill disallowed:\n\n- `T.foo` / `T.Bar`\n- `T::foo` in a Refaster `@AfterTemplate`\n\nFixes https://github.com/google/error-prone/pull/5884\n\n(not-really-related unrelated bonus trivial: [JDK-8365676](https://bugs.openjdk.org/browse/JDK-8365676) on `T.staticMethodDeclaredOnInterfaceBoundOfT()`)\n\nRELNOTES\u003dn/a\nPiperOrigin-RevId: 937332189\n"
    },
    {
      "commit": "4dec3e9f234fdc4c0d9cdab5c88a9002c9a85709",
      "tree": "0a1543808c4b9310aa4df33e5f28a392afc318c7",
      "parents": [
        "3ecb3bf4b92fa41c2003c561681cfc686aeb3298"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Tue Jun 23 22:35:33 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 23 22:36:38 2026"
      },
      "message": "Update ReferenceEquality docs for the changes of https://github.com/google/error-prone/commit/a116aaf30fc485b5b0c876e434e3b8df526a2ecb.\n\nThis CL is one of the parts of my response to https://github.com/google/error-prone/issues/5865.\n\n(Also, it\u0027s probably well past time to stop recommending JUnit, so I replaced our example of it below with an AssertJ equivalent.)\n\n(I was tempted to additionally sneak in something about `\u003d\u003d` behavior under Valhalla, but I decided that that wouldn\u0027t be frequently asked just yet :))\n\nPiperOrigin-RevId: 936930755\n"
    },
    {
      "commit": "3ecb3bf4b92fa41c2003c561681cfc686aeb3298",
      "tree": "8a01e1dc8b37ff0b12948bf64779e6543805d6ba",
      "parents": [
        "04e1191c1e22561f2a23518bcd046430cb96db15"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Tue Jun 23 19:29:43 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 23 19:34:28 2026"
      },
      "message": "[PatternMatchingInstanceof] Enhance checker to recognize casts of parenthesized expressions\n\nFixes: https://github.com/google/error-prone/issues/5843\nPiperOrigin-RevId: 936826229\n"
    },
    {
      "commit": "04e1191c1e22561f2a23518bcd046430cb96db15",
      "tree": "ea258b875552d971207ae7b1abfedabb284ce2b7",
      "parents": [
        "0e4953119d19fbc6742cb59f25455075ca080554"
      ],
      "author": {
        "name": "Chaoren Lin",
        "email": "aoe@google.com",
        "time": "Tue Jun 23 19:29:22 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 23 19:31:43 2026"
      },
      "message": "Temporarily change `RestrictedApi` to use `java.util.regex`.\n\n`RestrictedApi` can\u0027t use RE2 regex because some users are currently using unsupported syntax (e.g., lookaheads).\n\nPiperOrigin-RevId: 936826067\n"
    },
    {
      "commit": "0e4953119d19fbc6742cb59f25455075ca080554",
      "tree": "8a940eb8650d8059e1b1e7e573d593f77d6c59b2",
      "parents": [
        "e50b159275a7236cd93f449ff952b1d69c60c3d6"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Mon Jun 22 16:16:39 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 22 16:18:09 2026"
      },
      "message": "ReferenceEquality: Ignore some comparisons against sentinel values\n\nAllow reference equality against `static final` fields of types that don\u0027t definitely implement `equals`, to allow sentinel comparisons.\n\nPiperOrigin-RevId: 936091706\n"
    },
    {
      "commit": "e50b159275a7236cd93f449ff952b1d69c60c3d6",
      "tree": "be6e9f4d5fa0eda00bb109e43f3fb0a7ac38e0e1",
      "parents": [
        "323d325bceb50f85849097300acc42b22c41f1b6"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jun 22 15:28:18 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 22 15:29:05 2026"
      },
      "message": "Fix `IdentifierName` to disallow dollar sign in identifiers\n\nRevert the changes that allowed dollar sign in `LOWER_UNDERSCORE_PATTERN` and\n`UPPER_UNDERSCORE_PATTERN` to comply with the Google Java Style Guide.\nUpdate `IdentifierNames` to reject dollar sign in type names and lower camel names.\nUpdate rename suggestions to strip dollar sign and use the cleaned name to\ndetect the intended case format, avoiding crashes.\n\nPiperOrigin-RevId: 936071252\n"
    },
    {
      "commit": "323d325bceb50f85849097300acc42b22c41f1b6",
      "tree": "d86baba7df93e1754b7550d7b7d2d492788ad79d",
      "parents": [
        "8f1c9c73d5704885520b4da8438bdcc6489b3173"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Mon Jun 22 14:44:34 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 22 14:45:34 2026"
      },
      "message": "Update the summary of `BoxingComparator`.\n\nPiperOrigin-RevId: 936053288\n"
    },
    {
      "commit": "8f1c9c73d5704885520b4da8438bdcc6489b3173",
      "tree": "c200b2f9d70994493b82ebeff809901f8fb1f9d9",
      "parents": [
        "b653855325d555dce9b85b663d4ce2532fcd5b17"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Sun Jun 21 10:25:11 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Sun Jun 21 10:26:14 2026"
      },
      "message": "Migrate Error Prone to SafeRE\n\nPiperOrigin-RevId: 935576289\n"
    },
    {
      "commit": "b653855325d555dce9b85b663d4ce2532fcd5b17",
      "tree": "ec3d27733a96c467e1d081b9b2a7cadada4d72e2",
      "parents": [
        "8aaf514682fe0e1f138062eb7e753502ee600dc7"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jun 19 21:44:36 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 19 21:45:34 2026"
      },
      "message": "Allow `\u003d\u003d` on private (and \"privately constructible\") classes that we can prove have no `equals` overrides in their class hierarchy.\n\n(a further counterproposal to https://github.com/google/error-prone/commit/a116aaf30fc485b5b0c876e434e3b8df526a2ecb)\n\n(I\u0027m ignoring the possibility that someone might generate subclasses that _do_ override `equals` (when the superclass did not already) at runtime.)\n\nThis helps with https://github.com/google/error-prone/issues/5865.\n\nPiperOrigin-RevId: 935049836\n"
    },
    {
      "commit": "8aaf514682fe0e1f138062eb7e753502ee600dc7",
      "tree": "851981ff990d842478b41b89a66019d665acbf8f",
      "parents": [
        "f2bd87a98245282291d3302c8e458def67b41722"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Fri Jun 19 17:28:24 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 19 17:29:26 2026"
      },
      "message": "Remove null checks where `null` is impossible.\n\nJetski keeps wanting to insert such checks in unknown commit on the result of `getSymbol` overloads that never return `null`. Maybe this will help? Also, it\u0027s nice to simplify the code.\n\nThose changes come courtesy of IntelliJ.\n\nAlso, in `SuppressionInfo`, move away from an `AtomicBoolean` pattern that I personally don\u0027t love in favor of an equivalent pattern using `var`, which I do love.\n\nPiperOrigin-RevId: 934978976\n"
    },
    {
      "commit": "f2bd87a98245282291d3302c8e458def67b41722",
      "tree": "111b5f2407e8a2dad18f21f6ea3d3b8bbddb33a3",
      "parents": [
        "a924abd16bb39dbd160c27d017a97e9ea80299fe"
      ],
      "author": {
        "name": "Liam Miller-Cushon",
        "email": "cushon@google.com",
        "time": "Fri Jun 19 14:58:32 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Fri Jun 19 14:59:35 2026"
      },
      "message": "Suggest `Objects.requireNonNull` instead of `if`/`throw`\n\nPiperOrigin-RevId: 934930985\n"
    },
    {
      "commit": "a924abd16bb39dbd160c27d017a97e9ea80299fe",
      "tree": "7f168f76570ede5c3e7d0161a3027c6a0cc2cd60",
      "parents": [
        "08930e16e0c63031dbd56505afad3998b08155d6"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Thu Jun 18 17:08:14 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 18 17:09:11 2026"
      },
      "message": "[UnnecessaryOptionalGet] Fix false alarm when unnamed variables are used in lambda without get\n\nFixes: https://github.com/google/error-prone/issues/5878\nPiperOrigin-RevId: 934417505\n"
    },
    {
      "commit": "08930e16e0c63031dbd56505afad3998b08155d6",
      "tree": "40772e32c651a5aa1f83b8e48dc8b8fd0616f16c",
      "parents": [
        "4afd1409989aba6832fd4b174c13f79e25c32c22"
      ],
      "author": {
        "name": "Error Prone Team",
        "email": "java-team-github-bot@google.com",
        "time": "Thu Jun 18 11:21:41 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Thu Jun 18 11:22:29 2026"
      },
      "message": "Fix bug related to visibility for nested record and getter forwarders\n\nAutoValueToRecord hardcodes \u0027public\u0027 or defaults to package-private for getter\nforwarders and compact constructors, dropping \u0027protected\u0027 or \u0027private\u0027\nmodifiers.\n\nPiperOrigin-RevId: 934266849\n"
    },
    {
      "commit": "4afd1409989aba6832fd4b174c13f79e25c32c22",
      "tree": "ca99bcbb92ea15bb72a3c29e420365b4b12b5592",
      "parents": [
        "bce3b63b722d0ee49b8fe41eadfe9598e61dfa53"
      ],
      "author": {
        "name": "Harsh Mehta",
        "email": "harshmehta010102@gmail.com",
        "time": "Wed Jun 17 20:02:10 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 17 20:03:15 2026"
      },
      "message": "Fix NPE in `VarWithPrimitive` when lambda parameters have inferred primitive types\n\n## Problem\n\nFixes #5857\n\n`VarWithPrimitive` throws a `NullPointerException` when a lambda has an implicit\nparameter whose inferred type is a primitive:\n\n```java\nbyte[] bar \u003d new byte[6];\nMap\u003cByte, List\u003cByte\u003e\u003e indicesMap \u003d\n    IntStream.range(0, 6)\n        .mapToObj(n -\u003e n)\n        .collect(Collectors.groupingBy(\n            n -\u003e bar[n],\n            Collectors.mapping(\n                n -\u003e (byte) n.intValue(),\n                Collectors.toList())));\n\n// Exception:\njava.lang.NullPointerException: Cannot invoke\n\"com.sun.tools.javac.tree.JCTree.getStartPosition()\"\nbecause \"tree\" is null\n```\n\n## Root Cause\n\n`hasImplicitType()` returns `true` for both:\n\n- `var` declarations\n- Implicit lambda parameters (when `VariableTree.getType()` is `null`, per JDK-8268850)\n\n`VarWithPrimitive` used `hasImplicitType()` as its guard, so lambda parameters\nwith inferred primitive types passed the check and reached\n`replaceVariableType()`.\n\nInside `replaceVariableType()`, `tree.getType()` returns `null` for these\nparameters. `hasExplicitSource(null, state)` was then called unconditionally,\nwhich invokes:\n\n```java\ngetStartPosition(null)\n```\n\nresulting in a `NullPointerException`.\n\n## Fix\n\nAdd a null guard for `type` in `SuggestedFixes.replaceVariableType()` at the\nactual crash site.\n\nIf `type \u003d\u003d null`:\n\n- Skip the `hasExplicitSource()` call.\n- Fall through to `getStartPosition(tree)`.\n\nThe subsequent token scan finds no `var` keyword for implicit lambda\nparameters and correctly returns `Optional.empty()`, producing `NO_MATCH`\nwithout throwing an exception.\n\nThis is the minimal fix because:\n\n- It addresses the actual crash site.\n- It is defensive against any other callers that may pass a `VariableTree`\n  with a null type.\n\n## Tests\n\n### `implicitLambdaParameter_noMatch`\n\nRegression test reproducing the exact code from the bug report:\n\n- Single-parameter lambdas\n- Inferred `int` and `byte` types\n- Verifies `NO_MATCH` and no exception\n\n### `multiParamImplicitLambda_noMatch`\n\nTests a multi-parameter implicit lambda:\n\n```java\nIntBinaryOperator op \u003d (a, b) -\u003e a + b;\n```\n\n- Both parameters inferred as `int`\n- Verifies `NO_MATCH` and no exception\n\n### `explicitLambdaParam_noMatch`\n\nTests an explicit lambda parameter:\n\n```java\n(int n) -\u003e n\n```\n\n- `hasImplicitType()` returns `false`\n- Verifies no match is reported\n\n### `enhancedForLoop`\n\nTests:\n\n```java\nfor (var x : intArray) {\n    // ...\n}\n```\n\nExpected fix:\n\n```java\nfor (int x : intArray) {\n    // ...\n}\n```\n\n### `forLoopInitializer`\n\nTests:\n\n```java\nfor (var i \u003d 0; i \u003c 10; i++) {\n    // ...\n}\n```\n\nExpected fix:\n\n```java\nfor (int i \u003d 0; i \u003c 10; i++) {\n    // ...\n}\n```\n\nFixes #5868\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/google/error-prone/pull/5868 from HarshMehta112:master 58810695d420a1ccc867867dc643797e5a87d192\nPiperOrigin-RevId: 933878466\n"
    },
    {
      "commit": "bce3b63b722d0ee49b8fe41eadfe9598e61dfa53",
      "tree": "9465fef1f82fed14535ae0d13c9cfe8aa321eb54",
      "parents": [
        "df9e35e6b850c3965658f69721df4aa51a44232e"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jun 17 15:12:23 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 17 15:13:24 2026"
      },
      "message": "Simplify `Contains.FirstMatchingScanner`.\n\nPiperOrigin-RevId: 933733136\n"
    },
    {
      "commit": "df9e35e6b850c3965658f69721df4aa51a44232e",
      "tree": "ee3b2314c24c164f818b72688caa11fa3bcd6991",
      "parents": [
        "b096ccdad8cc9c452475c7cd7ecea824db367ec7"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jun 17 15:07:37 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 17 15:08:21 2026"
      },
      "message": "Add a test for a classic `switch` with `return` statements.\n\nPiperOrigin-RevId: 933730823\n"
    },
    {
      "commit": "b096ccdad8cc9c452475c7cd7ecea824db367ec7",
      "tree": "31c223a8a60b3a71813ed89a8d8a995c2eca4e94",
      "parents": [
        "e4a6bb114517c957c2f87ec86b8633b48ae7598e"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Wed Jun 17 01:57:13 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Wed Jun 17 01:58:14 2026"
      },
      "message": "Fix reassignment bug in PatternMatchingInstanceof.\n\nAvoid refactoring if the variable assigned from the cast is reassigned, preventing compilation errors since pattern variables are implicitly `final`.\n\nChanges:\n- Implement `isReassigned` helper using `TreeScanner` to check for assignments, compound assignments, and unary increments/decrements.\n- Update `matchInstanceOf` to avoid refactoring when the cast variable is reassigned.\n- Add test cases to `PatternMatchingInstanceofTest` covering reassignment, increment, and compound assignment cases.\n- Simplify logic in `matchInstanceOf` to use a single pass loop.\nPiperOrigin-RevId: 933419776\n"
    },
    {
      "commit": "e4a6bb114517c957c2f87ec86b8633b48ae7598e",
      "tree": "6d2a4e7064f5cdbab8d65110ad1e20b9c33da0dd",
      "parents": [
        "72f0b39873bea188b5e6c764a6ec51d2268f57f6"
      ],
      "author": {
        "name": "Kurt Alfred Kluever",
        "email": "kak@google.com",
        "time": "Tue Jun 16 20:24:39 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Tue Jun 16 20:25:45 2026"
      },
      "message": "Demonstrate bugs in `PatternMatchingInstanceof` with[]\n\n1. Reassignment of the cast variable (which is `final` in pattern matching).\n2. Variable name clobbering due to scope expansion.\n\nPiperOrigin-RevId: 933266501\n"
    },
    {
      "commit": "72f0b39873bea188b5e6c764a6ec51d2268f57f6",
      "tree": "d0470834fc553d28e1018655fbf0d4edcc0f865e",
      "parents": [
        "9d66ef18257d474cb37df38708a65c6bbeb9a740"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Mon Jun 15 19:46:18 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 15 19:47:20 2026"
      },
      "message": "Change `VisitorState` to be `final`.\n\n(another piece of the work prompted by https://github.com/google/error-prone/issues/5865, left out of my earlier https://github.com/google/error-prone/commit/c804507faa104c54059a66037e881e1fd15fd831 while I dealt with a mock)\n\nStartblock:\n  unknown commit\n  and then\n  remember\nPiperOrigin-RevId: 932613877\n"
    },
    {
      "commit": "9d66ef18257d474cb37df38708a65c6bbeb9a740",
      "tree": "d45d484dea79420c6ae10f9ea0175876cd994261",
      "parents": [
        "6b13adfaa2899519ee4333ef730476e978186c3e"
      ],
      "author": {
        "name": "markbrady",
        "email": "markbrady@google.com",
        "time": "Mon Jun 15 16:04:13 2026"
      },
      "committer": {
        "name": "Error Prone Team",
        "email": "error-prone-team+copybara@google.com",
        "time": "Mon Jun 15 16:07:43 2026"
      },
      "message": "[IfChainToSwitch] add a new flag specifying the minimum length of an if-chain that can trigger a finding\n\n* also sets the value at 5, as compared to (hardcoded) value of 3 previously\n\nPiperOrigin-RevId: 932492584\n"
    }
  ],
  "next": "6b13adfaa2899519ee4333ef730476e978186c3e"
}
