)]}'
{
  "commit": "8945e0112f846c37453f298d0bbb8db7cb1870e4",
  "tree": "78dc08da80a4a715e57f4c5feca3f1e5d260199b",
  "parents": [
    "10b99137d43a67d15db2c58640d31a79feaafae4"
  ],
  "author": {
    "name": "Hixie",
    "email": "github.com@spam.hixie.ch",
    "time": "Thu Oct 08 15:18:23 2015 -0700"
  },
  "committer": {
    "name": "Hixie",
    "email": "github.com@spam.hixie.ch",
    "time": "Thu Oct 08 15:21:18 2015 -0700"
  },
  "message": "Changing themes caused crash\n\nThe root cause was that we crawled the tree to mark anyone who depended\non the updated theme dirty _after_ we crawled it to rebuild it. Thus, if\nanyone was already marked dirty when the process started, then got\nmarked clean by the first (rebuild) walk, then got marked dirty again by\nthe notification, they\u0027d be clean when they got the notification,\ndespite already being in the dirty list, which would cause an assertion.\n\nAlso IconTheme didn\u0027t have an operator\u003d\u003d, so it was independently too\naggressive about updates.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f92219de4062cb5bf7c716cb12102cb03a0920eb",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/framework.dart",
      "new_id": "dd36a8600bacbf76d4c1011a1bde8efbbd6c903a",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/framework.dart"
    },
    {
      "type": "modify",
      "old_id": "5dcee05232c331da3aa6ce385de8711272192ccf",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/icon.dart",
      "new_id": "9b71b138c6ab636a6134c6a64de266e644ab7138",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/icon.dart"
    }
  ]
}
