)]}'
{
  "commit": "0d2f4bd307c2d2822b689ec9f73afa385ff395ed",
  "tree": "af7264df54c537a8904528fb352bef016ed2c10c",
  "parents": [
    "0f3e6b3b35bc54507d2cf5e9da8efacc22a774e8"
  ],
  "author": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue Sep 01 16:24:47 2026 +0200"
  },
  "committer": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue Sep 01 09:58:35 2026 -0700"
  },
  "message": "Fix nondeterministic rewriting of KeepInfoCollection\n\nKeepInfoCollection#rewrite method rewrites the keep info according to\nthe current graph lens. When method collisions arise, the last update\noverwrites any other keep info.\n\nThis CL updates KeepInfoCollection#rewrite so that it joins the keep\ninfo in presence of collisions, thereby avoiding any nondeterminism from\nthis.\n\nThis also updates the vertical class merger so that it no longer causes\nany collisions.\n\nBug: b/524429826\nBug: b/169927809\nChange-Id: I8fd25b776bad15fd73a39a7e7e368be46d7c39a7",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "47d1d31a7a62d41271228be36cd42b50e451a142",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/KeepInfoCollection.java",
      "new_id": "d0a2fa0297ee4d6f199cd2f517e25edb05690b23",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/KeepInfoCollection.java"
    },
    {
      "type": "modify",
      "old_id": "04b5dfcd6c21625f24ef842b9953ef566238ef31",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/ClassMerger.java",
      "new_id": "4edfe23948043a803589e0cfae488f1d177b10cf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/ClassMerger.java"
    },
    {
      "type": "modify",
      "old_id": "de40a8ed8a6f28a6a82dbb4907ec9c95e5d33504",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/ConnectedComponentVerticalClassMerger.java",
      "new_id": "acf92e9ab8f27220f80e8f946aa6a9328ad276ce",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/ConnectedComponentVerticalClassMerger.java"
    },
    {
      "type": "modify",
      "old_id": "f27c3e848ed295647d4b396c9023423ac907e3c8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java",
      "new_id": "4222aed2daff86c93ae47d5d54940040e758ca2e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java"
    },
    {
      "type": "modify",
      "old_id": "43bdbd7969186964c504269044a48cc6fd63c38d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerResult.java",
      "new_id": "eb18dc3a131911107fd0fcde79701e7d77c38d91",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerResult.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "41a6a4fe5df41d932bca9c1ffdcee073491f3143",
      "new_mode": 33188,
      "new_path": "src/test/java8/classmerging/com/android/tools/r8/classmerging/vertical/VerticalClassMergerKeepInfoCollisionTest.java"
    },
    {
      "type": "modify",
      "old_id": "513298f73932acd62761cb9e04b7a900ac531ff3",
      "old_mode": 33188,
      "old_path": "src/utils/java/com/android/tools/r8/utils/internal/SetUtils.java",
      "new_id": "b804d7d9f6f593cc11277b37da7c22c0b99156f5",
      "new_mode": 33188,
      "new_path": "src/utils/java/com/android/tools/r8/utils/internal/SetUtils.java"
    }
  ]
}
