)]}'
{
  "log": [
    {
      "commit": "2e614613995ca5ee374d01573cf107c9563b90ba",
      "tree": "f92f07a84565a28cbb9276010b4563780e4e29d6",
      "parents": [
        "8aa5360335341ab5342b28672f42c3273758510c"
      ],
      "author": {
        "name": "Filip Hracek",
        "email": "filiph@users.noreply.github.com",
        "time": "Fri Mar 24 17:19:10 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 24 17:19:10 2017"
      },
      "message": "Update README with link"
    },
    {
      "commit": "8aa5360335341ab5342b28672f42c3273758510c",
      "tree": "c6af254122520cc3755d766fc5260e5761fb2a17",
      "parents": [
        "0a6a4063dbbe3c64f0bd4608cf1e6262c42123c8"
      ],
      "author": {
        "name": "Seth Ladd",
        "email": "sethladd@gmail.com",
        "time": "Sun Mar 29 19:50:42 2015"
      },
      "committer": {
        "name": "Seth Ladd",
        "email": "sethladd@gmail.com",
        "time": "Sun Mar 29 19:50:42 2015"
      },
      "message": "Update README.md"
    },
    {
      "commit": "0a6a4063dbbe3c64f0bd4608cf1e6262c42123c8",
      "tree": "2f272e47669d8ee82f100ba9b1619e7feb70463c",
      "parents": [
        "a6d2c3eb4e035c996779b7743be3238b9725b2c5",
        "ae03e0cc831125fd3c0fb269dc9dce69587494cb"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Feb 24 13:14:44 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Feb 24 13:14:44 2015"
      },
      "message": "Merge pull request #86 from kmillikin/issue-83\n\nProperly translate for-in and await for-in without a declaration keyword..."
    },
    {
      "commit": "ae03e0cc831125fd3c0fb269dc9dce69587494cb",
      "tree": "2f272e47669d8ee82f100ba9b1619e7feb70463c",
      "parents": [
        "a6d2c3eb4e035c996779b7743be3238b9725b2c5"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@google.com",
        "time": "Tue Feb 24 13:10:49 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@google.com",
        "time": "Tue Feb 24 13:10:49 2015"
      },
      "message": "Properly translate for-in and await for-in without a declaration keyword.\n\nIf a for-in loop variable is declared with a type and without a keyword,\ne.g., \u0027var\u0027, then we did not translate it correctly.\n"
    },
    {
      "commit": "a6d2c3eb4e035c996779b7743be3238b9725b2c5",
      "tree": "06e5a2153a798faecd3f243a59a61d7999108010",
      "parents": [
        "8b401a9f2e5e81dca5f70dbe7564112a0823dee6",
        "53338adc9ed9c3de9d0330c92fb35a8cea4bf7bc"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Jan 30 13:04:50 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Jan 30 13:04:50 2015"
      },
      "message": "Merge pull request #80 from kmillikin/issue-79\n\nHandle failure of \u0027on T catch\u0027 clauses properly."
    },
    {
      "commit": "53338adc9ed9c3de9d0330c92fb35a8cea4bf7bc",
      "tree": "06e5a2153a798faecd3f243a59a61d7999108010",
      "parents": [
        "8b401a9f2e5e81dca5f70dbe7564112a0823dee6"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Jan 30 13:02:54 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Jan 30 13:02:54 2015"
      },
      "message": "Handle failure of \u0027on T catch\u0027 clauses properly.\n\n\u0027on T catch\u0027 clauses are translated into if/else with explicit type\ntests.  If all the tests fail the exception was thrown again, losing\nthe stack trace from the original exception.\n\nInstead, use an explicit application of the error continuation (which\nwe already know there\u0027s an await).  This will either be a direct call\nto Completer.completeError with two arguments, or a call to a local\ncatch handler function with two arguments.\n"
    },
    {
      "commit": "8b401a9f2e5e81dca5f70dbe7564112a0823dee6",
      "tree": "934ae8c50e6943d4b274ae6756192f8b4149e440",
      "parents": [
        "ebefc80d127ddb937831e8d76a34775c08815612",
        "83c73d4a98bba92cabbbaf3487dc898a4c7ea427"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Jan 16 09:08:34 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Jan 16 09:08:34 2015"
      },
      "message": "Merge pull request #78 from kmillikin/switch-cases\n\nAdd a break statement to the end of each switch case."
    },
    {
      "commit": "83c73d4a98bba92cabbbaf3487dc898a4c7ea427",
      "tree": "934ae8c50e6943d4b274ae6756192f8b4149e440",
      "parents": [
        "ebefc80d127ddb937831e8d76a34775c08815612"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Jan 15 15:58:13 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Jan 15 15:58:13 2015"
      },
      "message": "Add a break statement to the end of each switch case.\n\nThe body of a switch case will normally end with a call in tail\nposition.  However, this causes warnings because the case does not end\nwith break, continue, return, or throw.  Solve the issue by manually\nadding a break to the end of each switch case.\n"
    },
    {
      "commit": "ebefc80d127ddb937831e8d76a34775c08815612",
      "tree": "2c18ae87e63587189df3d19229a3365bd26af8f4",
      "parents": [
        "b0f9e56096fd973e51d43639c3d5a88cf43707ee",
        "62d9867cb1379ab80e8744a3072cbeceb667618a"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Jan 06 13:14:45 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Jan 06 13:14:45 2015"
      },
      "message": "Merge pull request #76 from kmillikin/enable-enums\n\nAllow enums in the input."
    },
    {
      "commit": "62d9867cb1379ab80e8744a3072cbeceb667618a",
      "tree": "2c18ae87e63587189df3d19229a3365bd26af8f4",
      "parents": [
        "b0f9e56096fd973e51d43639c3d5a88cf43707ee"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Jan 06 13:11:38 2015"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Jan 06 13:11:38 2015"
      },
      "message": "Allow enums in the input.\n\nEnum declarations do not contain the async modifier, so they are copied\nunchanged into the output.  Uses of enum values of the form E.id will parse\nas PrefixedIdentifiers, in which case the translation already handles them\ncorrectly.\n\nEnabling support simply requires setting the analyzer\u0027s flag to enable them.\n"
    },
    {
      "commit": "b0f9e56096fd973e51d43639c3d5a88cf43707ee",
      "tree": "52d97c3e90329f122128367abe844a4a0c8dc442",
      "parents": [
        "4fa8e37e05b89754da927ccc04ded82198ebea4c"
      ],
      "author": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 22:29:13 2014"
      },
      "committer": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 22:29:13 2014"
      },
      "message": "Update README.md"
    },
    {
      "commit": "4fa8e37e05b89754da927ccc04ded82198ebea4c",
      "tree": "bea714bf2a6995d1ea44b5ed1be1caf2a003c8db",
      "parents": [
        "56fffc9fba898fa6513900d75dd111af20662349"
      ],
      "author": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:12:35 2014"
      },
      "committer": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:12:35 2014"
      },
      "message": "Update README.md"
    },
    {
      "commit": "56fffc9fba898fa6513900d75dd111af20662349",
      "tree": "fcace1417e005e3b2c0a221a265a1406beafa446",
      "parents": [
        "b9718eef672689a1bdcf3cc3d993540ffb058c01"
      ],
      "author": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:12:17 2014"
      },
      "committer": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:12:17 2014"
      },
      "message": "Add dart:async import to README"
    },
    {
      "commit": "b9718eef672689a1bdcf3cc3d993540ffb058c01",
      "tree": "3b4249bce7721e862b9553703f8631b497cba7ad",
      "parents": [
        "7652b103a832261ae21669286e172e996507feba"
      ],
      "author": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:06:42 2014"
      },
      "committer": {
        "name": "Kathy Walrath",
        "email": "kathyw@google.com",
        "time": "Mon Dec 08 19:06:42 2014"
      },
      "message": "Fix pubspec.yaml info in README"
    },
    {
      "commit": "7652b103a832261ae21669286e172e996507feba",
      "tree": "dea9db28c22cfa3da6c569328a65e05d9cbfe391",
      "parents": [
        "254ca7fa5b31e16b5b72013fbf15802c5aed1dd3",
        "440057327ccade6e118bf809b73e480e314ad5dc"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Dec 08 11:41:53 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Dec 08 11:41:53 2014"
      },
      "message": "Merge pull request #73 from kmillikin/issue-72\n\nFix a bug in the translation of nested loops."
    },
    {
      "commit": "254ca7fa5b31e16b5b72013fbf15802c5aed1dd3",
      "tree": "91ecb8a297cdffd4e79618da835e1c6c260924d6",
      "parents": [
        "04e540562a04380a3e20a422c8bfe306e6f79f95",
        "3d643cc165247a4ea3066e4b863136903ef87c24"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Dec 02 11:17:56 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Dec 02 11:17:56 2014"
      },
      "message": "Merge pull request #71 from xxgreg/master\n\nFix pretty printing of instance creation with generic arguments"
    },
    {
      "commit": "440057327ccade6e118bf809b73e480e314ad5dc",
      "tree": "09540d55a051a0248409dfca79823aa23fdf5d4f",
      "parents": [
        "04e540562a04380a3e20a422c8bfe306e6f79f95"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Dec 02 10:00:52 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Dec 02 10:00:52 2014"
      },
      "message": "Fix a bug in the translation of nested loops.\n\nWhen falling off the body of a loop, we used:\n\n    trampoline \u003d continue;\n\nand relied on an outer trampoline loop.  However it\u0027s possible to\nreach the end of the body without being nested inside such a loop.\nThis happens in the case that there is an await from an inner\nloop.\n\n(An await in a loop will normally restore the loop in the .then\ncallback.  An await in an inner loop will only restore that innermost\nloop in the .then callback.)\n\nInstead, when falling off the body of the loop we need the full\ntrampoline:\n\n    trampoline \u003d continue;\n    do trampoline(); while (trampoline !\u003d null);\n"
    },
    {
      "commit": "3d643cc165247a4ea3066e4b863136903ef87c24",
      "tree": "91ecb8a297cdffd4e79618da835e1c6c260924d6",
      "parents": [
        "236361d533a46ebfbc5f52d5bd96aed2fd3f915a"
      ],
      "author": {
        "name": "Greg Lowe",
        "email": "greg@vis.net.nz",
        "time": "Wed Nov 19 03:43:54 2014"
      },
      "committer": {
        "name": "Greg Lowe",
        "email": "greg@vis.net.nz",
        "time": "Wed Nov 19 03:43:54 2014"
      },
      "message": "Handle try block without catch parameters\n"
    },
    {
      "commit": "236361d533a46ebfbc5f52d5bd96aed2fd3f915a",
      "tree": "72855c4a96df4b1bfbd0cd28d3e8d058901b910b",
      "parents": [
        "04e540562a04380a3e20a422c8bfe306e6f79f95"
      ],
      "author": {
        "name": "Greg Lowe",
        "email": "greg@vis.net.nz",
        "time": "Sun Nov 16 08:02:35 2014"
      },
      "committer": {
        "name": "Greg Lowe",
        "email": "greg@vis.net.nz",
        "time": "Sun Nov 16 08:02:35 2014"
      },
      "message": "Fix pretty printing of instance creation with generic arguments\n"
    },
    {
      "commit": "04e540562a04380a3e20a422c8bfe306e6f79f95",
      "tree": "e56ae726f0e1ef431448e456c3772cbec9acd003",
      "parents": [
        "c3685de7d188f99c797aeb04d8e1c2d3ef6f0a9f"
      ],
      "author": {
        "name": "Seth Ladd",
        "email": "sethladd@gmail.com",
        "time": "Fri Oct 24 17:29:50 2014"
      },
      "committer": {
        "name": "Seth Ladd",
        "email": "sethladd@gmail.com",
        "time": "Fri Oct 24 17:29:50 2014"
      },
      "message": "Update README.md"
    },
    {
      "commit": "c3685de7d188f99c797aeb04d8e1c2d3ef6f0a9f",
      "tree": "a2c5477766dc868c5abc2acccd302b3c0f5ffb59",
      "parents": [
        "5536b34ed24331e6d7ac1118c2cf71586bf0cf4d",
        "98d0b65478f569d148a2ab3d6546ed50a926ace7"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Oct 06 12:28:43 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Oct 06 12:28:43 2014"
      },
      "message": "Merge pull request #67 from kmillikin/cleanup\n\nA major cleanup of the repository."
    },
    {
      "commit": "98d0b65478f569d148a2ab3d6546ed50a926ace7",
      "tree": "a2c5477766dc868c5abc2acccd302b3c0f5ffb59",
      "parents": [
        "5536b34ed24331e6d7ac1118c2cf71586bf0cf4d"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Oct 06 12:12:55 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Oct 06 12:12:55 2014"
      },
      "message": "A major cleanup of the repository.\n\nRemove:\n\n* the OCaml implementation.\n\n* the simplified syntax test cases.\n\n* the dependency on expect from the Dart repository, use the unittest\n  package instead.\n\nRename: tests/ to test/\n"
    },
    {
      "commit": "5536b34ed24331e6d7ac1118c2cf71586bf0cf4d",
      "tree": "7ee9152d18c3a38ff69a3a63955a754d857c7fac",
      "parents": [
        "09845117a5b4b2d5d8f472835e20a9a3e63a00f9",
        "d9459e3c7b6657f1b27cede8a9fe79eacb6c1f8b"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Oct 06 08:59:51 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Oct 06 08:59:51 2014"
      },
      "message": "Merge pull request #64 from kmillikin/await-for\n\nAdd support for `await for`."
    },
    {
      "commit": "d9459e3c7b6657f1b27cede8a9fe79eacb6c1f8b",
      "tree": "7ee9152d18c3a38ff69a3a63955a754d857c7fac",
      "parents": [
        "5b06645e0be756ae061b31673b05e8648714e8c5"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Oct 03 10:55:51 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Oct 03 10:55:51 2014"
      },
      "message": "A more complete implementation of `await for`.\n\nAdd support for cancellation of the stream.  The stream with\nsubscription s is canceled as if the loop were surrounded by\n`try {...} finally { await s.cancel(); }`.\n"
    },
    {
      "commit": "5b06645e0be756ae061b31673b05e8648714e8c5",
      "tree": "2a19510c8874b25f1ce39157bde14fe7b84f804f",
      "parents": [
        "df69b2592606a213fe30315d217da5021f152f6c",
        "09845117a5b4b2d5d8f472835e20a9a3e63a00f9"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Oct 03 08:58:40 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Oct 03 08:58:40 2014"
      },
      "message": "Merge branch \u0027master\u0027 into await-for\n\nConflicts:\n\tlib/src/xform.dart\n"
    },
    {
      "commit": "09845117a5b4b2d5d8f472835e20a9a3e63a00f9",
      "tree": "6914a2fb0c320527628b642cf530b5e114035ee4",
      "parents": [
        "ae838b5976260d2f4c6eb2dde4e5fe497f1a3421",
        "fd0807887e212d7c5c13d10c0c204a5e180bd8db"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Oct 03 08:25:52 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Fri Oct 03 08:25:52 2014"
      },
      "message": "Merge pull request #65 from headinthebox/AwaitAnything\n\nAwait anything"
    },
    {
      "commit": "fd0807887e212d7c5c13d10c0c204a5e180bd8db",
      "tree": "0c3b42659dbcd3e9653aeb7c4e0c811fed9547ef",
      "parents": [
        "41ca7e0ba456013a1ea6f64554fb20ffb2977a2f"
      ],
      "author": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Fri Oct 03 08:09:15 2014"
      },
      "committer": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Fri Oct 03 08:09:15 2014"
      },
      "message": "Restore pubspec\n"
    },
    {
      "commit": "41ca7e0ba456013a1ea6f64554fb20ffb2977a2f",
      "tree": "72e804960056a51905b16d18dad56de9cbae5f57",
      "parents": [
        "dd842357eeac0b8fc2a82b832d741571bd7cfb8f"
      ],
      "author": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Fri Oct 03 08:05:50 2014"
      },
      "committer": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Fri Oct 03 08:05:50 2014"
      },
      "message": "Fixed test and pubspec\n"
    },
    {
      "commit": "dd842357eeac0b8fc2a82b832d741571bd7cfb8f",
      "tree": "9416a6b1a5b9cc76a03b6d54a25804fd9fafa62e",
      "parents": [
        "bc9808055bc5e6b79728a513e3bee2aa4a2e40bf"
      ],
      "author": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Thu Oct 02 11:37:38 2014"
      },
      "committer": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Thu Oct 02 11:37:38 2014"
      },
      "message": "Dotted Identifier\n\nFix as suggested by @kmillikin\n"
    },
    {
      "commit": "df69b2592606a213fe30315d217da5021f152f6c",
      "tree": "d0d0a1523e02b482d856164ebea50352605469b8",
      "parents": [
        "ae838b5976260d2f4c6eb2dde4e5fe497f1a3421"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Oct 02 10:42:50 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Oct 02 10:42:50 2014"
      },
      "message": "Add support for `await for`.\n\nWhen inside an asynchronous for loop, the translation keeps track of\nthe name of the current stream\u0027s controller.  It pauses and resumes\nthe stream around await expressions and nested asynchronous for loops.\n"
    },
    {
      "commit": "bc9808055bc5e6b79728a513e3bee2aa4a2e40bf",
      "tree": "eeb902f1cd9d1bbe0ee6e891417c5ad9ef6e7fae",
      "parents": [
        "5f230c06ffac4890641e2b68ff6f1775ec4dea92"
      ],
      "author": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Thu Oct 02 09:14:44 2014"
      },
      "committer": {
        "name": "headinthebox",
        "email": "emeijer@meijcrosoft.com",
        "time": "Thu Oct 02 09:14:44 2014"
      },
      "message": "Wrapping expression to be awaited into Future.value\n\nNot sure if using raw name in `make.identifier(\u0027Future.value’)` is OK.\nOtherwise, trivial change.\n"
    },
    {
      "commit": "ae838b5976260d2f4c6eb2dde4e5fe497f1a3421",
      "tree": "03675d4ecfd9c516bfb16137cabda4b10a5628ce",
      "parents": [
        "5f230c06ffac4890641e2b68ff6f1775ec4dea92",
        "ced69dd9cd9b089296a82f97d0d421c52112a61e"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Oct 02 07:52:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Oct 02 07:52:08 2014"
      },
      "message": "Merge pull request #61 from kmillikin/types\n\nPreserve types on local variable declarations."
    },
    {
      "commit": "ced69dd9cd9b089296a82f97d0d421c52112a61e",
      "tree": "c0d537063932eccce6d3c1eb7d7d903581fbbf0d",
      "parents": [
        "4cdcb1973ce59f99230df05fcc1ff3e0285fa3cf"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Oct 01 10:28:10 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Oct 01 10:28:10 2014"
      },
      "message": "Preserve types on local variable declarations.\n"
    },
    {
      "commit": "5f230c06ffac4890641e2b68ff6f1775ec4dea92",
      "tree": "c0383952dccc52f63cf7635765fe0e06ffc46747",
      "parents": [
        "b151ae5aeb8b825c528f46181d80430b2ee33a63",
        "7c6bc73ee487e3e6d111fb0cbccce9bd6d913a20"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Oct 01 09:31:53 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Oct 01 09:31:53 2014"
      },
      "message": "Merge pull request #60 from kmillikin/rethrow\n\nRethrow"
    },
    {
      "commit": "7c6bc73ee487e3e6d111fb0cbccce9bd6d913a20",
      "tree": "c0383952dccc52f63cf7635765fe0e06ffc46747",
      "parents": [
        "4cdcb1973ce59f99230df05fcc1ff3e0285fa3cf"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 30 11:03:14 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 30 11:03:14 2014"
      },
      "message": "Preserve stack traces for rethrow.\n"
    },
    {
      "commit": "4cdcb1973ce59f99230df05fcc1ff3e0285fa3cf",
      "tree": "6e0d2ad64213c093b70772553509b69139e449e5",
      "parents": [
        "b151ae5aeb8b825c528f46181d80430b2ee33a63"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 30 10:40:41 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 30 10:40:41 2014"
      },
      "message": "Support rethrow.\n"
    },
    {
      "commit": "b151ae5aeb8b825c528f46181d80430b2ee33a63",
      "tree": "c5e58bcf5cc500649f3456c8dac562fd2f7b2aff",
      "parents": [
        "8594b64792aff8ef427e0b757636089676b3d871",
        "f8927c00f200be458c463d0a33cdd519f65825d5"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 14:16:35 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 14:16:35 2014"
      },
      "message": "Merge pull request #58 from kmillikin/error-continuations\n\nHandle error continuations in a more sophisticated way."
    },
    {
      "commit": "f8927c00f200be458c463d0a33cdd519f65825d5",
      "tree": "c5e58bcf5cc500649f3456c8dac562fd2f7b2aff",
      "parents": [
        "8594b64792aff8ef427e0b757636089676b3d871"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 29 12:51:37 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 29 12:51:37 2014"
      },
      "message": "Handle error continuations in a more sophisticated way.\n\nBefore: they were simply a Dart expression denoting a two-argument\nfunction.  For finally error continuations, this created a\nbeta-redex (direct application of a function expression) when applied.\nMaking them higher-order functions, as an alternative, will eta-expand\nones that are already named.\n\nInstead: introduce a pair of classes, one for named error\ncontinuations and one for anonymous ones.  They have a pair of\nmethods, `reify` to get a dart expression representing the\ntwo-argument error function, and `apply` to get a dart expression\nrepresenting the function applied to a pair of given arguments.\n"
    },
    {
      "commit": "8594b64792aff8ef427e0b757636089676b3d871",
      "tree": "a8952ce597dcbd31446bdbd7cf9d837103a41017",
      "parents": [
        "e6c8ff552a0ed9b2d3373de34c15608a92bf872b",
        "1bc4d7f050e2650dd2af72819a11648d09d88545"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 09:01:18 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 09:01:18 2014"
      },
      "message": "Merge pull request #56 from kmillikin/back-to-the-completer\n\nBack to the completer"
    },
    {
      "commit": "e6c8ff552a0ed9b2d3373de34c15608a92bf872b",
      "tree": "eceb00ada7496d66cda70f2ea6c4f7eb3f60fabb",
      "parents": [
        "222ef6d2a5872fa85a1190196e314b2e65838ba5",
        "2b56c571075c921fc8ba2ee593e9109f3fb168d3"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 08:58:37 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 29 08:58:37 2014"
      },
      "message": "Merge pull request #57 from dart-lang/editor-cleanup\n\nRemove errors and some warnings to look nice in Dart Editor."
    },
    {
      "commit": "2b56c571075c921fc8ba2ee593e9109f3fb168d3",
      "tree": "eceb00ada7496d66cda70f2ea6c4f7eb3f60fabb",
      "parents": [
        "88a8c788fb05b59fa384c2ac045e71e3aff07b54"
      ],
      "author": {
        "name": "Steve Messick",
        "email": "steve.messick@gmail.com",
        "time": "Fri Sep 26 21:39:07 2014"
      },
      "committer": {
        "name": "Steve Messick",
        "email": "steve.messick@gmail.com",
        "time": "Fri Sep 26 21:39:07 2014"
      },
      "message": "Change http to hosted dependency.\n"
    },
    {
      "commit": "88a8c788fb05b59fa384c2ac045e71e3aff07b54",
      "tree": "5b648089cb2e7b8a1e26bf14ee8945119b740101",
      "parents": [
        "222ef6d2a5872fa85a1190196e314b2e65838ba5"
      ],
      "author": {
        "name": "Steve Messick",
        "email": "steve.messick@gmail.com",
        "time": "Fri Sep 26 18:36:21 2014"
      },
      "committer": {
        "name": "Steve Messick",
        "email": "steve.messick@gmail.com",
        "time": "Fri Sep 26 18:36:21 2014"
      },
      "message": "Remove errors and some warnings to look nice in Dart Editor.\n"
    },
    {
      "commit": "1bc4d7f050e2650dd2af72819a11648d09d88545",
      "tree": "27e37704d4a2d97d7460d72f9a068516158111dd",
      "parents": [
        "68c5d2585009bb062c5b68593d1371cc33b49720"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 26 11:34:02 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 26 11:34:02 2014"
      },
      "message": "Handle catch and finally blocks properly.\n\nThe catch and finally blocks (whether entered synchronously or\nasynchronously) are not called with an appropriate exception handler\nin place to catch exceptions thrown by synchronous code in the body.\npFix this by wrapping the catch and finally function bodies in\ntry/catch.\n"
    },
    {
      "commit": "68c5d2585009bb062c5b68593d1371cc33b49720",
      "tree": "d2fa4a58e7f09afbac70d5ccd81ca769fde5fca8",
      "parents": [
        "2974149c829964f28a5dbcd47bc6cccdc256fcae"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 26 11:04:02 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 26 11:04:02 2014"
      },
      "message": "Fix three bugs in the translation.\n\n1. When returning from the try or catch blocks of try/finally, a thunk\n   is passed to the finally block and applied in tail position with\n   respect to the block.  This thunk contained the evaluation of the\n   return value, violating the required evaluation order.\n\n2. The initially scheduled microtask was not wrapped in try/catch to\n   propagation errors to the completer.\n\n3. \u0027is\u0027 expressions were printed with \u0027as\u0027 by the pretty printer.\n"
    },
    {
      "commit": "2974149c829964f28a5dbcd47bc6cccdc256fcae",
      "tree": "f93ff30598d14e615c4a2c7ea7c9741121035bec",
      "parents": [
        "7ab643fbfbc4917dc6503cb7a1b12db5f204e7bf"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 25 13:09:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 25 14:18:45 2014"
      },
      "message": "All syntactic forms are supported.\n\nDoes not crash on the tests.\n"
    },
    {
      "commit": "7ab643fbfbc4917dc6503cb7a1b12db5f204e7bf",
      "tree": "19b9907b3816483a59ed1eb95acd6d0f8543045a",
      "parents": [
        "222ef6d2a5872fa85a1190196e314b2e65838ba5"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 24 14:30:34 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 24 14:30:34 2014"
      },
      "message": "Work in progress on the completer translation.\n\nBegin to get the completer translation on par with the other one.\n"
    },
    {
      "commit": "222ef6d2a5872fa85a1190196e314b2e65838ba5",
      "tree": "6c3f5d02c66c7ab84831227c84a8a21ddb7fabf6",
      "parents": [
        "93b0ac2d4b9bd929b28bd2502ade7c81d772b4e3",
        "1142cc4d39e0a1a7563dd457283a5d478122690d"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 14:45:20 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 14:45:20 2014"
      },
      "message": "Merge pull request #54 from dart-lang/bugfix\n\nA fix for a bug with return from finally."
    },
    {
      "commit": "1142cc4d39e0a1a7563dd457283a5d478122690d",
      "tree": "6c3f5d02c66c7ab84831227c84a8a21ddb7fabf6",
      "parents": [
        "93b0ac2d4b9bd929b28bd2502ade7c81d772b4e3"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 14:44:05 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 14:44:05 2014"
      },
      "message": "A fix for a bug with return from finally.\n\nThe return from finally was abstracted twice.\n"
    },
    {
      "commit": "93b0ac2d4b9bd929b28bd2502ade7c81d772b4e3",
      "tree": "842736cccd3707bf2f6c8e43a7de12d30d7cafe4",
      "parents": [
        "db59f680e24bae876848334eb621d0f7652ae822",
        "1cb5f0a0d1757a29057463d7dfc24f0f15fe68ed"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 13:01:21 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 13:01:21 2014"
      },
      "message": "Merge pull request #53 from dart-lang/break-chains\n\nHandle returns consistently."
    },
    {
      "commit": "1cb5f0a0d1757a29057463d7dfc24f0f15fe68ed",
      "tree": "842736cccd3707bf2f6c8e43a7de12d30d7cafe4",
      "parents": [
        "db59f680e24bae876848334eb621d0f7652ae822"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 12:46:50 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 12:46:50 2014"
      },
      "message": "Handle returns consistently.\n\nInside a loop or a try/catch, returns were not handled properly.  They\nnow have the side effect of emitting instructions, but return an\nexpression denoting the return value.  This needs to be handled\nproperly at sites that invoke the return continuation.\n"
    },
    {
      "commit": "db59f680e24bae876848334eb621d0f7652ae822",
      "tree": "a021e6bfd084d2d2a195d33ccf63852a30506feb",
      "parents": [
        "97d18023a6abdca66a5e8c0a0534263e951607bc",
        "2ff1de7317f4a33b090ace2f9341a6504c7ff0ba"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 08:37:06 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 22 08:37:06 2014"
      },
      "message": "Merge pull request #52 from kmillikin/break-chains\n\nBreak chains of futures arising from await in a loop."
    },
    {
      "commit": "2ff1de7317f4a33b090ace2f9341a6504c7ff0ba",
      "tree": "a021e6bfd084d2d2a195d33ccf63852a30506feb",
      "parents": [
        "37043095dcc91ca65af488fe8b67cddb5019b546"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 08:36:02 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 22 08:36:02 2014"
      },
      "message": "Incorporated review comments.\n"
    },
    {
      "commit": "37043095dcc91ca65af488fe8b67cddb5019b546",
      "tree": "aae6aa28bc9fc75a7f4f2ca4f8dd5482f91fb9d5",
      "parents": [
        "97d18023a6abdca66a5e8c0a0534263e951607bc"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 19 11:52:19 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 19 11:52:19 2014"
      },
      "message": "Break chains of futures arising from await in a loop.\n\nAwait inside a loop can create arbitrarily long chains of futures.\nBreak these at the point of the loop\u0027s continue function, but ignoring\nthe return value from continue and instead communicating completion\nvalues or errors via a Completer per loop.\n\nThis is awkward because calls to .then() from await inside a loop need\nto install an error handler to propagate errors to the completer.\n\nTwo important things change about the implementation:\n\n  * Return continuations previously had type `unit -\u003e unit`, now they\n    have type `expr -\u003e expr`.  Before they had the side effect of\n    emitting a sequence of statements that always ended with a\n    `return`.  Now we need to be able to wrap the subexpression of the\n    `return`, so they have the side effect of emitting a sequence of\n    statements (the same as before) and returning the subexpression of\n    the `return`.\n\n  * Break and continue labels previously were strings, because they\n    were always named functions.  Now we need to ability to wrap them\n    so that they generate code, so they have type `unit -\u003e unit`.\n"
    },
    {
      "commit": "97d18023a6abdca66a5e8c0a0534263e951607bc",
      "tree": "2159b9c963e18812d90c931d02dcc935b90b2fc7",
      "parents": [
        "d786afbef4ed5b1c02a93543e40158237c11c75f",
        "d3d1eb23e5892d1f2fe7089f71c2b49726075acd"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 18 12:55:42 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 18 12:55:42 2014"
      },
      "message": "Merge pull request #48 from kmillikin/trampoline\n\nTrampoline"
    },
    {
      "commit": "d3d1eb23e5892d1f2fe7089f71c2b49726075acd",
      "tree": "2159b9c963e18812d90c931d02dcc935b90b2fc7",
      "parents": [
        "62c2e922739a91fe60b0d9afb1210c6f7196ee14"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 13:31:47 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 13:31:47 2014"
      },
      "message": "Fix outdated comments.\n"
    },
    {
      "commit": "62c2e922739a91fe60b0d9afb1210c6f7196ee14",
      "tree": "bc881fb0b837b42d1477031c68b75f5182d0781a",
      "parents": [
        "6c5ef800adea51dd4fd52f0002858ddcde96c259"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 13:20:38 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 13:20:38 2014"
      },
      "message": "Fix a bug: loop exits do not exit the trampoline.\n\nThe exit call to break needs to clear the appropriate loop flag.\n"
    },
    {
      "commit": "6c5ef800adea51dd4fd52f0002858ddcde96c259",
      "tree": "201aac47abfbf8565161a5cb85efa05959b8416e",
      "parents": [
        "d786afbef4ed5b1c02a93543e40158237c11c75f"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 12:46:58 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 17 12:46:58 2014"
      },
      "message": "Change the loop trampoline to keep loops synchronous.\n\nIt was super cute to use the microtask queue as a trampoline, but also\nhorribly incorrect.  Instead, use an in-loop flag and a while-loop\ntrampoline per loop.\n\nThe flag is set when the code is nested inside a loop in some stack\nactivation and is on the stack andthe code should stay in the loop.\nIt is cleared when the loop is not on the stack (e.g., before entering\nthe loop, or immediately at the point of an await) or when the loop\nshould be exited (e.g., via return or break or continue targeting an\nouter label).\n"
    },
    {
      "commit": "d786afbef4ed5b1c02a93543e40158237c11c75f",
      "tree": "b1d8a159379e1b42129ac7e3ebcff77359768e9c",
      "parents": [
        "77383c17f8484c406d9f9128dc61670a4399f366",
        "f44387cc48c289a8c8e8283cc8971a74b2aa970d"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 15 10:19:44 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 15 10:19:44 2014"
      },
      "message": "Merge pull request #47 from kmillikin/factory\n\nWrap the analyzer\u0027s AstFactory class."
    },
    {
      "commit": "f44387cc48c289a8c8e8283cc8971a74b2aa970d",
      "tree": "b1d8a159379e1b42129ac7e3ebcff77359768e9c",
      "parents": [
        "644aa3fae351ce91f6d3923aa97fdb2c7b6b9ce1"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 15 10:18:20 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 15 10:18:20 2014"
      },
      "message": "Fix a bug where constructor names were omitted.\n\nWith the new AST factory functions, constructor names were omitted in\nsome cases.\n\nAlso, move the generation of names around so it matches the old code.\nIt\u0027s somewhat arbitrary, but this makes the diff between old and new\nconsistent.  That\u0027s obviously not a great reason going forward, but it\ndoesn\u0027t matter too much either.\n"
    },
    {
      "commit": "644aa3fae351ce91f6d3923aa97fdb2c7b6b9ce1",
      "tree": "ba2a82841bb52b5120694b00ad37d1272552b9d1",
      "parents": [
        "77383c17f8484c406d9f9128dc61670a4399f366"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 12 14:31:34 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 12 14:31:34 2014"
      },
      "message": "Wrap the analyzer\u0027s AstFactory class.\n\nProvide our own API for constructing AST nodes rather than using the\nanalyzer\u0027s AstFactory from testing/ast_factory.dart.  Under the hood\nit still uses the analyzer\u0027s AstFactory but it should be possible to\nprovide a direct implementation in terms of the AstNode constructors.\n"
    },
    {
      "commit": "77383c17f8484c406d9f9128dc61670a4399f366",
      "tree": "8a91a0650616e46f8e32512f0a4b213d07cc383f",
      "parents": [
        "b6ad46174fcaf6c25b368aaf9132393d863a9f1c",
        "f8b4a620aee829959112455b81701ce5be31d4af"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 10 08:20:35 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 10 08:20:35 2014"
      },
      "message": "Merge pull request #45 from kmillikin/bugfix\n\nFix a bug in the pretty printing of string interpolation."
    },
    {
      "commit": "f8b4a620aee829959112455b81701ce5be31d4af",
      "tree": "8a91a0650616e46f8e32512f0a4b213d07cc383f",
      "parents": [
        "7df70ba02c0bf1b6a0470a62f7d1c5a105778037"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Wed Sep 10 08:19:37 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Wed Sep 10 08:19:37 2014"
      },
      "message": "Remove redundant check in the code.\n"
    },
    {
      "commit": "7df70ba02c0bf1b6a0470a62f7d1c5a105778037",
      "tree": "fed0e873e804ef76e327714c32bd7873d23b74a3",
      "parents": [
        "b6ad46174fcaf6c25b368aaf9132393d863a9f1c"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Wed Sep 10 08:16:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Wed Sep 10 08:16:08 2014"
      },
      "message": "Fix a bug in the pretty printing of string interpolation.\n\nFor string interpolation expressions, the `$` was printed twice if there\nwere braces surrounding the expression.\n\nAlso add a special case for empty map and list literals to pretty print\nthem without a newline before the opening and closing bracket or brace.\n"
    },
    {
      "commit": "b6ad46174fcaf6c25b368aaf9132393d863a9f1c",
      "tree": "68df8c6ec6c820006c78f9b151705573dbd4f546",
      "parents": [
        "d6adcf11838c67da2aa0b162a2d721aee5522a1b",
        "c6f1dc96e55310994bd27de7bdb62daa7b5629b4"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 08 09:25:43 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 08 09:25:43 2014"
      },
      "message": "Merge pull request #43 from kmillikin/pretty-printer\n\nAdd a pretty printer for function bodies."
    },
    {
      "commit": "c6f1dc96e55310994bd27de7bdb62daa7b5629b4",
      "tree": "68df8c6ec6c820006c78f9b151705573dbd4f546",
      "parents": [
        "6a2a0b2a3ef66f9498542eade32529e89ba68fb7"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 08 09:25:20 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 08 09:25:20 2014"
      },
      "message": "Add a few missing recursive calls to the pretty printing visitor.\n\nAt two sites, we had buffer.write(x) instead of visit(x).  This will\nuse the analyzer\u0027s own toString() on x instead of the pretty printer.\n"
    },
    {
      "commit": "6a2a0b2a3ef66f9498542eade32529e89ba68fb7",
      "tree": "9568621a6ffdee74875d62b9a417488e0807e20a",
      "parents": [
        "528c9c02bdd6597985041c18845411198ec4abad"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 08 09:21:11 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 08 09:21:11 2014"
      },
      "message": "Use the new compilation strategy for the transformer.\n\nThe new compilation strategy is to only translate async bodies, and\ncopy the rest of the input file unchanged to the output.\n\nAlso, abstract common compilation code out of the transformer and\nstandalone command line program.\n"
    },
    {
      "commit": "528c9c02bdd6597985041c18845411198ec4abad",
      "tree": "918fa6c3f613519a4cd8cb8a19a832a3d78bf4d1",
      "parents": [
        "d6adcf11838c67da2aa0b162a2d721aee5522a1b"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 05 13:49:23 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Fri Sep 05 13:49:23 2014"
      },
      "message": "Add a pretty printer for function bodies.\n\nChange the translation strategy.  Instead of searching the compilation\nunit\u0027s AST at translation time for async functions, find them ahead of\ntime and add them to a list.\n\nPrint the output file by printing substrings of the original file\ncorresponding to untranslated code, and use the pretty printer to\nprint translated code.\n"
    },
    {
      "commit": "d6adcf11838c67da2aa0b162a2d721aee5522a1b",
      "tree": "253e398c3b6c054947ab999e4a37ea8cb6916a31",
      "parents": [
        "ff6a8670468f9f53ab7e0126b7f7e1409e23313b",
        "28981478fc0416e3e9e10f07dfb14c1720d1d357"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:31:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:31:08 2014"
      },
      "message": "Merge pull request #42 from kmillikin/remove-error-cont\n\nRemove error cont"
    },
    {
      "commit": "28981478fc0416e3e9e10f07dfb14c1720d1d357",
      "tree": "253e398c3b6c054947ab999e4a37ea8cb6916a31",
      "parents": [
        "3e64ea33e1297e0d635dbcb1243077bf8bcde9d3",
        "ff6a8670468f9f53ab7e0126b7f7e1409e23313b"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:30:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:30:08 2014"
      },
      "message": "Merge branch \u0027master\u0027 into remove-error-cont\n"
    },
    {
      "commit": "3e64ea33e1297e0d635dbcb1243077bf8bcde9d3",
      "tree": "253e398c3b6c054947ab999e4a37ea8cb6916a31",
      "parents": [
        "6804908f8cd017f3b4c3ba2027f85f43b622af97",
        "6228072d2a3fd87d6d4e8b147853c74486fdb581"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:28:30 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:28:30 2014"
      },
      "message": "Merge branch \u0027remove-error-cont\u0027 of https://github.com/kmillikin/async_await into remove-error-cont\n"
    },
    {
      "commit": "6804908f8cd017f3b4c3ba2027f85f43b622af97",
      "tree": "4ca14429a132ec5f81921708ee1f629f002910a8",
      "parents": [
        "8af7fbff17d0119771017dd9e21f4f3b423b524c"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:27:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Thu Sep 04 09:27:08 2014"
      },
      "message": "Remove failure continuations.\n\nThey are no longer necessary.  Try/catch establishes a catchError\nhandler for the future so await doesn\u0027t need one.\n"
    },
    {
      "commit": "ff6a8670468f9f53ab7e0126b7f7e1409e23313b",
      "tree": "fd8fa6301d9624fb6d22a6887ffbedbe517dcc1c",
      "parents": [
        "6228072d2a3fd87d6d4e8b147853c74486fdb581",
        "59ac5f930106768ba7f8e62115c3b88495e9a2e6"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:25:08 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:25:08 2014"
      },
      "message": "Merge pull request #41 from dart-lang/new-boilerplate\n\nNew boilerplate"
    },
    {
      "commit": "59ac5f930106768ba7f8e62115c3b88495e9a2e6",
      "tree": "cc7b2d3c3cd6bf2dc483c2df74c615dcd3fb66a5",
      "parents": [
        "4ee7270d58be8064c344d99379a13e9d3c3d33f8",
        "8af7fbff17d0119771017dd9e21f4f3b423b524c"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:23:18 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Sep 04 09:23:18 2014"
      },
      "message": "Merge pull request #39 from kmillikin/catch-handlers\n\nSupport stack trace parameters and `on T catch` clauses."
    },
    {
      "commit": "8af7fbff17d0119771017dd9e21f4f3b423b524c",
      "tree": "cc7b2d3c3cd6bf2dc483c2df74c615dcd3fb66a5",
      "parents": [
        "c5009fb9dc4c1c37a4fe137eb4df5ad7336b778c"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 14:23:34 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 14:23:34 2014"
      },
      "message": "Support stack trace parameters and `on T catch` clauses.\n\nSupport them by adding an extra argument to the catchError callback for\nstack trace parameters, and an extra argument to catchError itself for\n\u0027on T\u0027 clauses.\n"
    },
    {
      "commit": "6228072d2a3fd87d6d4e8b147853c74486fdb581",
      "tree": "0d438f28a528e2f7d59a4ff961758bacf037c310",
      "parents": [
        "1a6ef1fcf3666707baea23d633559a000d045863",
        "8b9d44b8ceb062de94fb27b43edadd1a6e5d3a90"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 13:27:35 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 13:27:35 2014"
      },
      "message": "Merge pull request #38 from kmillikin/license\n\nAdd Erik Meijer to AUTHORS."
    },
    {
      "commit": "8b9d44b8ceb062de94fb27b43edadd1a6e5d3a90",
      "tree": "0d438f28a528e2f7d59a4ff961758bacf037c310",
      "parents": [
        "1a6ef1fcf3666707baea23d633559a000d045863"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 13:26:43 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 13:26:43 2014"
      },
      "message": "Add Erik Meijer to AUTHORS.\n"
    },
    {
      "commit": "1a6ef1fcf3666707baea23d633559a000d045863",
      "tree": "2897953039622e5a4af4ef5c0f4dd6f73722d2ae",
      "parents": [
        "002f261f53dcfd492555758f6be4e407f0eb7160",
        "172f45fd885ac267deb472163bb3833f36a3b779"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 12:32:30 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 12:32:30 2014"
      },
      "message": "Merge pull request #37 from kmillikin/license\n\nAdd a LICENSE file and license headers."
    },
    {
      "commit": "172f45fd885ac267deb472163bb3833f36a3b779",
      "tree": "2897953039622e5a4af4ef5c0f4dd6f73722d2ae",
      "parents": [
        "002f261f53dcfd492555758f6be4e407f0eb7160"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 12:30:43 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 12:30:43 2014"
      },
      "message": "Add a LICENSE file and license headers.\n\nUse a BSD-style license.  Also, add AUTHORS and commit some test files\nthat were previously uncommitted.\n"
    },
    {
      "commit": "4ee7270d58be8064c344d99379a13e9d3c3d33f8",
      "tree": "178183c69930e2adb1139a613c9d14c43f726748",
      "parents": [
        "002f261f53dcfd492555758f6be4e407f0eb7160",
        "c5009fb9dc4c1c37a4fe137eb4df5ad7336b778c"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 11:59:56 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Wed Sep 03 11:59:56 2014"
      },
      "message": "Merge pull request #36 from kmillikin/boilerplate\n\nBoilerplate"
    },
    {
      "commit": "c5009fb9dc4c1c37a4fe137eb4df5ad7336b778c",
      "tree": "178183c69930e2adb1139a613c9d14c43f726748",
      "parents": [
        "f019009509d8b5dbcfc2f5baa20a2df8fcc06080"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 11:11:07 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Wed Sep 03 11:11:07 2014"
      },
      "message": "Fix bugs in the translation, verify against tests.\n"
    },
    {
      "commit": "f019009509d8b5dbcfc2f5baa20a2df8fcc06080",
      "tree": "77d6a600a03e59af302015db287e266a3052a1fa",
      "parents": [
        "002f261f53dcfd492555758f6be4e407f0eb7160"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 02 10:31:21 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 02 10:31:21 2014"
      },
      "message": "Change the async body boilerplate.\n\nPreviously: the boilerplate created a completer, scheduled a microtask\nto run the translated body, and returned the future of the completer.\nThe microtask used the completer to complete the future with a value or\nerror as appropriate.\n\nNow: the boilerplate creates and returns a Future directly via new\nFuture.microtask.  The future completes with a value by returning a\nvalue, and completes with an error by throwing an exception.\n"
    },
    {
      "commit": "002f261f53dcfd492555758f6be4e407f0eb7160",
      "tree": "0c7ab28bac5fc65c47efa3a9711b7a6fcb5488b3",
      "parents": [
        "d0e8c64888c20fc3cf154b8e30045817788af5fc",
        "993dd0c1066ac7d042ac91b3a8aa8cf18908f673"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Sep 02 07:12:09 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Tue Sep 02 07:12:09 2014"
      },
      "message": "Merge pull request #35 from kmillikin/master\n\nFix an error due to a shadowed identifier"
    },
    {
      "commit": "993dd0c1066ac7d042ac91b3a8aa8cf18908f673",
      "tree": "0c7ab28bac5fc65c47efa3a9711b7a6fcb5488b3",
      "parents": [
        "4b53813253cfd458d258daa5af1675b06a3f4b25"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 02 07:10:55 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Tue Sep 02 07:10:55 2014"
      },
      "message": "Fix an error due to a shadowed identifier.\n"
    },
    {
      "commit": "4b53813253cfd458d258daa5af1675b06a3f4b25",
      "tree": "9f544172cb3962845bfef5a206ab4522c05b153b",
      "parents": [
        "43bdacf9f4e680d1399655010f100301556829f8",
        "d0e8c64888c20fc3cf154b8e30045817788af5fc"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:38:10 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:38:10 2014"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027\n"
    },
    {
      "commit": "d0e8c64888c20fc3cf154b8e30045817788af5fc",
      "tree": "9f544172cb3962845bfef5a206ab4522c05b153b",
      "parents": [
        "dba22bab1dece8fd3511564fea28c8a32ea5d3e1",
        "c068efa9daca22f7d132a2f6e81853967592fc66"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:37:27 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:37:27 2014"
      },
      "message": "Merge pull request #34 from kmillikin/cascades\n\nSupport postfix expression."
    },
    {
      "commit": "43bdacf9f4e680d1399655010f100301556829f8",
      "tree": "6182c573d804cbb9d6b63dece7c2d8619d74a0e3",
      "parents": [
        "44aff668a30e49f687e3b1feec18f2fa81673c22",
        "dba22bab1dece8fd3511564fea28c8a32ea5d3e1"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:36:02 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:36:02 2014"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027\n"
    },
    {
      "commit": "c068efa9daca22f7d132a2f6e81853967592fc66",
      "tree": "cfc25e5640fb8676e5ce8865f7bc5f3ae60997ef",
      "parents": [
        "0b10402afc5d591a4cf94464cda6ea368212a3cf"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:34:13 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:34:13 2014"
      },
      "message": "Support postfix expression.\n\nAlso, fix a bug in variable declarations.  If there was no\nkeyword (i.e., there was a type but no `var`, `final`, or `const`)\nthen the keyword and type were both omitted.  This is fixed to emit\n`var` as a workaround, though the type should be emitted instead.\n"
    },
    {
      "commit": "dba22bab1dece8fd3511564fea28c8a32ea5d3e1",
      "tree": "6182c573d804cbb9d6b63dece7c2d8619d74a0e3",
      "parents": [
        "70d4b78eabbfdc79eef66b8a5fb943be0ac86d86",
        "0b10402afc5d591a4cf94464cda6ea368212a3cf"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:19:46 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:19:46 2014"
      },
      "message": "Merge pull request #31 from kmillikin/cascades\n\nCascades"
    },
    {
      "commit": "70d4b78eabbfdc79eef66b8a5fb943be0ac86d86",
      "tree": "2945423241adc381c8d424ef0d43a16a73fb0a6c",
      "parents": [
        "f1b3cdcd2a7348c81d57f064134f1d760b1a5f53",
        "7388db731d1e7400c9eb914d2982d14fcbfedc75"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:19:37 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:19:37 2014"
      },
      "message": "Merge pull request #29 from kmillikin/short-circuit\n\nShort circuit"
    },
    {
      "commit": "44aff668a30e49f687e3b1feec18f2fa81673c22",
      "tree": "9ec3fa8374115e0eaaf71d2167da7c5fc5bffea4",
      "parents": [
        "1e26bc9c3acf05548be7e1774d2d4fe12bea8f97",
        "f1b3cdcd2a7348c81d57f064134f1d760b1a5f53"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:17:43 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:17:43 2014"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027\n"
    },
    {
      "commit": "f1b3cdcd2a7348c81d57f064134f1d760b1a5f53",
      "tree": "9ec3fa8374115e0eaaf71d2167da7c5fc5bffea4",
      "parents": [
        "2690c26cc3e458811ba5b29253f3cc53730e912d",
        "6db8b4787810e5bfe0088ba4868490cf603197a9"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:17:11 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Mon Sep 01 15:17:11 2014"
      },
      "message": "Merge pull request #28 from kmillikin/continue\n\nAdd support for continue to a label."
    },
    {
      "commit": "0b10402afc5d591a4cf94464cda6ea368212a3cf",
      "tree": "c4759607f162d18258d1782b6ec7575fcfbd620f",
      "parents": [
        "1e26bc9c3acf05548be7e1774d2d4fe12bea8f97"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:15:09 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 15:15:09 2014"
      },
      "message": "Add support for cascades.\n\nMuch like declarations, if a cascade section immediately to the right\ncontains an await, all the accumulated cascades must be residualized.\n"
    },
    {
      "commit": "7388db731d1e7400c9eb914d2982d14fcbfedc75",
      "tree": "2945423241adc381c8d424ef0d43a16a73fb0a6c",
      "parents": [
        "1e26bc9c3acf05548be7e1774d2d4fe12bea8f97"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 13:16:54 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 13:16:54 2014"
      },
      "message": "Add support for the short-circuit logical operators \u0026\u0026 and ||.\n"
    },
    {
      "commit": "1e26bc9c3acf05548be7e1774d2d4fe12bea8f97",
      "tree": "9ec3fa8374115e0eaaf71d2167da7c5fc5bffea4",
      "parents": [
        "6db8b4787810e5bfe0088ba4868490cf603197a9",
        "2690c26cc3e458811ba5b29253f3cc53730e912d"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 12:36:50 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 12:36:50 2014"
      },
      "message": "Merge remote-tracking branch \u0027upstream/master\u0027\n"
    },
    {
      "commit": "6db8b4787810e5bfe0088ba4868490cf603197a9",
      "tree": "9ec3fa8374115e0eaaf71d2167da7c5fc5bffea4",
      "parents": [
        "4c1da7c100397d3aa159bd7a4aaa0d51d3c71b22"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 12:34:15 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@chromium.org",
        "time": "Mon Sep 01 12:34:15 2014"
      },
      "message": "Add support for continue to a label.\n\nAlso, move the handling of break targets for labeled loop switch\nstatements to the statements themselves instead of the labeled statement\nenclosing them.\n"
    },
    {
      "commit": "2690c26cc3e458811ba5b29253f3cc53730e912d",
      "tree": "01028f9aaa61d548344e0375bdcbf98e189b9f82",
      "parents": [
        "6881aae1172e41e636cf9ed3a47cdd9ee36c8dc9",
        "4c1da7c100397d3aa159bd7a4aaa0d51d3c71b22"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 17:44:36 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 17:44:36 2014"
      },
      "message": "Merge pull request #24 from kmillikin/master\n\nUse analyzer version \u003e\u003d 0.22.4."
    },
    {
      "commit": "4c1da7c100397d3aa159bd7a4aaa0d51d3c71b22",
      "tree": "01028f9aaa61d548344e0375bdcbf98e189b9f82",
      "parents": [
        "6881aae1172e41e636cf9ed3a47cdd9ee36c8dc9"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Thu Aug 28 17:44:23 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Thu Aug 28 17:44:23 2014"
      },
      "message": "Use analyzer version \u003e\u003d 0.22.4.\n"
    },
    {
      "commit": "6881aae1172e41e636cf9ed3a47cdd9ee36c8dc9",
      "tree": "173d393d9b2b88485ec87bee0d204757db8065dd",
      "parents": [
        "29539b5b1357feb4100ff7704f73d039306d1688",
        "fe51f9d0ff3c02c93f227a53b18c4ab75c226653"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 17:38:04 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 17:38:04 2014"
      },
      "message": "Merge pull request #23 from kmillikin/function-expressions\n\nAdd support for local function declarations and anonymous async function..."
    },
    {
      "commit": "fe51f9d0ff3c02c93f227a53b18c4ab75c226653",
      "tree": "173d393d9b2b88485ec87bee0d204757db8065dd",
      "parents": [
        "29539b5b1357feb4100ff7704f73d039306d1688"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Thu Aug 28 17:33:05 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@kmillikin-macbookpro.roam.corp.google.com",
        "time": "Thu Aug 28 17:33:35 2014"
      },
      "message": "Add support for local function declarations and anonymous async functions.\n"
    },
    {
      "commit": "29539b5b1357feb4100ff7704f73d039306d1688",
      "tree": "9f475642cf82bbd001bc476c665ecc2928738262",
      "parents": [
        "c4790375810538749b8f6a1c0eeb1a34904f0b08",
        "872064f66cddd510458c8768402dcd0edec928fb"
      ],
      "author": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 00:33:35 2014"
      },
      "committer": {
        "name": "Kevin Millikin",
        "email": "kmillikin@gmail.com",
        "time": "Thu Aug 28 00:33:35 2014"
      },
      "message": "Merge pull request #22 from kmillikin/adjacent-strings\n\nSupport adjacent strings."
    }
  ],
  "next": "872064f66cddd510458c8768402dcd0edec928fb"
}
