dartfmt
diff --git a/lib/parser.dart b/lib/parser.dart
index 0575b3d..546061f 100644
--- a/lib/parser.dart
+++ b/lib/parser.dart
@@ -55,8 +55,11 @@
 /// [Node.sourceSpan] property will be `null`. When using [generateSpans] you can
 /// additionally pass [sourceUrl] to indicate where the [input] was extracted
 /// from.
-DocumentFragment parseFragment(input, {String container: "div", String encoding,
-    bool generateSpans: false, String sourceUrl}) {
+DocumentFragment parseFragment(input,
+    {String container: "div",
+    String encoding,
+    bool generateSpans: false,
+    String sourceUrl}) {
   var p = new HtmlParser(input,
       encoding: encoding, generateSpans: generateSpans, sourceUrl: sourceUrl);
   return p.parseFragment(container);
@@ -138,9 +141,14 @@
   /// automatic conversion of element and attribute names to lower case. Note
   /// that standard way to parse HTML is to lowercase, which is what the browser
   /// DOM will do if you request [Node.outerHTML], for example.
-  HtmlParser(input, {String encoding, bool parseMeta: true,
-      bool lowercaseElementName: true, bool lowercaseAttrName: true,
-      this.strict: false, bool generateSpans: false, String sourceUrl,
+  HtmlParser(input,
+      {String encoding,
+      bool parseMeta: true,
+      bool lowercaseElementName: true,
+      bool lowercaseAttrName: true,
+      this.strict: false,
+      bool generateSpans: false,
+      String sourceUrl,
       TreeBuilder tree})
       : generateSpans = generateSpans,
         tree = tree != null ? tree : new TreeBuilder(true),
@@ -345,9 +353,8 @@
 
       if (token is StartTagToken) {
         if (token.selfClosing && !token.selfClosingAcknowledged) {
-          parseError(token.span, "non-void-element-with-trailing-solidus", {
-            "name": token.name
-          });
+          parseError(token.span, "non-void-element-with-trailing-solidus",
+              {"name": token.name});
         }
       }
     }
@@ -696,86 +703,88 @@
       publicId = asciiUpper2Lower(publicId);
     }
 
-    if (!correct || token.name != "html" || startsWithAny(publicId, const [
-      "+//silmaril//dtd html pro v0r11 19970101//",
-      "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
-      "-//as//dtd html 3.0 aswedit + extensions//",
-      "-//ietf//dtd html 2.0 level 1//",
-      "-//ietf//dtd html 2.0 level 2//",
-      "-//ietf//dtd html 2.0 strict level 1//",
-      "-//ietf//dtd html 2.0 strict level 2//",
-      "-//ietf//dtd html 2.0 strict//",
-      "-//ietf//dtd html 2.0//",
-      "-//ietf//dtd html 2.1e//",
-      "-//ietf//dtd html 3.0//",
-      "-//ietf//dtd html 3.2 final//",
-      "-//ietf//dtd html 3.2//",
-      "-//ietf//dtd html 3//",
-      "-//ietf//dtd html level 0//",
-      "-//ietf//dtd html level 1//",
-      "-//ietf//dtd html level 2//",
-      "-//ietf//dtd html level 3//",
-      "-//ietf//dtd html strict level 0//",
-      "-//ietf//dtd html strict level 1//",
-      "-//ietf//dtd html strict level 2//",
-      "-//ietf//dtd html strict level 3//",
-      "-//ietf//dtd html strict//",
-      "-//ietf//dtd html//",
-      "-//metrius//dtd metrius presentational//",
-      "-//microsoft//dtd internet explorer 2.0 html strict//",
-      "-//microsoft//dtd internet explorer 2.0 html//",
-      "-//microsoft//dtd internet explorer 2.0 tables//",
-      "-//microsoft//dtd internet explorer 3.0 html strict//",
-      "-//microsoft//dtd internet explorer 3.0 html//",
-      "-//microsoft//dtd internet explorer 3.0 tables//",
-      "-//netscape comm. corp.//dtd html//",
-      "-//netscape comm. corp.//dtd strict html//",
-      "-//o'reilly and associates//dtd html 2.0//",
-      "-//o'reilly and associates//dtd html extended 1.0//",
-      "-//o'reilly and associates//dtd html extended relaxed 1.0//",
-      "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
-      "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
-      "-//spyglass//dtd html 2.0 extended//",
-      "-//sq//dtd html 2.0 hotmetal + extensions//",
-      "-//sun microsystems corp.//dtd hotjava html//",
-      "-//sun microsystems corp.//dtd hotjava strict html//",
-      "-//w3c//dtd html 3 1995-03-24//",
-      "-//w3c//dtd html 3.2 draft//",
-      "-//w3c//dtd html 3.2 final//",
-      "-//w3c//dtd html 3.2//",
-      "-//w3c//dtd html 3.2s draft//",
-      "-//w3c//dtd html 4.0 frameset//",
-      "-//w3c//dtd html 4.0 transitional//",
-      "-//w3c//dtd html experimental 19960712//",
-      "-//w3c//dtd html experimental 970421//",
-      "-//w3c//dtd w3 html//",
-      "-//w3o//dtd w3 html 3.0//",
-      "-//webtechs//dtd mozilla html 2.0//",
-      "-//webtechs//dtd mozilla html//"
-    ]) ||
-        const [
-      "-//w3o//dtd w3 html strict 3.0//en//",
-      "-/w3c/dtd html 4.0 transitional/en",
-      "html"
-    ].contains(publicId) ||
+    if (!correct ||
+        token.name != "html" ||
         startsWithAny(publicId, const [
-      "-//w3c//dtd html 4.01 frameset//",
-      "-//w3c//dtd html 4.01 transitional//"
-    ]) &&
+          "+//silmaril//dtd html pro v0r11 19970101//",
+          "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
+          "-//as//dtd html 3.0 aswedit + extensions//",
+          "-//ietf//dtd html 2.0 level 1//",
+          "-//ietf//dtd html 2.0 level 2//",
+          "-//ietf//dtd html 2.0 strict level 1//",
+          "-//ietf//dtd html 2.0 strict level 2//",
+          "-//ietf//dtd html 2.0 strict//",
+          "-//ietf//dtd html 2.0//",
+          "-//ietf//dtd html 2.1e//",
+          "-//ietf//dtd html 3.0//",
+          "-//ietf//dtd html 3.2 final//",
+          "-//ietf//dtd html 3.2//",
+          "-//ietf//dtd html 3//",
+          "-//ietf//dtd html level 0//",
+          "-//ietf//dtd html level 1//",
+          "-//ietf//dtd html level 2//",
+          "-//ietf//dtd html level 3//",
+          "-//ietf//dtd html strict level 0//",
+          "-//ietf//dtd html strict level 1//",
+          "-//ietf//dtd html strict level 2//",
+          "-//ietf//dtd html strict level 3//",
+          "-//ietf//dtd html strict//",
+          "-//ietf//dtd html//",
+          "-//metrius//dtd metrius presentational//",
+          "-//microsoft//dtd internet explorer 2.0 html strict//",
+          "-//microsoft//dtd internet explorer 2.0 html//",
+          "-//microsoft//dtd internet explorer 2.0 tables//",
+          "-//microsoft//dtd internet explorer 3.0 html strict//",
+          "-//microsoft//dtd internet explorer 3.0 html//",
+          "-//microsoft//dtd internet explorer 3.0 tables//",
+          "-//netscape comm. corp.//dtd html//",
+          "-//netscape comm. corp.//dtd strict html//",
+          "-//o'reilly and associates//dtd html 2.0//",
+          "-//o'reilly and associates//dtd html extended 1.0//",
+          "-//o'reilly and associates//dtd html extended relaxed 1.0//",
+          "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
+          "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
+          "-//spyglass//dtd html 2.0 extended//",
+          "-//sq//dtd html 2.0 hotmetal + extensions//",
+          "-//sun microsystems corp.//dtd hotjava html//",
+          "-//sun microsystems corp.//dtd hotjava strict html//",
+          "-//w3c//dtd html 3 1995-03-24//",
+          "-//w3c//dtd html 3.2 draft//",
+          "-//w3c//dtd html 3.2 final//",
+          "-//w3c//dtd html 3.2//",
+          "-//w3c//dtd html 3.2s draft//",
+          "-//w3c//dtd html 4.0 frameset//",
+          "-//w3c//dtd html 4.0 transitional//",
+          "-//w3c//dtd html experimental 19960712//",
+          "-//w3c//dtd html experimental 970421//",
+          "-//w3c//dtd w3 html//",
+          "-//w3o//dtd w3 html 3.0//",
+          "-//webtechs//dtd mozilla html 2.0//",
+          "-//webtechs//dtd mozilla html//"
+        ]) ||
+        const [
+          "-//w3o//dtd w3 html strict 3.0//en//",
+          "-/w3c/dtd html 4.0 transitional/en",
+          "html"
+        ].contains(publicId) ||
+        startsWithAny(publicId, const [
+              "-//w3c//dtd html 4.01 frameset//",
+              "-//w3c//dtd html 4.01 transitional//"
+            ]) &&
             systemId == null ||
         systemId != null &&
             systemId.toLowerCase() ==
                 "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd") {
       parser.compatMode = "quirks";
     } else if (startsWithAny(publicId, const [
-      "-//w3c//dtd xhtml 1.0 frameset//",
-      "-//w3c//dtd xhtml 1.0 transitional//"
-    ]) ||
+          "-//w3c//dtd xhtml 1.0 frameset//",
+          "-//w3c//dtd xhtml 1.0 transitional//"
+        ]) ||
         startsWithAny(publicId, const [
-      "-//w3c//dtd html 4.01 frameset//",
-      "-//w3c//dtd html 4.01 transitional//"
-    ]) &&
-        systemId != null) {
+              "-//w3c//dtd html 4.01 frameset//",
+              "-//w3c//dtd html 4.01 transitional//"
+            ]) &&
+            systemId != null) {
       parser.compatMode = "limited quirks";
     }
     parser.phase = parser._beforeHtmlPhase;
@@ -819,8 +828,8 @@
 
   // helper methods
   void insertHtmlElement() {
-    tree.insertRoot(new StartTagToken("html",
-        data: new LinkedHashMap<dynamic, String>()));
+    tree.insertRoot(
+        new StartTagToken("html", data: new LinkedHashMap<dynamic, String>()));
     parser.phase = parser._beforeHeadPhase;
   }
 
@@ -897,8 +906,8 @@
   }
 
   bool processEOF() {
-    startTagHead(new StartTagToken("head",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagHead(
+        new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
     return true;
   }
 
@@ -907,8 +916,8 @@
   }
 
   Token processCharacters(CharactersToken token) {
-    startTagHead(new StartTagToken("head",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagHead(
+        new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
     return token;
   }
 
@@ -923,14 +932,14 @@
   }
 
   Token startTagOther(StartTagToken token) {
-    startTagHead(new StartTagToken("head",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagHead(
+        new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
     return token;
   }
 
   Token endTagImplyHead(EndTagToken token) {
-    startTagHead(new StartTagToken("head",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagHead(
+        new StartTagToken("head", data: new LinkedHashMap<dynamic, String>()));
     return token;
   }
 
@@ -1152,9 +1161,8 @@
   }
 
   void startTagFromHead(StartTagToken token) {
-    parser.parseError(token.span, "unexpected-start-tag-out-of-my-head", {
-      "name": token.name
-    });
+    parser.parseError(token.span, "unexpected-start-tag-out-of-my-head",
+        {"name": token.name});
     tree.openElements.add(tree.headPointer);
     parser._inHeadPhase.processStartTag(token);
     for (var node in tree.openElements.reversed) {
@@ -1184,8 +1192,8 @@
   }
 
   void anythingElse() {
-    tree.insertElement(new StartTagToken("body",
-        data: new LinkedHashMap<dynamic, String>()));
+    tree.insertElement(
+        new StartTagToken("body", data: new LinkedHashMap<dynamic, String>()));
     parser.phase = parser._inBodyPhase;
     parser.framesetOK = true;
   }
@@ -1661,8 +1669,8 @@
       endTagP(new EndTagToken("p"));
     }
     if (headingElements.contains(tree.openElements.last.localName)) {
-      parser.parseError(
-          token.span, "unexpected-start-tag", {"name": token.name});
+      parser
+          .parseError(token.span, "unexpected-start-tag", {"name": token.name});
       tree.openElements.removeLast();
     }
     tree.insertElement(token);
@@ -1671,10 +1679,8 @@
   void startTagA(StartTagToken token) {
     var afeAElement = tree.elementInActiveFormattingElements("a");
     if (afeAElement != null) {
-      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
-        "startName": "a",
-        "endName": "a"
-      });
+      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+          {"startName": "a", "endName": "a"});
       endTagFormatting(new EndTagToken("a"));
       tree.openElements.remove(afeAElement);
       tree.activeFormattingElements.remove(afeAElement);
@@ -1691,10 +1697,8 @@
   void startTagNobr(StartTagToken token) {
     tree.reconstructActiveFormattingElements();
     if (tree.elementInScope("nobr")) {
-      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
-        "startName": "nobr",
-        "endName": "nobr"
-      });
+      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+          {"startName": "nobr", "endName": "nobr"});
       processEndTag(new EndTagToken("nobr"));
       // XXX Need tests that trigger the following
       tree.reconstructActiveFormattingElements();
@@ -1704,10 +1708,8 @@
 
   Token startTagButton(StartTagToken token) {
     if (tree.elementInScope("button")) {
-      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
-        "startName": "button",
-        "endName": "button"
-      });
+      parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+          {"startName": "button", "endName": "button"});
       processEndTag(new EndTagToken("button"));
       return token;
     } else {
@@ -1780,10 +1782,8 @@
 
   void startTagImage(StartTagToken token) {
     // No really...
-    parser.parseError(token.span, "unexpected-start-tag-treated-as", {
-      "originalName": "image",
-      "newName": "img"
-    });
+    parser.parseError(token.span, "unexpected-start-tag-treated-as",
+        {"originalName": "image", "newName": "img"});
     processStartTag(new StartTagToken("img",
         data: token.data, selfClosing: token.selfClosing));
   }
@@ -1799,10 +1799,10 @@
       formAttrs["action"] = dataAction;
     }
     processStartTag(new StartTagToken("form", data: formAttrs));
-    processStartTag(new StartTagToken("hr",
-        data: new LinkedHashMap<dynamic, String>()));
-    processStartTag(new StartTagToken("label",
-        data: new LinkedHashMap<dynamic, String>()));
+    processStartTag(
+        new StartTagToken("hr", data: new LinkedHashMap<dynamic, String>()));
+    processStartTag(
+        new StartTagToken("label", data: new LinkedHashMap<dynamic, String>()));
     // XXX Localization ...
     var prompt = token.data["prompt"];
     if (prompt == null) {
@@ -1813,11 +1813,11 @@
     attributes.remove('action');
     attributes.remove('prompt');
     attributes["name"] = "isindex";
-    processStartTag(new StartTagToken(
-        "input", data: attributes, selfClosing: token.selfClosing));
+    processStartTag(new StartTagToken("input",
+        data: attributes, selfClosing: token.selfClosing));
     processEndTag(new EndTagToken("label"));
-    processStartTag(new StartTagToken("hr",
-        data: new LinkedHashMap<dynamic, String>()));
+    processStartTag(
+        new StartTagToken("hr", data: new LinkedHashMap<dynamic, String>()));
     processEndTag(new EndTagToken("form"));
   }
 
@@ -1920,8 +1920,8 @@
 
   void endTagP(EndTagToken token) {
     if (!tree.elementInScope("p", variant: "button")) {
-      startTagCloseP(new StartTagToken("p",
-          data: new LinkedHashMap<dynamic, String>()));
+      startTagCloseP(
+          new StartTagToken("p", data: new LinkedHashMap<dynamic, String>()));
       parser.parseError(token.span, "unexpected-end-tag", {"name": "p"});
       endTagP(new EndTagToken("p"));
     } else {
@@ -1961,10 +1961,8 @@
             continue;
         }
         // Not sure this is the correct name for the parse error
-        parser.parseError(token.span, "expected-one-end-tag-but-got-another", {
-          "gotName": "body",
-          "expectedName": node.localName
-        });
+        parser.parseError(token.span, "expected-one-end-tag-but-got-another",
+            {"gotName": "body", "expectedName": node.localName});
         break;
       }
     }
@@ -2025,8 +2023,8 @@
     } else {
       tree.generateImpliedEndTags(token.name);
       if (tree.openElements.last.localName != token.name) {
-        parser.parseError(
-            token.span, "end-tag-too-early", {"name": token.name});
+        parser
+            .parseError(token.span, "end-tag-too-early", {"name": token.name});
       }
       popOpenElementsUntil(token);
     }
@@ -2175,13 +2173,8 @@
         lastNode.parentNode.nodes.remove(lastNode);
       }
 
-      if (const [
-        "table",
-        "tbody",
-        "tfoot",
-        "thead",
-        "tr"
-      ].contains(commonAncestor.localName)) {
+      if (const ["table", "tbody", "tfoot", "thead", "tr"]
+          .contains(commonAncestor.localName)) {
         var nodePos = tree.getTableMisnestedNodePosition();
         nodePos[0].insertBefore(lastNode, nodePos[1]);
       } else {
@@ -2199,13 +2192,13 @@
 
       // Step 11
       tree.activeFormattingElements.remove(formattingElement);
-      tree.activeFormattingElements.insert(
-          min(bookmark, tree.activeFormattingElements.length), clone);
+      tree.activeFormattingElements
+          .insert(min(bookmark, tree.activeFormattingElements.length), clone);
 
       // Step 12
       tree.openElements.remove(formattingElement);
-      tree.openElements.insert(
-          tree.openElements.indexOf(furthestBlock) + 1, clone);
+      tree.openElements
+          .insert(tree.openElements.indexOf(furthestBlock) + 1, clone);
     }
   }
 
@@ -2223,13 +2216,11 @@
   }
 
   void endTagBr(EndTagToken token) {
-    parser.parseError(token.span, "unexpected-end-tag-treated-as", {
-      "originalName": "br",
-      "newName": "br element"
-    });
+    parser.parseError(token.span, "unexpected-end-tag-treated-as",
+        {"originalName": "br", "newName": "br element"});
     tree.reconstructActiveFormattingElements();
-    tree.insertElement(new StartTagToken("br",
-        data: new LinkedHashMap<dynamic, String>()));
+    tree.insertElement(
+        new StartTagToken("br", data: new LinkedHashMap<dynamic, String>()));
     tree.openElements.removeLast();
   }
 
@@ -2439,16 +2430,14 @@
   }
 
   Token startTagImplyTbody(StartTagToken token) {
-    startTagRowGroup(new StartTagToken("tbody",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagRowGroup(
+        new StartTagToken("tbody", data: new LinkedHashMap<dynamic, String>()));
     return token;
   }
 
   Token startTagTable(StartTagToken token) {
-    parser.parseError(token.span, "unexpected-start-tag-implies-end-tag", {
-      "startName": "table",
-      "endName": "table"
-    });
+    parser.parseError(token.span, "unexpected-start-tag-implies-end-tag",
+        {"startName": "table", "endName": "table"});
     parser.phase.processEndTag(new EndTagToken("table"));
     if (!parser.innerHTMLMode) {
       return token;
@@ -2481,9 +2470,8 @@
   }
 
   void startTagOther(StartTagToken token) {
-    parser.parseError(token.span, "unexpected-start-tag-implies-table-voodoo", {
-      "name": token.name
-    });
+    parser.parseError(token.span, "unexpected-start-tag-implies-table-voodoo",
+        {"name": token.name});
     // Do the table magic!
     tree.insertFromTable = true;
     parser._inBodyPhase.processStartTag(token);
@@ -2495,10 +2483,8 @@
       tree.generateImpliedEndTags();
       var last = tree.openElements.last;
       if (last.localName != "table") {
-        parser.parseError(token.span, "end-tag-too-early-named", {
-          "gotName": "table",
-          "expectedName": last.localName
-        });
+        parser.parseError(token.span, "end-tag-too-early-named",
+            {"gotName": "table", "expectedName": last.localName});
       }
       while (tree.openElements.last.localName != "table") {
         tree.openElements.removeLast();
@@ -2518,9 +2504,8 @@
   }
 
   void endTagOther(EndTagToken token) {
-    parser.parseError(token.span, "unexpected-end-tag-implies-table-voodoo", {
-      "name": token.name
-    });
+    parser.parseError(token.span, "unexpected-end-tag-implies-table-voodoo",
+        {"name": token.name});
     // Do the table magic!
     tree.insertFromTable = true;
     parser._inBodyPhase.processEndTag(token);
@@ -2883,8 +2868,8 @@
   Token startTagTableCell(StartTagToken token) {
     parser.parseError(
         token.span, "unexpected-cell-in-table-body", {"name": token.name});
-    startTagTr(new StartTagToken("tr",
-        data: new LinkedHashMap<dynamic, String>()));
+    startTagTr(
+        new StartTagToken("tr", data: new LinkedHashMap<dynamic, String>()));
     return token;
   }
 
@@ -2988,10 +2973,10 @@
       var last = tree.openElements.last;
       if (last.localName == "tr" || last.localName == "html") break;
 
-      parser.parseError(last.sourceSpan,
-          "unexpected-implied-end-tag-in-table-row", {
-        "name": tree.openElements.last.localName
-      });
+      parser.parseError(
+          last.sourceSpan,
+          "unexpected-implied-end-tag-in-table-row",
+          {"name": tree.openElements.last.localName});
       tree.openElements.removeLast();
     }
   }
@@ -3391,10 +3376,10 @@
   }
 
   Token startTagTable(StartTagToken token) {
-    parser.parseError(token.span,
-        "unexpected-table-element-start-tag-in-select-in-table", {
-      "name": token.name
-    });
+    parser.parseError(
+        token.span,
+        "unexpected-table-element-start-tag-in-select-in-table",
+        {"name": token.name});
     endTagOther(new EndTagToken("select"));
     return token;
   }
@@ -3404,10 +3389,10 @@
   }
 
   Token endTagTable(EndTagToken token) {
-    parser.parseError(token.span,
-        "unexpected-table-element-end-tag-in-select-in-table", {
-      "name": token.name
-    });
+    parser.parseError(
+        token.span,
+        "unexpected-table-element-end-tag-in-select-in-table",
+        {"name": token.name});
     if (tree.elementInScope(token.name, variant: "table")) {
       endTagOther(new EndTagToken("select"));
       return token;
@@ -3789,9 +3774,8 @@
   }
 
   void startTagOther(StartTagToken token) {
-    parser.parseError(token.span, "unexpected-start-tag-after-frameset", {
-      "name": token.name
-    });
+    parser.parseError(token.span, "unexpected-start-tag-after-frameset",
+        {"name": token.name});
   }
 
   void endTagHtml(EndTagToken token) {
diff --git a/lib/src/char_encodings.dart b/lib/src/char_encodings.dart
index 5ddf727..56680bd 100644
--- a/lib/src/char_encodings.dart
+++ b/lib/src/char_encodings.dart
@@ -21,7 +21,8 @@
 /// Decodes the [bytes] with the provided [encoding] and returns an iterable for
 /// the codepoints. Supports the major unicode encodings as well as ascii and
 /// and windows-1252 encodings.
-Iterable<int> decodeBytes(String encoding, List<int> bytes, [int offset = 0,
+Iterable<int> decodeBytes(String encoding, List<int> bytes,
+    [int offset = 0,
     int length,
     int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
   if (length == null) length = bytes.length;
@@ -99,7 +100,8 @@
 /// needed. Set the [replacementCharacter] to null to throw an [ArgumentError]
 /// rather than replace the bad value.
 IterableWindows1252Decoder decodeWindows1252AsIterable(List<int> bytes,
-    [int offset = 0, int length,
+    [int offset = 0,
+    int length,
     int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
   return new IterableWindows1252Decoder(
       bytes, offset, length, replacementCodepoint);
@@ -114,7 +116,8 @@
   final int length;
   final int replacementCodepoint;
 
-  IterableWindows1252Decoder(List<int> this.bytes, [int this.offset = 0,
+  IterableWindows1252Decoder(List<int> this.bytes,
+      [int this.offset = 0,
       int this.length = null,
       int this.replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]);
 
@@ -134,7 +137,9 @@
   int _offset;
   final int _length;
 
-  Windows1252Decoder(List<int> bytes, [int offset = 0, int length,
+  Windows1252Decoder(List<int> bytes,
+      [int offset = 0,
+      int length,
       this.replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT])
       : _bytes = bytes,
         _offset = offset - 1,
diff --git a/lib/src/constants.dart b/lib/src/constants.dart
index e85e43a..9f4878f 100644
--- a/lib/src/constants.dart
+++ b/lib/src/constants.dart
@@ -514,17 +514,27 @@
 ];
 
 const Map<String, List<String>> booleanAttributes = const {
-  "": const ["irrelevant",],
-  "style": const ["scoped",],
-  "img": const ["ismap",],
+  "": const [
+    "irrelevant",
+  ],
+  "style": const [
+    "scoped",
+  ],
+  "img": const [
+    "ismap",
+  ],
   "audio": const ["autoplay", "controls"],
   "video": const ["autoplay", "controls"],
   "script": const ["defer", "async"],
-  "details": const ["open",],
+  "details": const [
+    "open",
+  ],
   "datagrid": const ["multiple", "disabled"],
   "command": const ["hidden", "disabled", "checked", "default"],
   "hr": const ["noshade"],
-  "men": const ["autosubmit",],
+  "men": const [
+    "autosubmit",
+  ],
   "fieldset": const ["disabled", "readonly"],
   "option": const ["disabled", "readonly", "selected"],
   "optgroup": const ["disabled", "readonly"],
diff --git a/lib/src/encoding_parser.dart b/lib/src/encoding_parser.dart
index 9da260b..21d6783 100644
--- a/lib/src/encoding_parser.dart
+++ b/lib/src/encoding_parser.dart
@@ -141,12 +141,12 @@
 
   String getEncoding() {
     final methodDispatch = [
-        new _DispatchEntry("<!--", handleComment),
-        new _DispatchEntry("<meta", handleMeta),
-        new _DispatchEntry("</", handlePossibleEndTag),
-        new _DispatchEntry("<!", handleOther),
-        new _DispatchEntry("<?", handleOther),
-        new _DispatchEntry("<", handlePossibleStartTag),
+      new _DispatchEntry("<!--", handleComment),
+      new _DispatchEntry("<meta", handleMeta),
+      new _DispatchEntry("</", handlePossibleEndTag),
+      new _DispatchEntry("<!", handleOther),
+      new _DispatchEntry("<?", handleOther),
+      new _DispatchEntry("<", handlePossibleStartTag),
     ];
 
     try {
diff --git a/lib/src/inputstream.dart b/lib/src/inputstream.dart
index cb40bc9..849ed93 100644
--- a/lib/src/inputstream.dart
+++ b/lib/src/inputstream.dart
@@ -68,8 +68,11 @@
   /// element)
   ///
   /// [parseMeta] - Look for a <meta> element containing encoding information
-  HtmlInputStream(source, [String encoding, bool parseMeta = true,
-      this.generateSpans = false, this.sourceUrl])
+  HtmlInputStream(source,
+      [String encoding,
+      bool parseMeta = true,
+      this.generateSpans = false,
+      this.sourceUrl])
       : charEncodingName = codecName(encoding) {
     if (source is String) {
       _rawChars = toCodepoints(source);
diff --git a/lib/src/list_proxy.dart b/lib/src/list_proxy.dart
index 5df1ed4..7c6e612 100644
--- a/lib/src/list_proxy.dart
+++ b/lib/src/list_proxy.dart
@@ -9,7 +9,6 @@
 
 // TOOD(jmesserly): this needs to be removed, but fixing NodeList is tricky.
 class ListProxy<E> extends IterableBase<E> implements List<E> {
-
   /// The inner [List<T>] with the actual storage.
   final List<E> _list;
 
@@ -48,9 +47,11 @@
   operator []=(int index, E value) {
     _list[index] = value;
   }
+
   set length(int value) {
     _list.length = value;
   }
+
   void add(E value) {
     _list.add(value);
   }
@@ -58,12 +59,15 @@
   void addLast(E value) {
     add(value);
   }
+
   void addAll(Iterable<E> collection) {
     _list.addAll(collection);
   }
+
   void sort([int compare(E a, E b)]) {
     _list.sort(compare);
   }
+
   void shuffle([Random random]) {
     _list.shuffle(random);
   }
@@ -87,9 +91,11 @@
   void setRange(int start, int length, Iterable<E> from, [int startFrom = 0]) {
     _list.setRange(start, length, from, startFrom);
   }
+
   void removeRange(int start, int length) {
     _list.removeRange(start, length);
   }
+
   void insertAll(int index, Iterable<E> iterable) {
     _list.insertAll(index, iterable);
   }
diff --git a/lib/src/query_selector.dart b/lib/src/query_selector.dart
index 3aa45f2..5c438db 100644
--- a/lib/src/query_selector.dart
+++ b/lib/src/query_selector.dart
@@ -16,8 +16,8 @@
 
 List<Element> querySelectorAll(Node node, String selector) {
   var results = <Element>[];
-  new SelectorEvaluator().querySelectorAll(
-      node, _parseSelectorList(selector), results);
+  new SelectorEvaluator()
+      .querySelectorAll(node, _parseSelectorList(selector), results);
   return results;
 }
 
@@ -124,9 +124,9 @@
     return result;
   }
 
-  _unimplemented(SimpleSelector selector) => new UnimplementedError(
-      "'$selector' selector of type "
-      "${selector.runtimeType} is not implemented");
+  _unimplemented(SimpleSelector selector) =>
+      new UnimplementedError("'$selector' selector of type "
+          "${selector.runtimeType} is not implemented");
 
   _unsupported(selector) =>
       new FormatException("'$selector' is not a valid selector");
diff --git a/lib/src/token.dart b/lib/src/token.dart
index 9a2843c..877a6a3 100644
--- a/lib/src/token.dart
+++ b/lib/src/token.dart
@@ -32,8 +32,11 @@
   /// The namespace. This is filled in later during tree building.
   String namespace;
 
-  StartTagToken(String name, {this.data, bool selfClosing: false,
-      this.selfClosingAcknowledged: false, this.namespace})
+  StartTagToken(String name,
+      {this.data,
+      bool selfClosing: false,
+      this.selfClosingAcknowledged: false,
+      this.namespace})
       : super(name, selfClosing);
 
   int get kind => TokenKind.startTag;
diff --git a/lib/src/tokenizer.dart b/lib/src/tokenizer.dart
index 68cb6dc..21505df 100644
--- a/lib/src/tokenizer.dart
+++ b/lib/src/tokenizer.dart
@@ -65,11 +65,16 @@
   List<TagAttribute> _attributes;
   Set<String> _attributeNames;
 
-  HtmlTokenizer(doc, {String encoding, bool parseMeta: true,
-      this.lowercaseElementName: true, this.lowercaseAttrName: true,
-      bool generateSpans: false, String sourceUrl, this.attributeSpans: false})
+  HtmlTokenizer(doc,
+      {String encoding,
+      bool parseMeta: true,
+      this.lowercaseElementName: true,
+      this.lowercaseAttrName: true,
+      bool generateSpans: false,
+      String sourceUrl,
+      this.attributeSpans: false})
       : stream = new HtmlInputStream(
-          doc, encoding, parseMeta, generateSpans, sourceUrl),
+            doc, encoding, parseMeta, generateSpans, sourceUrl),
         tokenQueue = new Queue(),
         generateSpans = generateSpans {
     reset();
@@ -200,42 +205,42 @@
           (0x007F <= charAsInt && charAsInt <= 0x009F) ||
           (0xFDD0 <= charAsInt && charAsInt <= 0xFDEF) ||
           const [
-        0x000B,
-        0xFFFE,
-        0xFFFF,
-        0x1FFFE,
-        0x1FFFF,
-        0x2FFFE,
-        0x2FFFF,
-        0x3FFFE,
-        0x3FFFF,
-        0x4FFFE,
-        0x4FFFF,
-        0x5FFFE,
-        0x5FFFF,
-        0x6FFFE,
-        0x6FFFF,
-        0x7FFFE,
-        0x7FFFF,
-        0x8FFFE,
-        0x8FFFF,
-        0x9FFFE,
-        0x9FFFF,
-        0xAFFFE,
-        0xAFFFF,
-        0xBFFFE,
-        0xBFFFF,
-        0xCFFFE,
-        0xCFFFF,
-        0xDFFFE,
-        0xDFFFF,
-        0xEFFFE,
-        0xEFFFF,
-        0xFFFFE,
-        0xFFFFF,
-        0x10FFFE,
-        0x10FFFF
-      ].contains(charAsInt)) {
+            0x000B,
+            0xFFFE,
+            0xFFFF,
+            0x1FFFE,
+            0x1FFFF,
+            0x2FFFE,
+            0x2FFFF,
+            0x3FFFE,
+            0x3FFFF,
+            0x4FFFE,
+            0x4FFFF,
+            0x5FFFE,
+            0x5FFFF,
+            0x6FFFE,
+            0x6FFFF,
+            0x7FFFE,
+            0x7FFFF,
+            0x8FFFE,
+            0x8FFFF,
+            0x9FFFE,
+            0x9FFFF,
+            0xAFFFE,
+            0xAFFFF,
+            0xBFFFE,
+            0xBFFFF,
+            0xCFFFE,
+            0xCFFFF,
+            0xDFFFE,
+            0xDFFFF,
+            0xEFFFE,
+            0xEFFFF,
+            0xFFFFE,
+            0xFFFFF,
+            0x10FFFE,
+            0x10FFFF
+          ].contains(charAsInt)) {
         _addToken(new ParseErrorToken("illegal-codepoint-for-numeric-entity",
             messageParams: {"charAsInt": charAsInt}));
       }
diff --git a/lib/src/treebuilder.dart b/lib/src/treebuilder.dart
index 6be687e..ac71e48 100644
--- a/lib/src/treebuilder.dart
+++ b/lib/src/treebuilder.dart
@@ -378,16 +378,8 @@
     var name = openElements.last.localName;
     // XXX td, th and tr are not actually needed
     if (name != exclude &&
-        const [
-      "dd",
-      "dt",
-      "li",
-      "option",
-      "optgroup",
-      "p",
-      "rp",
-      "rt"
-    ].contains(name)) {
+        const ["dd", "dt", "li", "option", "optgroup", "p", "rp", "rt"]
+            .contains(name)) {
       openElements.removeLast();
       // XXX This is not entirely what the specification says. We should
       // investigate it more closely.
diff --git a/test/parser_feature_test.dart b/test/parser_feature_test.dart
index 43a3426..d185a14 100644
--- a/test/parser_feature_test.dart
+++ b/test/parser_feature_test.dart
@@ -234,7 +234,9 @@
       expect(keys[0].namespace, 'http://www.w3.org/1999/xlink');
       expect(keys[0].name, 'type');
 
-      expect(n.outerHtml, '<desc xlink:type="simple" '
+      expect(
+          n.outerHtml,
+          '<desc xlink:type="simple" '
           'xlink:href="http://example.com/logo.png" xlink:show="new"></desc>');
     });
   });
@@ -247,7 +249,8 @@
     expect(parser.errors[0].errorCode, 'expected-doctype-but-got-chars');
     expect(parser.errors[0].message,
         'Unexpected non-space characters. Expected DOCTYPE.');
-    expect(parser.errors[0].toString(),
+    expect(
+        parser.errors[0].toString(),
         'ParserError on line 1, column 4: Unexpected non-space characters. '
         'Expected DOCTYPE.\n'
         'foo\n'
diff --git a/test/parser_test.dart b/test/parser_test.dart
index 6f81086..516a0f4 100644
--- a/test/parser_test.dart
+++ b/test/parser_test.dart
@@ -30,10 +30,14 @@
   return lines.join("\n");
 }
 
-void runParserTest(String groupName, String innerHTML, String input,
-    String expected, List errors, TreeBuilderFactory treeCtor,
+void runParserTest(
+    String groupName,
+    String innerHTML,
+    String input,
+    String expected,
+    List errors,
+    TreeBuilderFactory treeCtor,
     bool namespaceHTMLElements) {
-
   // XXX - move this out into the setup function
   // concatenate all consecutive character tokens into a single token
   var builder = treeCtor(namespaceHTMLElements);
@@ -53,14 +57,15 @@
   }
 
   expect(output, equals(expected),
-      reason: "\n\nInput:\n$input\n\nExpected:\n$expected\n\nReceived:\n$output");
+      reason:
+          "\n\nInput:\n$input\n\nExpected:\n$expected\n\nReceived:\n$output");
 
   if (checkParseErrors) {
     expect(parser.errors.length, equals(errors.length),
         reason: "\n\nInput:\n$input\n\nExpected errors (${errors.length}):\n"
-        "${errors.join('\n')}\n\n"
-        "Actual errors (${parser.errors.length}):\n"
-        "${parser.errors.map((e) => '$e').join('\n')}");
+            "${errors.join('\n')}\n\n"
+            "Actual errors (${parser.errors.length}):\n"
+            "${parser.errors.map((e) => '$e').join('\n')}");
   }
 }
 
diff --git a/test/selectors/level1_lib.dart b/test/selectors/level1_lib.dart
index 3191353..34b7c75 100644
--- a/test/selectors/level1_lib.dart
+++ b/test/selectors/level1_lib.dart
@@ -155,8 +155,8 @@
     var elm = root.querySelector('undefined');
     assert_not_equals(elm, 'undefined', "This should find an element.");
     // TODO(jmesserly): change "localName" back to "tagName" once implemented.
-    assert_equals(elm.localName.toUpperCase(),
-        "UNDEFINED", "The tag name should be 'UNDEFINED'.");
+    assert_equals(elm.localName.toUpperCase(), "UNDEFINED",
+        "The tag name should be 'UNDEFINED'.");
   }, type + ".querySelector undefined");
 
   test(() {