)]}'
{
  "commit": "0d65e85e93ac4181fc19d816d600dd4da7c18393",
  "tree": "369f467c8f5acbf70e72df33d677574b1b052f39",
  "parents": [
    "2e42e94bd769b5ffbaf4dff5cb307dfe4c25616f"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Jul 20 14:59:05 2022 -0600"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "martin.fick@linaro.org",
    "time": "Wed Sep 07 15:39:08 2022 -0600"
  },
  "message": "Use a TaskTree.Node.Invalid instead of nulls\n\nPreviously nulls were used in the TaskTree.NodeList subnodes list to\nindicate a special invalid use case, use a new TaskTree.Node.Invalid\nclass to indicate this. This change helps clarify the explicit invalid\ncase, but also makes unexpected NPEs during development less likely.\nSince it is more obvious now when Nodes are invalid, go ahead and mark\ninvalid Nodes as cacheable for Branch filtering since they are\nimmutable.\n\nChange-Id: I1551072ed2824a2d596060259d3da98b92abe04e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "690b03583f8da362a658de0e42322c136f947ec2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java",
      "new_id": "ae40471c84bfcb8949e1ade69b5adcdf6810056d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java"
    },
    {
      "type": "modify",
      "old_id": "e4a2f10f582243a9757aaa350206b785379e955f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java",
      "new_id": "058bb2a7efe47e05ca27884c0745252f46619f7c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/task/TaskTree.java"
    }
  ]
}
