Add return types and remove local variable types (#98)

The return types do, in some cases, change the interface of a public
API, but only to make it more descriptive of behavior. Only code that
would have had runtime errors should be statically impacted by the
change.
diff --git a/analysis_options.yaml b/analysis_options.yaml
index b8036fa..9d14291 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,10 +1,5 @@
 include: package:pedantic/analysis_options.yaml
 
-analyzer:
-  errors:
-    always_declare_return_types: ignore # 318
-    omit_local_variable_types: ignore # 48
-
 linter:
   rules:
   - prefer_equal_for_default_values
diff --git a/lib/parser.dart b/lib/parser.dart
index e9402ab..1f3d185 100644
--- a/lib/parser.dart
+++ b/lib/parser.dart
@@ -2552,7 +2552,7 @@
   ///
   /// We'll just parse everything after the 'progid:' look for the left paren
   /// then parse to the right paren ignoring everything in between.
-  processIEFilter(FileSpan startAfterProgidColon) {
+  dynamic processIEFilter(FileSpan startAfterProgidColon) {
     // Support non-functional filters (i.e. filter: FlipH)
     var kind = _peek();
     if (kind == TokenKind.SEMICOLON || kind == TokenKind.RBRACE) {
diff --git a/lib/src/analyzer.dart b/lib/src/analyzer.dart
index 0b121ad..e9fd7c9 100644
--- a/lib/src/analyzer.dart
+++ b/lib/src/analyzer.dart
@@ -409,7 +409,7 @@
   _MediaRulesReplacer(this._ruleSet, this._newRules);
 
   @override
-  visitMediaDirective(MediaDirective node) {
+  void visitMediaDirective(MediaDirective node) {
     var index = node.rules.indexOf(_ruleSet);
     if (index != -1) {
       node.rules.insertAll(index + 1, _newRules);
@@ -521,7 +521,7 @@
   _TopLevelIncludeReplacer(this._include, this._newRules);
 
   @override
-  visitStyleSheet(StyleSheet node) {
+  void visitStyleSheet(StyleSheet node) {
     var index = node.topLevels.indexOf(_include);
     if (index != -1) {
       node.topLevels.insertAll(index + 1, _newRules);
diff --git a/lib/src/polyfill.dart b/lib/src/polyfill.dart
index fa1a22a..2582bae 100644
--- a/lib/src/polyfill.dart
+++ b/lib/src/polyfill.dart
@@ -66,7 +66,7 @@
   }
 
   @override
-  visitVarDefinition(VarDefinition node) {
+  void visitVarDefinition(VarDefinition node) {
     // Replace with latest variable definition.
     varDefs[node.definedName] = node;
     super.visitVarDefinition(node);
@@ -96,7 +96,7 @@
   }
 
   @override
-  visitVarDefinition(VarDefinition node) {
+  void visitVarDefinition(VarDefinition node) {
     // Replace with latest variable definition.
     currVarDefinition = node;
 
@@ -198,7 +198,8 @@
     return result;
   }
 
-  _resolveVarUsage(List<Expression> expressions, int index, VarDefinition def) {
+  void _resolveVarUsage(
+      List<Expression> expressions, int index, VarDefinition def) {
     var defExpressions = (def.expression as Expressions).expressions;
     expressions.replaceRange(index, index + 1, defExpressions);
   }
diff --git a/lib/src/token_kind.dart b/lib/src/token_kind.dart
index b0b60eb..492800e 100644
--- a/lib/src/token_kind.dart
+++ b/lib/src/token_kind.dart
@@ -569,7 +569,7 @@
   }
 
   static String decimalToHex(int number, [int minDigits = 1]) {
-    final String _HEX_DIGITS = '0123456789abcdef';
+    final _HEX_DIGITS = '0123456789abcdef';
 
     var result = <String>[];
 
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index 4aca2c9..81f26bf 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -17,7 +17,7 @@
   Identifier clone() => Identifier(name, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitIdentifier(this);
+  void visit(VisitorBase visitor) => visitor.visitIdentifier(this);
 
   @override
   String toString() => name;
@@ -28,7 +28,7 @@
   @override
   Wildcard clone() => Wildcard(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitWildcard(this);
+  void visit(VisitorBase visitor) => visitor.visitWildcard(this);
 
   String get name => '*';
 }
@@ -38,7 +38,7 @@
   @override
   ThisOperator clone() => ThisOperator(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitThisOperator(this);
+  void visit(VisitorBase visitor) => visitor.visitThisOperator(this);
 
   String get name => '&';
 }
@@ -48,7 +48,7 @@
   @override
   Negation clone() => Negation(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitNegation(this);
+  void visit(VisitorBase visitor) => visitor.visitNegation(this);
 
   String get name => 'not';
 }
@@ -65,7 +65,7 @@
   @override
   CalcTerm clone() => CalcTerm(value, text, expr.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitCalcTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitCalcTerm(this);
 
   @override
   String toString() => '$text($expr)';
@@ -79,7 +79,7 @@
   @override
   CssComment clone() => CssComment(comment, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitCssComment(this);
+  void visit(VisitorBase visitor) => visitor.visitCssComment(this);
 }
 
 // CDO/CDC (Comment Definition Open <!-- and Comment Definition Close -->).
@@ -88,7 +88,7 @@
   @override
   CommentDefinition clone() => CommentDefinition(comment, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitCommentDefinition(this);
+  void visit(VisitorBase visitor) => visitor.visitCommentDefinition(this);
 }
 
 class SelectorGroup extends TreeNode {
@@ -100,7 +100,7 @@
   SelectorGroup clone() => SelectorGroup(selectors, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
+  void visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
 }
 
 class Selector extends TreeNode {
@@ -121,7 +121,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitSelector(this);
 }
 
 class SimpleSelectorSequence extends TreeNode {
@@ -161,7 +161,7 @@
       SimpleSelectorSequence(simpleSelector, span, combinator);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSimpleSelectorSequence(this);
+  void visit(VisitorBase visitor) => visitor.visitSimpleSelectorSequence(this);
 
   @override
   String toString() => simpleSelector.name;
@@ -181,14 +181,14 @@
   bool get isThis => _name is ThisOperator;
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
 }
 
 // element name
 class ElementSelector extends SimpleSelector {
   ElementSelector(name, SourceSpan span) : super(name, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitElementSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitElementSelector(this);
 
   @override
   ElementSelector clone() => ElementSelector(_name, span);
@@ -215,7 +215,7 @@
   NamespaceSelector clone() => NamespaceSelector(_namespace, '', span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitNamespaceSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitNamespaceSelector(this);
 
   @override
   String toString() => '$namespace|${nameAsSimpleSelector.name}';
@@ -224,15 +224,13 @@
 // [attr op value]
 class AttributeSelector extends SimpleSelector {
   final int _op;
-  final _value;
+  final dynamic value;
 
-  AttributeSelector(Identifier name, this._op, this._value, SourceSpan span)
+  AttributeSelector(Identifier name, this._op, this.value, SourceSpan span)
       : super(name, span);
 
   int get operatorKind => _op;
 
-  get value => _value;
-
   String matchOperator() {
     switch (_op) {
       case TokenKind.EQUALS:
@@ -273,11 +271,11 @@
   }
 
   String valueToString() {
-    if (_value != null) {
-      if (_value is Identifier) {
-        return _value.name;
+    if (value != null) {
+      if (value is Identifier) {
+        return value.name;
       } else {
-        return '"${_value}"';
+        return '"$value"';
       }
     } else {
       return '';
@@ -285,10 +283,10 @@
   }
 
   @override
-  AttributeSelector clone() => AttributeSelector(_name, _op, _value, span);
+  AttributeSelector clone() => AttributeSelector(_name, _op, value, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitAttributeSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitAttributeSelector(this);
 
   @override
   String toString() => '[$name${matchOperator()}${valueToString()}]';
@@ -300,7 +298,7 @@
   @override
   IdSelector clone() => IdSelector(_name, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitIdSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitIdSelector(this);
 
   @override
   String toString() => '#$_name';
@@ -312,7 +310,7 @@
   @override
   ClassSelector clone() => ClassSelector(_name, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitClassSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitClassSelector(this);
 
   @override
   String toString() => '.$_name';
@@ -322,7 +320,7 @@
 class PseudoClassSelector extends SimpleSelector {
   PseudoClassSelector(Identifier name, SourceSpan span) : super(name, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitPseudoClassSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitPseudoClassSelector(this);
 
   @override
   PseudoClassSelector clone() => PseudoClassSelector(_name, span);
@@ -340,7 +338,7 @@
       {this.isLegacy = false})
       : super(name, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitPseudoElementSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitPseudoElementSelector(this);
 
   @override
   PseudoElementSelector clone() => PseudoElementSelector(_name, span);
@@ -365,7 +363,8 @@
   SelectorExpression get expression => _argument as SelectorExpression;
 
   @override
-  visit(VisitorBase visitor) => visitor.visitPseudoClassFunctionSelector(this);
+  void visit(VisitorBase visitor) =>
+      visitor.visitPseudoClassFunctionSelector(this);
 }
 
 // ::pseudoElementFunction(expression)
@@ -381,7 +380,7 @@
       PseudoElementFunctionSelector(_name, expression, span);
 
   @override
-  visit(VisitorBase visitor) =>
+  void visit(VisitorBase visitor) =>
       visitor.visitPseudoElementFunctionSelector(this);
 }
 
@@ -396,7 +395,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSelectorExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitSelectorExpression(this);
 }
 
 // :NOT(negation_arg)
@@ -410,7 +409,7 @@
   NegationSelector clone() => NegationSelector(negationArg, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
+  void visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
 }
 
 class NoOp extends TreeNode {
@@ -420,7 +419,7 @@
   NoOp clone() => NoOp();
 
   @override
-  visit(VisitorBase visitor) => visitor.visitNoOp(this);
+  void visit(VisitorBase visitor) => visitor.visitNoOp(this);
 }
 
 class StyleSheet extends TreeNode {
@@ -443,7 +442,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
+  void visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
 }
 
 class TopLevelProduction extends TreeNode {
@@ -451,7 +450,7 @@
   @override
   TopLevelProduction clone() => TopLevelProduction(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitTopLevelProduction(this);
+  void visit(VisitorBase visitor) => visitor.visitTopLevelProduction(this);
 }
 
 class RuleSet extends TopLevelProduction {
@@ -472,7 +471,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitRuleSet(this);
+  void visit(VisitorBase visitor) => visitor.visitRuleSet(this);
 }
 
 class Directive extends TreeNode {
@@ -484,7 +483,7 @@
   @override
   Directive clone() => Directive(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitDirective(this);
 }
 
 class DocumentDirective extends Directive {
@@ -508,7 +507,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitDocumentDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitDocumentDirective(this);
 }
 
 class SupportsDirective extends Directive {
@@ -529,7 +528,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSupportsDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitSupportsDirective(this);
 }
 
 abstract class SupportsCondition extends TreeNode {
@@ -553,7 +552,8 @@
       SupportsConditionInParens(condition.clone(), span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSupportsConditionInParens(this);
+  void visit(VisitorBase visitor) =>
+      visitor.visitSupportsConditionInParens(this);
 }
 
 class SupportsNegation extends SupportsCondition {
@@ -565,7 +565,7 @@
   SupportsNegation clone() => SupportsNegation(condition.clone(), span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSupportsNegation(this);
+  void visit(VisitorBase visitor) => visitor.visitSupportsNegation(this);
 }
 
 class SupportsConjunction extends SupportsCondition {
@@ -583,7 +583,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSupportsConjunction(this);
+  void visit(VisitorBase visitor) => visitor.visitSupportsConjunction(this);
 }
 
 class SupportsDisjunction extends SupportsCondition {
@@ -601,7 +601,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitSupportsDisjunction(this);
+  void visit(VisitorBase visitor) => visitor.visitSupportsDisjunction(this);
 }
 
 class ViewportDirective extends Directive {
@@ -616,7 +616,7 @@
       ViewportDirective(name, declarations.clone(), span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitViewportDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitViewportDirective(this);
 }
 
 class ImportDirective extends Directive {
@@ -639,7 +639,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitImportDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitImportDirective(this);
 }
 
 /// MediaExpression grammar:
@@ -663,7 +663,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
 }
 
 /// MediaQuery grammar:
@@ -703,7 +703,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMediaQuery(this);
+  void visit(VisitorBase visitor) => visitor.visitMediaQuery(this);
 }
 
 class MediaDirective extends Directive {
@@ -726,7 +726,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
 }
 
 class HostDirective extends Directive {
@@ -744,7 +744,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitHostDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitHostDirective(this);
 }
 
 class PageDirective extends Directive {
@@ -766,7 +766,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitPageDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitPageDirective(this);
 
   bool get hasIdent => _ident != null && _ident.isNotEmpty;
   bool get hasPseudoPage => _pseudoPage != null && _pseudoPage.isNotEmpty;
@@ -779,7 +779,7 @@
   @override
   CharsetDirective clone() => CharsetDirective(charEncoding, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
 }
 
 class KeyFrameDirective extends Directive {
@@ -792,7 +792,7 @@
       : _blocks = [],
         super(span);
 
-  add(KeyFrameBlock block) {
+  void add(KeyFrameBlock block) {
     _blocks.add(block);
   }
 
@@ -821,7 +821,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
 }
 
 class KeyFrameBlock extends Expression {
@@ -835,7 +835,7 @@
   KeyFrameBlock clone() =>
       KeyFrameBlock(_blockSelectors.clone(), _declarations.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
+  void visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
 }
 
 class FontFaceDirective extends Directive {
@@ -846,7 +846,7 @@
   @override
   FontFaceDirective clone() => FontFaceDirective(_declarations.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
 }
 
 class StyletDirective extends Directive {
@@ -871,7 +871,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
 }
 
 class NamespaceDirective extends Directive {
@@ -887,7 +887,7 @@
   NamespaceDirective clone() => NamespaceDirective(_prefix, _uri, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
 
   String get prefix => _prefix.isNotEmpty ? '$_prefix ' : '';
 }
@@ -902,7 +902,7 @@
   VarDefinitionDirective clone() => VarDefinitionDirective(def.clone(), span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitVarDefinitionDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitVarDefinitionDirective(this);
 }
 
 class MixinDefinition extends Directive {
@@ -923,7 +923,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
+  void visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
 }
 
 /// Support a Sass @mixin. See http://sass-lang.com for description.
@@ -949,7 +949,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMixinRulesetDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitMixinRulesetDirective(this);
 }
 
 class MixinDeclarationDirective extends MixinDefinition {
@@ -970,7 +970,8 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMixinDeclarationDirective(this);
+  void visit(VisitorBase visitor) =>
+      visitor.visitMixinDeclarationDirective(this);
 }
 
 /// To support consuming a Sass mixin @include.
@@ -990,7 +991,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
 }
 
 /// To support Sass @content.
@@ -998,7 +999,7 @@
   ContentDirective(SourceSpan span) : super(span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitContentDirective(this);
+  void visit(VisitorBase visitor) => visitor.visitContentDirective(this);
 }
 
 class Declaration extends TreeNode {
@@ -1034,7 +1035,7 @@
           important: important);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitDeclaration(this);
+  void visit(VisitorBase visitor) => visitor.visitDeclaration(this);
 }
 
 // TODO(terry): Consider 2 kinds of VarDefinitions static at top-level and
@@ -1056,7 +1057,7 @@
       _property.clone(), expression != null ? expression.clone() : null, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
+  void visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
 }
 
 /// Node for usage of @include mixin[(args,...)] found in a declaration group
@@ -1076,7 +1077,8 @@
       IncludeMixinAtDeclaration(include.clone(), span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitIncludeMixinAtDeclaration(this);
+  void visit(VisitorBase visitor) =>
+      visitor.visitIncludeMixinAtDeclaration(this);
 }
 
 class ExtendDeclaration extends Declaration {
@@ -1092,7 +1094,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
+  void visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
 }
 
 class DeclarationGroup extends TreeNode {
@@ -1108,7 +1110,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
+  void visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
 }
 
 class MarginGroup extends DeclarationGroup {
@@ -1120,7 +1122,7 @@
   MarginGroup clone() =>
       MarginGroup(margin_sym, super.clone().declarations, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
+  void visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
 }
 
 class VarUsage extends Expression {
@@ -1139,7 +1141,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitVarUsage(this);
+  void visit(VisitorBase visitor) => visitor.visitVarUsage(this);
 }
 
 class OperatorSlash extends Expression {
@@ -1147,7 +1149,7 @@
   @override
   OperatorSlash clone() => OperatorSlash(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
+  void visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
 }
 
 class OperatorComma extends Expression {
@@ -1155,7 +1157,7 @@
   @override
   OperatorComma clone() => OperatorComma(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
+  void visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
 }
 
 class OperatorPlus extends Expression {
@@ -1163,7 +1165,7 @@
   @override
   OperatorPlus clone() => OperatorPlus(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
+  void visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
 }
 
 class OperatorMinus extends Expression {
@@ -1171,7 +1173,7 @@
   @override
   OperatorMinus clone() => OperatorMinus(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
+  void visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
 }
 
 class UnicodeRangeTerm extends Expression {
@@ -1186,7 +1188,7 @@
   UnicodeRangeTerm clone() => UnicodeRangeTerm(first, second, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
 }
 
 class LiteralTerm extends Expression {
@@ -1202,7 +1204,7 @@
   LiteralTerm clone() => LiteralTerm(value, text, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
 }
 
 class NumberTerm extends LiteralTerm {
@@ -1210,7 +1212,7 @@
   @override
   NumberTerm clone() => NumberTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
 }
 
 class UnitTerm extends LiteralTerm {
@@ -1222,7 +1224,7 @@
   UnitTerm clone() => UnitTerm(value, text, span, unit);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
 
   String unitToString() => TokenKind.unitToString(unit);
 
@@ -1244,7 +1246,7 @@
   @override
   LengthTerm clone() => LengthTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
 }
 
 class PercentageTerm extends LiteralTerm {
@@ -1252,7 +1254,7 @@
   @override
   PercentageTerm clone() => PercentageTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
 }
 
 class EmTerm extends LiteralTerm {
@@ -1260,7 +1262,7 @@
   @override
   EmTerm clone() => EmTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitEmTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitEmTerm(this);
 }
 
 class ExTerm extends LiteralTerm {
@@ -1268,7 +1270,7 @@
   @override
   ExTerm clone() => ExTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitExTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitExTerm(this);
 }
 
 class AngleTerm extends UnitTerm {
@@ -1284,7 +1286,7 @@
   @override
   AngleTerm clone() => AngleTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
 }
 
 class TimeTerm extends UnitTerm {
@@ -1299,7 +1301,7 @@
   @override
   TimeTerm clone() => TimeTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
 }
 
 class FreqTerm extends UnitTerm {
@@ -1312,7 +1314,7 @@
   @override
   FreqTerm clone() => FreqTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
 }
 
 class FractionTerm extends LiteralTerm {
@@ -1321,7 +1323,7 @@
   @override
   FractionTerm clone() => FractionTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
 }
 
 class UriTerm extends LiteralTerm {
@@ -1330,7 +1332,7 @@
   @override
   UriTerm clone() => UriTerm(value, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitUriTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitUriTerm(this);
 }
 
 class ResolutionTerm extends UnitTerm {
@@ -1345,7 +1347,7 @@
   @override
   ResolutionTerm clone() => ResolutionTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
 }
 
 class ChTerm extends UnitTerm {
@@ -1358,7 +1360,7 @@
   @override
   ChTerm clone() => ChTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitChTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitChTerm(this);
 }
 
 class RemTerm extends UnitTerm {
@@ -1371,7 +1373,7 @@
   @override
   RemTerm clone() => RemTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitRemTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitRemTerm(this);
 }
 
 class ViewportTerm extends UnitTerm {
@@ -1387,7 +1389,7 @@
   @override
   ViewportTerm clone() => ViewportTerm(value, text, span, unit);
   @override
-  visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
 }
 
 /// Type to signal a bad hex value for HexColorTerm.value.
@@ -1399,7 +1401,7 @@
   @override
   HexColorTerm clone() => HexColorTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
 }
 
 class FunctionTerm extends LiteralTerm {
@@ -1411,7 +1413,7 @@
   @override
   FunctionTerm clone() => FunctionTerm(value, text, _params.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
 }
 
 /// A "\9" was encountered at the end of the expression and before a semi-colon.
@@ -1422,7 +1424,7 @@
   @override
   IE8Term clone() => IE8Term(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitIE8Term(this);
+  void visit(VisitorBase visitor) => visitor.visitIE8Term(this);
 }
 
 class GroupTerm extends Expression {
@@ -1439,7 +1441,7 @@
   @override
   GroupTerm clone() => GroupTerm(span);
   @override
-  visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
 }
 
 class ItemTerm extends NumberTerm {
@@ -1448,7 +1450,7 @@
   @override
   ItemTerm clone() => ItemTerm(value, text, span);
   @override
-  visit(VisitorBase visitor) => visitor.visitItemTerm(this);
+  void visit(VisitorBase visitor) => visitor.visitItemTerm(this);
 }
 
 class Expressions extends Expression {
@@ -1470,7 +1472,7 @@
   }
 
   @override
-  visit(VisitorBase visitor) => visitor.visitExpressions(this);
+  void visit(VisitorBase visitor) => visitor.visitExpressions(this);
 }
 
 class BinaryExpression extends Expression {
@@ -1483,7 +1485,7 @@
   @override
   BinaryExpression clone() => BinaryExpression(op, x.clone(), y.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
 }
 
 class UnaryExpression extends Expression {
@@ -1495,7 +1497,7 @@
   @override
   UnaryExpression clone() => UnaryExpression(op, self.clone(), span);
   @override
-  visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
 }
 
 abstract class DartStyleExpression extends TreeNode {
@@ -1515,7 +1517,7 @@
   // Merges give 2 DartStyleExpression (or derived from DartStyleExpression,
   // e.g., FontExpression, etc.) will merge if the two expressions are of the
   // same property name (implies same exact type e.g, FontExpression).
-  merged(DartStyleExpression newDartExpr);
+  DartStyleExpression merged(DartStyleExpression newDartExpr);
 
   bool get isUnknown => _styleType == 0 || _styleType == null;
   bool get isFont => _styleType == fontStyle;
@@ -1529,7 +1531,7 @@
   bool isSame(DartStyleExpression other) => _styleType == other._styleType;
 
   @override
-  visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
 }
 
 class FontExpression extends DartStyleExpression {
@@ -1581,7 +1583,7 @@
       lineHeight: font.lineHeight);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitFontExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitFontExpression(this);
 }
 
 abstract class BoxExpression extends DartStyleExpression {
@@ -1591,7 +1593,7 @@
       : super(styleType, span);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
 
   String get formattedBoxEdge {
     if (box.top == box.left && box.top == box.bottom && box.top == box.right) {
@@ -1617,7 +1619,7 @@
       : super(DartStyleExpression.marginStyle, span, box);
 
   @override
-  merged(DartStyleExpression newMarginExpr) {
+  MarginExpression merged(DartStyleExpression newMarginExpr) {
     if (newMarginExpr is MarginExpression &&
         isMargin &&
         newMarginExpr.isMargin) {
@@ -1641,7 +1643,7 @@
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
 }
 
 class BorderExpression extends BoxExpression {
@@ -1654,7 +1656,7 @@
       : super(DartStyleExpression.borderStyle, span, box);
 
   @override
-  merged(DartStyleExpression newBorderExpr) {
+  BorderExpression merged(DartStyleExpression newBorderExpr) {
     if (newBorderExpr is BorderExpression &&
         isBorder &&
         newBorderExpr.isBorder) {
@@ -1679,7 +1681,7 @@
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
 
   @override
-  visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
 }
 
 class HeightExpression extends DartStyleExpression {
@@ -1689,7 +1691,7 @@
       : super(DartStyleExpression.heightStyle, span);
 
   @override
-  merged(DartStyleExpression newHeightExpr) {
+  HeightExpression merged(DartStyleExpression newHeightExpr) {
     if (newHeightExpr is DartStyleExpression &&
         isHeight &&
         newHeightExpr.isHeight) {
@@ -1702,7 +1704,7 @@
   @override
   HeightExpression clone() => HeightExpression(span, height);
   @override
-  visit(VisitorBase visitor) => visitor.visitHeightExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitHeightExpression(this);
 }
 
 class WidthExpression extends DartStyleExpression {
@@ -1712,7 +1714,7 @@
       : super(DartStyleExpression.widthStyle, span);
 
   @override
-  merged(DartStyleExpression newWidthExpr) {
+  WidthExpression merged(DartStyleExpression newWidthExpr) {
     if (newWidthExpr is WidthExpression && isWidth && newWidthExpr.isWidth) {
       return newWidthExpr;
     }
@@ -1723,7 +1725,7 @@
   @override
   WidthExpression clone() => WidthExpression(span, width);
   @override
-  visit(VisitorBase visitor) => visitor.visitWidthExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitWidthExpression(this);
 }
 
 class PaddingExpression extends BoxExpression {
@@ -1736,7 +1738,7 @@
       : super(DartStyleExpression.paddingStyle, span, box);
 
   @override
-  merged(DartStyleExpression newPaddingExpr) {
+  PaddingExpression merged(DartStyleExpression newPaddingExpr) {
     if (newPaddingExpr is PaddingExpression &&
         isPadding &&
         newPaddingExpr.isPadding) {
@@ -1760,5 +1762,5 @@
   PaddingExpression clone() => PaddingExpression(span,
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
   @override
-  visit(VisitorBase visitor) => visitor.visitPaddingExpression(this);
+  void visit(VisitorBase visitor) => visitor.visitPaddingExpression(this);
 }
diff --git a/lib/src/tree_base.dart b/lib/src/tree_base.dart
index ef157cd..6f2f442 100644
--- a/lib/src/tree_base.dart
+++ b/lib/src/tree_base.dart
@@ -14,7 +14,7 @@
   TreeNode clone();
 
   /// Classic double-dispatch visitor for implementing passes.
-  visit(VisitorBase visitor);
+  void visit(VisitorBase visitor);
 
   /// A multiline string showing the node and its children.
   String toDebugString() {
diff --git a/lib/src/validate.dart b/lib/src/validate.dart
index fe18e05..4d255e2 100644
--- a/lib/src/validate.dart
+++ b/lib/src/validate.dart
@@ -50,7 +50,7 @@
 
   // Validate the @{css expression} only .class and #elementId are valid inside
   // of @{...}.
-  static template(List<Selector> selectors) {
+  static void template(List<Selector> selectors) {
     var found = false; // signal if a selector is matched.
     var matches = 0; // < 0 IdSelectors, > 0 ClassSelector
 
diff --git a/lib/visitor.dart b/lib/visitor.dart
index 2ccd8ff..ceda80c 100644
--- a/lib/visitor.dart
+++ b/lib/visitor.dart
@@ -11,107 +11,107 @@
 part 'src/tree_printer.dart';
 
 abstract class VisitorBase {
-  visitCalcTerm(CalcTerm node);
-  visitCssComment(CssComment node);
-  visitCommentDefinition(CommentDefinition node);
-  visitStyleSheet(StyleSheet node);
-  visitNoOp(NoOp node);
-  visitTopLevelProduction(TopLevelProduction node);
-  visitDirective(Directive node);
-  visitDocumentDirective(DocumentDirective node);
-  visitSupportsDirective(SupportsDirective node);
-  visitSupportsConditionInParens(SupportsConditionInParens node);
-  visitSupportsNegation(SupportsNegation node);
-  visitSupportsConjunction(SupportsConjunction node);
-  visitSupportsDisjunction(SupportsDisjunction node);
-  visitViewportDirective(ViewportDirective node);
-  visitMediaExpression(MediaExpression node);
-  visitMediaQuery(MediaQuery node);
-  visitMediaDirective(MediaDirective node);
-  visitHostDirective(HostDirective node);
-  visitPageDirective(PageDirective node);
-  visitCharsetDirective(CharsetDirective node);
-  visitImportDirective(ImportDirective node);
-  visitKeyFrameDirective(KeyFrameDirective node);
-  visitKeyFrameBlock(KeyFrameBlock node);
-  visitFontFaceDirective(FontFaceDirective node);
-  visitStyletDirective(StyletDirective node);
-  visitNamespaceDirective(NamespaceDirective node);
-  visitVarDefinitionDirective(VarDefinitionDirective node);
-  visitMixinDefinition(MixinDefinition node);
-  visitMixinRulesetDirective(MixinRulesetDirective node);
-  visitMixinDeclarationDirective(MixinDeclarationDirective node);
-  visitIncludeDirective(IncludeDirective node);
-  visitContentDirective(ContentDirective node);
+  void visitCalcTerm(CalcTerm node);
+  void visitCssComment(CssComment node);
+  void visitCommentDefinition(CommentDefinition node);
+  void visitStyleSheet(StyleSheet node);
+  void visitNoOp(NoOp node);
+  void visitTopLevelProduction(TopLevelProduction node);
+  void visitDirective(Directive node);
+  void visitDocumentDirective(DocumentDirective node);
+  void visitSupportsDirective(SupportsDirective node);
+  void visitSupportsConditionInParens(SupportsConditionInParens node);
+  void visitSupportsNegation(SupportsNegation node);
+  void visitSupportsConjunction(SupportsConjunction node);
+  void visitSupportsDisjunction(SupportsDisjunction node);
+  void visitViewportDirective(ViewportDirective node);
+  void visitMediaExpression(MediaExpression node);
+  void visitMediaQuery(MediaQuery node);
+  void visitMediaDirective(MediaDirective node);
+  void visitHostDirective(HostDirective node);
+  void visitPageDirective(PageDirective node);
+  void visitCharsetDirective(CharsetDirective node);
+  void visitImportDirective(ImportDirective node);
+  void visitKeyFrameDirective(KeyFrameDirective node);
+  void visitKeyFrameBlock(KeyFrameBlock node);
+  void visitFontFaceDirective(FontFaceDirective node);
+  void visitStyletDirective(StyletDirective node);
+  void visitNamespaceDirective(NamespaceDirective node);
+  void visitVarDefinitionDirective(VarDefinitionDirective node);
+  void visitMixinDefinition(MixinDefinition node);
+  void visitMixinRulesetDirective(MixinRulesetDirective node);
+  void visitMixinDeclarationDirective(MixinDeclarationDirective node);
+  void visitIncludeDirective(IncludeDirective node);
+  void visitContentDirective(ContentDirective node);
 
-  visitRuleSet(RuleSet node);
-  visitDeclarationGroup(DeclarationGroup node);
-  visitMarginGroup(MarginGroup node);
-  visitDeclaration(Declaration node);
-  visitVarDefinition(VarDefinition node);
-  visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node);
-  visitExtendDeclaration(ExtendDeclaration node);
-  visitSelectorGroup(SelectorGroup node);
-  visitSelector(Selector node);
-  visitSimpleSelectorSequence(SimpleSelectorSequence node);
-  visitSimpleSelector(SimpleSelector node);
-  visitElementSelector(ElementSelector node);
-  visitNamespaceSelector(NamespaceSelector node);
-  visitAttributeSelector(AttributeSelector node);
-  visitIdSelector(IdSelector node);
-  visitClassSelector(ClassSelector node);
-  visitPseudoClassSelector(PseudoClassSelector node);
-  visitPseudoElementSelector(PseudoElementSelector node);
-  visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node);
-  visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node);
-  visitNegationSelector(NegationSelector node);
-  visitSelectorExpression(SelectorExpression node);
+  void visitRuleSet(RuleSet node);
+  void visitDeclarationGroup(DeclarationGroup node);
+  void visitMarginGroup(MarginGroup node);
+  void visitDeclaration(Declaration node);
+  void visitVarDefinition(VarDefinition node);
+  void visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node);
+  void visitExtendDeclaration(ExtendDeclaration node);
+  void visitSelectorGroup(SelectorGroup node);
+  void visitSelector(Selector node);
+  void visitSimpleSelectorSequence(SimpleSelectorSequence node);
+  void visitSimpleSelector(SimpleSelector node);
+  void visitElementSelector(ElementSelector node);
+  void visitNamespaceSelector(NamespaceSelector node);
+  void visitAttributeSelector(AttributeSelector node);
+  void visitIdSelector(IdSelector node);
+  void visitClassSelector(ClassSelector node);
+  void visitPseudoClassSelector(PseudoClassSelector node);
+  void visitPseudoElementSelector(PseudoElementSelector node);
+  void visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node);
+  void visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node);
+  void visitNegationSelector(NegationSelector node);
+  void visitSelectorExpression(SelectorExpression node);
 
-  visitUnicodeRangeTerm(UnicodeRangeTerm node);
-  visitLiteralTerm(LiteralTerm node);
-  visitHexColorTerm(HexColorTerm node);
-  visitNumberTerm(NumberTerm node);
-  visitUnitTerm(UnitTerm node);
-  visitLengthTerm(LengthTerm node);
-  visitPercentageTerm(PercentageTerm node);
-  visitEmTerm(EmTerm node);
-  visitExTerm(ExTerm node);
-  visitAngleTerm(AngleTerm node);
-  visitTimeTerm(TimeTerm node);
-  visitFreqTerm(FreqTerm node);
-  visitFractionTerm(FractionTerm node);
-  visitUriTerm(UriTerm node);
-  visitResolutionTerm(ResolutionTerm node);
-  visitChTerm(ChTerm node);
-  visitRemTerm(RemTerm node);
-  visitViewportTerm(ViewportTerm node);
-  visitFunctionTerm(FunctionTerm node);
-  visitGroupTerm(GroupTerm node);
-  visitItemTerm(ItemTerm node);
-  visitIE8Term(IE8Term node);
-  visitOperatorSlash(OperatorSlash node);
-  visitOperatorComma(OperatorComma node);
-  visitOperatorPlus(OperatorPlus node);
-  visitOperatorMinus(OperatorMinus node);
-  visitVarUsage(VarUsage node);
+  void visitUnicodeRangeTerm(UnicodeRangeTerm node);
+  void visitLiteralTerm(LiteralTerm node);
+  void visitHexColorTerm(HexColorTerm node);
+  void visitNumberTerm(NumberTerm node);
+  void visitUnitTerm(UnitTerm node);
+  void visitLengthTerm(LengthTerm node);
+  void visitPercentageTerm(PercentageTerm node);
+  void visitEmTerm(EmTerm node);
+  void visitExTerm(ExTerm node);
+  void visitAngleTerm(AngleTerm node);
+  void visitTimeTerm(TimeTerm node);
+  void visitFreqTerm(FreqTerm node);
+  void visitFractionTerm(FractionTerm node);
+  void visitUriTerm(UriTerm node);
+  void visitResolutionTerm(ResolutionTerm node);
+  void visitChTerm(ChTerm node);
+  void visitRemTerm(RemTerm node);
+  void visitViewportTerm(ViewportTerm node);
+  void visitFunctionTerm(FunctionTerm node);
+  void visitGroupTerm(GroupTerm node);
+  void visitItemTerm(ItemTerm node);
+  void visitIE8Term(IE8Term node);
+  void visitOperatorSlash(OperatorSlash node);
+  void visitOperatorComma(OperatorComma node);
+  void visitOperatorPlus(OperatorPlus node);
+  void visitOperatorMinus(OperatorMinus node);
+  void visitVarUsage(VarUsage node);
 
-  visitExpressions(Expressions node);
-  visitBinaryExpression(BinaryExpression node);
-  visitUnaryExpression(UnaryExpression node);
+  void visitExpressions(Expressions node);
+  void visitBinaryExpression(BinaryExpression node);
+  void visitUnaryExpression(UnaryExpression node);
 
-  visitIdentifier(Identifier node);
-  visitWildcard(Wildcard node);
-  visitThisOperator(ThisOperator node);
-  visitNegation(Negation node);
+  void visitIdentifier(Identifier node);
+  void visitWildcard(Wildcard node);
+  void visitThisOperator(ThisOperator node);
+  void visitNegation(Negation node);
 
-  visitDartStyleExpression(DartStyleExpression node);
-  visitFontExpression(FontExpression node);
-  visitBoxExpression(BoxExpression node);
-  visitMarginExpression(MarginExpression node);
-  visitBorderExpression(BorderExpression node);
-  visitHeightExpression(HeightExpression node);
-  visitPaddingExpression(PaddingExpression node);
-  visitWidthExpression(WidthExpression node);
+  void visitDartStyleExpression(DartStyleExpression node);
+  void visitFontExpression(FontExpression node);
+  void visitBoxExpression(BoxExpression node);
+  void visitMarginExpression(MarginExpression node);
+  void visitBorderExpression(BorderExpression node);
+  void visitHeightExpression(HeightExpression node);
+  void visitPaddingExpression(PaddingExpression node);
+  void visitWidthExpression(WidthExpression node);
 }
 
 /// Base vistor class for the style sheet AST.
@@ -126,96 +126,96 @@
     }
   }
 
-  visitTree(StyleSheet tree) => visitStyleSheet(tree);
+  void visitTree(StyleSheet tree) => visitStyleSheet(tree);
 
   @override
-  visitStyleSheet(StyleSheet ss) {
+  void visitStyleSheet(StyleSheet ss) {
     _visitNodeList(ss.topLevels);
   }
 
   @override
-  visitNoOp(NoOp node) {}
+  void visitNoOp(NoOp node) {}
 
   @override
-  visitTopLevelProduction(TopLevelProduction node) {}
+  void visitTopLevelProduction(TopLevelProduction node) {}
 
   @override
-  visitDirective(Directive node) {}
+  void visitDirective(Directive node) {}
 
   @override
-  visitCalcTerm(CalcTerm node) {
+  void visitCalcTerm(CalcTerm node) {
     visitLiteralTerm(node);
     visitLiteralTerm(node.expr);
   }
 
   @override
-  visitCssComment(CssComment node) {}
+  void visitCssComment(CssComment node) {}
 
   @override
-  visitCommentDefinition(CommentDefinition node) {}
+  void visitCommentDefinition(CommentDefinition node) {}
 
   @override
-  visitMediaExpression(MediaExpression node) {
+  void visitMediaExpression(MediaExpression node) {
     visitExpressions(node.exprs);
   }
 
   @override
-  visitMediaQuery(MediaQuery node) {
+  void visitMediaQuery(MediaQuery node) {
     for (var mediaExpr in node.expressions) {
       visitMediaExpression(mediaExpr);
     }
   }
 
   @override
-  visitDocumentDirective(DocumentDirective node) {
+  void visitDocumentDirective(DocumentDirective node) {
     _visitNodeList(node.functions);
     _visitNodeList(node.groupRuleBody);
   }
 
   @override
-  visitSupportsDirective(SupportsDirective node) {
+  void visitSupportsDirective(SupportsDirective node) {
     node.condition.visit(this);
     _visitNodeList(node.groupRuleBody);
   }
 
   @override
-  visitSupportsConditionInParens(SupportsConditionInParens node) {
+  void visitSupportsConditionInParens(SupportsConditionInParens node) {
     node.condition.visit(this);
   }
 
   @override
-  visitSupportsNegation(SupportsNegation node) {
+  void visitSupportsNegation(SupportsNegation node) {
     node.condition.visit(this);
   }
 
   @override
-  visitSupportsConjunction(SupportsConjunction node) {
+  void visitSupportsConjunction(SupportsConjunction node) {
     _visitNodeList(node.conditions);
   }
 
   @override
-  visitSupportsDisjunction(SupportsDisjunction node) {
+  void visitSupportsDisjunction(SupportsDisjunction node) {
     _visitNodeList(node.conditions);
   }
 
   @override
-  visitViewportDirective(ViewportDirective node) {
+  void visitViewportDirective(ViewportDirective node) {
     node.declarations.visit(this);
   }
 
   @override
-  visitMediaDirective(MediaDirective node) {
+  void visitMediaDirective(MediaDirective node) {
     _visitNodeList(node.mediaQueries);
     _visitNodeList(node.rules);
   }
 
   @override
-  visitHostDirective(HostDirective node) {
+  void visitHostDirective(HostDirective node) {
     _visitNodeList(node.rules);
   }
 
   @override
-  visitPageDirective(PageDirective node) {
+  void visitPageDirective(PageDirective node) {
     for (var declGroup in node._declsMargin) {
       if (declGroup is MarginGroup) {
         visitMarginGroup(declGroup);
@@ -226,60 +226,60 @@
   }
 
   @override
-  visitCharsetDirective(CharsetDirective node) {}
+  void visitCharsetDirective(CharsetDirective node) {}
 
   @override
-  visitImportDirective(ImportDirective node) {
+  void visitImportDirective(ImportDirective node) {
     for (var mediaQuery in node.mediaQueries) {
       visitMediaQuery(mediaQuery);
     }
   }
 
   @override
-  visitKeyFrameDirective(KeyFrameDirective node) {
+  void visitKeyFrameDirective(KeyFrameDirective node) {
     visitIdentifier(node.name);
     _visitNodeList(node._blocks);
   }
 
   @override
-  visitKeyFrameBlock(KeyFrameBlock node) {
+  void visitKeyFrameBlock(KeyFrameBlock node) {
     visitExpressions(node._blockSelectors);
     visitDeclarationGroup(node._declarations);
   }
 
   @override
-  visitFontFaceDirective(FontFaceDirective node) {
+  void visitFontFaceDirective(FontFaceDirective node) {
     visitDeclarationGroup(node._declarations);
   }
 
   @override
-  visitStyletDirective(StyletDirective node) {
+  void visitStyletDirective(StyletDirective node) {
     _visitNodeList(node.rules);
   }
 
   @override
-  visitNamespaceDirective(NamespaceDirective node) {}
+  void visitNamespaceDirective(NamespaceDirective node) {}
 
   @override
-  visitVarDefinitionDirective(VarDefinitionDirective node) {
+  void visitVarDefinitionDirective(VarDefinitionDirective node) {
     visitVarDefinition(node.def);
   }
 
   @override
-  visitMixinRulesetDirective(MixinRulesetDirective node) {
+  void visitMixinRulesetDirective(MixinRulesetDirective node) {
     _visitNodeList(node.rulesets);
   }
 
   @override
-  visitMixinDefinition(MixinDefinition node) {}
+  void visitMixinDefinition(MixinDefinition node) {}
 
   @override
-  visitMixinDeclarationDirective(MixinDeclarationDirective node) {
+  void visitMixinDeclarationDirective(MixinDeclarationDirective node) {
     visitDeclarationGroup(node.declarations);
   }
 
   @override
-  visitIncludeDirective(IncludeDirective node) {
+  void visitIncludeDirective(IncludeDirective node) {
     for (var index = 0; index < node.args.length; index++) {
       var param = node.args[index];
       _visitNodeList(param);
@@ -287,66 +287,66 @@
   }
 
   @override
-  visitContentDirective(ContentDirective node) {
+  void visitContentDirective(ContentDirective node) {
     // TODO(terry): TBD
   }
 
   @override
-  visitRuleSet(RuleSet node) {
+  void visitRuleSet(RuleSet node) {
     visitSelectorGroup(node._selectorGroup);
     visitDeclarationGroup(node._declarationGroup);
   }
 
   @override
-  visitDeclarationGroup(DeclarationGroup node) {
+  void visitDeclarationGroup(DeclarationGroup node) {
     _visitNodeList(node.declarations);
   }
 
   @override
-  visitMarginGroup(MarginGroup node) => visitDeclarationGroup(node);
+  void visitMarginGroup(MarginGroup node) => visitDeclarationGroup(node);
 
   @override
-  visitDeclaration(Declaration node) {
+  void visitDeclaration(Declaration node) {
     visitIdentifier(node._property);
     if (node._expression != null) node._expression.visit(this);
   }
 
   @override
-  visitVarDefinition(VarDefinition node) {
+  void visitVarDefinition(VarDefinition node) {
     visitIdentifier(node._property);
     if (node._expression != null) node._expression.visit(this);
   }
 
   @override
-  visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node) {
+  void visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node) {
     visitIncludeDirective(node.include);
   }
 
   @override
-  visitExtendDeclaration(ExtendDeclaration node) {
+  void visitExtendDeclaration(ExtendDeclaration node) {
     _visitNodeList(node.selectors);
   }
 
   @override
-  visitSelectorGroup(SelectorGroup node) {
+  void visitSelectorGroup(SelectorGroup node) {
     _visitNodeList(node.selectors);
   }
 
   @override
-  visitSelector(Selector node) {
+  void visitSelector(Selector node) {
     _visitNodeList(node.simpleSelectorSequences);
   }
 
   @override
-  visitSimpleSelectorSequence(SimpleSelectorSequence node) {
+  void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
     node.simpleSelector.visit(this);
   }
 
   @override
-  visitSimpleSelector(SimpleSelector node) => node._name.visit(this);
+  void visitSimpleSelector(SimpleSelector node) => node._name.visit(this);
 
   @override
-  visitNamespaceSelector(NamespaceSelector node) {
+  void visitNamespaceSelector(NamespaceSelector node) {
     if (node._namespace != null) node._namespace.visit(this);
     if (node.nameAsSimpleSelector != null) {
       node.nameAsSimpleSelector.visit(this);
@@ -354,231 +354,232 @@
   }
 
   @override
-  visitElementSelector(ElementSelector node) => visitSimpleSelector(node);
+  void visitElementSelector(ElementSelector node) => visitSimpleSelector(node);
 
   @override
-  visitAttributeSelector(AttributeSelector node) {
+  void visitAttributeSelector(AttributeSelector node) {
     visitSimpleSelector(node);
   }
 
   @override
-  visitIdSelector(IdSelector node) => visitSimpleSelector(node);
+  void visitIdSelector(IdSelector node) => visitSimpleSelector(node);
 
   @override
-  visitClassSelector(ClassSelector node) => visitSimpleSelector(node);
+  void visitClassSelector(ClassSelector node) => visitSimpleSelector(node);
 
   @override
-  visitPseudoClassSelector(PseudoClassSelector node) =>
+  void visitPseudoClassSelector(PseudoClassSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  visitPseudoElementSelector(PseudoElementSelector node) =>
+  void visitPseudoElementSelector(PseudoElementSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node) =>
+  void visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node) =>
+  void visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  visitNegationSelector(NegationSelector node) => visitSimpleSelector(node);
+  void visitNegationSelector(NegationSelector node) =>
+      visitSimpleSelector(node);
 
   @override
-  visitSelectorExpression(SelectorExpression node) {
+  void visitSelectorExpression(SelectorExpression node) {
     _visitNodeList(node.expressions);
   }
 
   @override
-  visitUnicodeRangeTerm(UnicodeRangeTerm node) {}
+  void visitUnicodeRangeTerm(UnicodeRangeTerm node) {}
 
   @override
-  visitLiteralTerm(LiteralTerm node) {}
+  void visitLiteralTerm(LiteralTerm node) {}
 
   @override
-  visitHexColorTerm(HexColorTerm node) {}
+  void visitHexColorTerm(HexColorTerm node) {}
 
   @override
-  visitNumberTerm(NumberTerm node) {}
+  void visitNumberTerm(NumberTerm node) {}
 
   @override
-  visitUnitTerm(UnitTerm node) {}
+  void visitUnitTerm(UnitTerm node) {}
 
   @override
-  visitLengthTerm(LengthTerm node) {
+  void visitLengthTerm(LengthTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitPercentageTerm(PercentageTerm node) {
+  void visitPercentageTerm(PercentageTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  visitEmTerm(EmTerm node) {
+  void visitEmTerm(EmTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  visitExTerm(ExTerm node) {
+  void visitExTerm(ExTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  visitAngleTerm(AngleTerm node) {
+  void visitAngleTerm(AngleTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitTimeTerm(TimeTerm node) {
+  void visitTimeTerm(TimeTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitFreqTerm(FreqTerm node) {
+  void visitFreqTerm(FreqTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitFractionTerm(FractionTerm node) {
+  void visitFractionTerm(FractionTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  visitUriTerm(UriTerm node) {
+  void visitUriTerm(UriTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  visitResolutionTerm(ResolutionTerm node) {
+  void visitResolutionTerm(ResolutionTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitChTerm(ChTerm node) {
+  void visitChTerm(ChTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitRemTerm(RemTerm node) {
+  void visitRemTerm(RemTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitViewportTerm(ViewportTerm node) {
+  void visitViewportTerm(ViewportTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  visitFunctionTerm(FunctionTerm node) {
+  void visitFunctionTerm(FunctionTerm node) {
     visitLiteralTerm(node);
     visitExpressions(node._params);
   }
 
   @override
-  visitGroupTerm(GroupTerm node) {
+  void visitGroupTerm(GroupTerm node) {
     for (var term in node._terms) {
       term.visit(this);
     }
   }
 
   @override
-  visitItemTerm(ItemTerm node) {
+  void visitItemTerm(ItemTerm node) {
     visitNumberTerm(node);
   }
 
   @override
-  visitIE8Term(IE8Term node) {}
+  void visitIE8Term(IE8Term node) {}
 
   @override
-  visitOperatorSlash(OperatorSlash node) {}
+  void visitOperatorSlash(OperatorSlash node) {}
 
   @override
-  visitOperatorComma(OperatorComma node) {}
+  void visitOperatorComma(OperatorComma node) {}
 
   @override
-  visitOperatorPlus(OperatorPlus node) {}
+  void visitOperatorPlus(OperatorPlus node) {}
 
   @override
-  visitOperatorMinus(OperatorMinus node) {}
+  void visitOperatorMinus(OperatorMinus node) {}
 
   @override
-  visitVarUsage(VarUsage node) {
+  void visitVarUsage(VarUsage node) {
     _visitNodeList(node.defaultValues);
   }
 
   @override
-  visitExpressions(Expressions node) {
+  void visitExpressions(Expressions node) {
     _visitNodeList(node.expressions);
   }
 
   @override
-  visitBinaryExpression(BinaryExpression node) {
+  void visitBinaryExpression(BinaryExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitUnaryExpression(UnaryExpression node) {
+  void visitUnaryExpression(UnaryExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitIdentifier(Identifier node) {}
+  void visitIdentifier(Identifier node) {}
 
   @override
-  visitWildcard(Wildcard node) {}
+  void visitWildcard(Wildcard node) {}
 
   @override
-  visitThisOperator(ThisOperator node) {}
+  void visitThisOperator(ThisOperator node) {}
 
   @override
-  visitNegation(Negation node) {}
+  void visitNegation(Negation node) {}
 
   @override
-  visitDartStyleExpression(DartStyleExpression node) {}
+  void visitDartStyleExpression(DartStyleExpression node) {}
 
   @override
-  visitFontExpression(FontExpression node) {
+  void visitFontExpression(FontExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitBoxExpression(BoxExpression node) {
+  void visitBoxExpression(BoxExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitMarginExpression(MarginExpression node) {
+  void visitMarginExpression(MarginExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitBorderExpression(BorderExpression node) {
+  void visitBorderExpression(BorderExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitHeightExpression(HeightExpression node) {
+  void visitHeightExpression(HeightExpression node) {
     // TODO(terry): TB
     throw UnimplementedError();
   }
 
   @override
-  visitPaddingExpression(PaddingExpression node) {
+  void visitPaddingExpression(PaddingExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  visitWidthExpression(WidthExpression node) {
+  void visitWidthExpression(WidthExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
diff --git a/pubspec.yaml b/pubspec.yaml
index ae2288d..207348d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,8 +1,7 @@
 name: csslib
-version: 0.16.1
+version: 0.16.2-dev
 
 description: A library for parsing CSS.
-author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/csslib
 
 environment:
diff --git a/test/big_1_test.dart b/test/big_1_test.dart
index 5df5b45..0001777 100644
--- a/test/big_1_test.dart
+++ b/test/big_1_test.dart
@@ -8,7 +8,7 @@
 import 'package:test/test.dart';
 import 'testing.dart';
 
-compilePolyfillAndValidate(String input, String generated) {
+void compilePolyfillAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = polyFillCompileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
diff --git a/test/declaration_test.dart b/test/declaration_test.dart
index d943b08..709aa7b 100644
--- a/test/declaration_test.dart
+++ b/test/declaration_test.dart
@@ -20,7 +20,7 @@
 
 void testSimpleTerms() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 @ import url("test.css");
 .foo {
   background-color: #191919;
@@ -34,7 +34,7 @@
   length: 1.2in;
   -web-stuff: -10Px;
 }''';
-  final String generated = r'''
+  final generated = r'''
 @import "test.css";
 .foo {
   background-color: #191919;
@@ -55,11 +55,11 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated);
 
-  final String input2 = r'''
+  final input2 = r'''
 * {
   border-color: green;
 }''';
-  final String generated2 = r'''
+  final generated2 = r'''
 * {
   border-color: #008000;
 }''';
@@ -86,7 +86,7 @@
 /// no quotes.  Hex values with # and letters, and functions (rgba, url, etc.)
 void testDeclarations() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 .more {
   color: white;
   color: black;
@@ -100,7 +100,7 @@
   color: rgba(10,20,255);  <!-- test CDO/CDC  -->
   color: #123aef;   /* hex # part integer and part identifier */
 }''';
-  final String generated = r'''
+  final generated = r'''
 .more {
   color: #fff;
   color: #000;
@@ -124,7 +124,7 @@
 
 void testIdentifiers() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 #da {
   height: 100px;
 }
@@ -133,7 +133,7 @@
   color: #ff00cc;
 }
 ''';
-  final String generated = r'''
+  final generated = r'''
 #da {
   height: 100px;
 }
@@ -151,7 +151,7 @@
 
 void testComposites() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 .xyzzy {
   border: 10px 80px 90px 100px;
   width: 99%;
@@ -161,7 +161,7 @@
     -webkit-transform: translate3d(0, 0, 0) scale(1.0);
   }
 }''';
-  final String generated = r'''
+  final generated = r'''
 .xyzzy {
   border: 10px 80px 90px 100px;
   width: 99%;
@@ -180,7 +180,7 @@
 
 void testUnits() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 #id-1 {
   transition: color 0.4s;
   animation-duration: 500ms;
@@ -218,7 +218,7 @@
 }
 ''';
 
-  final String generated = r'''
+  final generated = r'''
 #id-1 {
   transition: color 0.4s;
   animation-duration: 500ms;
@@ -264,7 +264,7 @@
 
 void testUnicode() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 .toggle:after {
   content: '✔';
   line-height: 43px;
@@ -274,7 +274,7 @@
 }
 ''';
 
-  final String generated = r'''
+  final generated = r'''
 .toggle:after {
   content: '✔';
   line-height: 43px;
@@ -292,7 +292,7 @@
 
 void testNewerCss() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 @media screen,print {
   .foobar_screen {
     width: 10px;
@@ -310,7 +310,7 @@
 @charset "ISO-8859-1";
 @charset 'ASCII';''';
 
-  final String generated = r'''
+  final generated = r'''
 @media screen, print {
 .foobar_screen {
   width: 10px;
@@ -683,13 +683,13 @@
 void testFontFace() {
   var errors = <Message>[];
 
-  final String input = '''
+  final input = '''
 @font-face {
   font-family: BBCBengali;
   src: url(fonts/BBCBengali.ttf) format("opentype");
   unicode-range: U+0A-FF, U+980-9FF, U+????, U+3???;
 }''';
-  final String generated = '''@font-face  {
+  final generated = '''@font-face  {
   font-family: BBCBengali;
   src: url("fonts/BBCBengali.ttf") format("opentype");
   unicode-range: U+0A-FF, U+980-9FF, U+????, U+3???;
@@ -700,13 +700,13 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated);
 
-  final String input1 = '''
+  final input1 = '''
 @font-face {
   font-family: Gentium;
   src: url(http://example.com/fonts/Gentium.ttf);
   src: url(http://example.com/fonts/Gentium.ttf);
 }''';
-  final String generated1 = '''@font-face  {
+  final generated1 = '''@font-face  {
   font-family: Gentium;
   src: url("http://example.com/fonts/Gentium.ttf");
   src: url("http://example.com/fonts/Gentium.ttf");
@@ -718,13 +718,13 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated1);
 
-  final String input2 = '''
+  final input2 = '''
 @font-face {
 src: url(ideal-sans-serif.woff) format("woff"),
      url(basic-sans-serif.ttf) format("opentype"),
      local(Gentium Bold);
 }''';
-  final String generated2 = '@font-face  {\n'
+  final generated2 = '@font-face  {\n'
       '  src: url("ideal-sans-serif.woff") '
       'format("woff"), url("basic-sans-serif.ttf") '
       'format("opentype"), local(Gentium Bold);\n}';
@@ -735,14 +735,14 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated2);
 
-  final String input3 = '''@font-face {
+  final input3 = '''@font-face {
   font-family: MyGentium Text Ornaments;
   src: local(Gentium Bold),   /* full font name */
        local(Gentium-Bold),   /* Postscript name */
        url(GentiumBold.ttf);  /* otherwise, download it */
   font-weight: bold;
 }''';
-  final String generated3 = '''@font-face  {
+  final generated3 = '''@font-face  {
   font-family: MyGentium Text Ornaments;
   src: local(Gentium Bold), local(Gentium-Bold), url("GentiumBold.ttf");
   font-weight: bold;
@@ -754,13 +754,13 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated3);
 
-  final String input4 = '''
+  final input4 = '''
 @font-face {
   font-family: STIXGeneral;
   src: local(STIXGeneral), url(/stixfonts/STIXGeneral.otf);
   unicode-range: U+000-49F, U+2000-27FF, U+2900-2BFF, U+1D400-1D7FF;
 }''';
-  final String generated4 = '''@font-face  {
+  final generated4 = '''@font-face  {
   font-family: STIXGeneral;
   src: local(STIXGeneral), url("/stixfonts/STIXGeneral.otf");
   unicode-range: U+000-49F, U+2000-27FF, U+2900-2BFF, U+1D400-1D7FF;
@@ -774,7 +774,7 @@
 
 void testCssFile() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 @import 'simple.css'
 @import "test.css" print
 @import url(test.css) screen, print
@@ -809,7 +809,7 @@
 }
 ''';
 
-  final String generated = '@import "simple.css"; '
+  final generated = '@import "simple.css"; '
       '@import "test.css" print; '
       '@import "test.css" screen, print; '
       '@import "http://google.com/maps/maps.css";\n'
@@ -847,7 +847,7 @@
   var errors = <Message>[];
 
   // Check !import compactly emitted.
-  final String input = r'''
+  final input = r'''
 div {
   color: green !important;
   background: red blue green;
@@ -876,8 +876,7 @@
   color: rgba(0, 0, 0, 0.2);
 }
 ''';
-  final String generated =
-      'div{color:green!important;background:red blue green}'
+  final generated = 'div{color:green!important;background:red blue green}'
       '.foo p[bar]{color:blue}'
       '@page{@top-left{color:red}}'
       '@page:first{}'
@@ -893,8 +892,8 @@
   expect(compactOuptut(stylesheet), generated);
 
   // Check namespace directive compactly emitted.
-  final String input2 = '@namespace a url(http://www.example.org/a);';
-  final String generated2 = '@namespace a url(http://www.example.org/a);';
+  final input2 = '@namespace a url(http://www.example.org/a);';
+  final generated2 = '@namespace a url(http://www.example.org/a);';
 
   var stylesheet2 = parseCss(input2, errors: errors..clear());
 
@@ -906,7 +905,7 @@
 void testNotSelectors() {
   var errors = <Message>[];
 
-  final String input = r'''
+  final input = r'''
 .details:not(.open-details) x-element,
 .details:not(.open-details) .summary {
   overflow: hidden;
@@ -951,7 +950,7 @@
 
 *:not(:not([disabled])) { color: blue; }
 ''';
-  final String generated = r'''
+  final generated = r'''
 .details:not(.open-details) x-element, .details:not(.open-details) .summary {
   overflow: hidden;
 }
@@ -995,11 +994,11 @@
 
 void testIE() {
   var errors = <Message>[];
-  final String input = '.test {\n'
+  final input = '.test {\n'
       '  filter: progid:DXImageTransform.Microsoft.gradient'
       "(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670');\n"
       '}';
-  final String generated = '.test {\n'
+  final generated = '.test {\n'
       '  filter: progid:DXImageTransform.Microsoft.gradient'
       "(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670');\n"
       '}';
@@ -1010,13 +1009,13 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated);
 
-  final String input2 = '.test {\n'
+  final input2 = '.test {\n'
       '  filter: progid:DXImageTransform.Microsoft.gradient'
       "(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670')\n"
       '        progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n'
       '}';
 
-  final String generated2 = '.test {\n'
+  final generated2 = '.test {\n'
       '  filter: progid:DXImageTransform.Microsoft.gradient'
       "(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670')\n"
       '         progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n'
@@ -1028,7 +1027,7 @@
   expect(errors.isEmpty, true, reason: errors.toString());
   expect(prettyPrint(stylesheet), generated2);
 
-  final String input3 = '''
+  final input3 = '''
 div {
   filter: alpha(opacity=80);          /* IE7 and under */
   -ms-filter: "Alpha(Opacity=40)";    /* IE8 and newer */
@@ -1042,7 +1041,7 @@
       Phase=220, Strength=10);
 }
 ''';
-  final String generated3 = 'div {\n  filter: alpha(opacity=80);\n'
+  final generated3 = 'div {\n  filter: alpha(opacity=80);\n'
       '  -ms-filter: "Alpha(Opacity=40)";\n'
       '  Filter: Blur(Add = 0, Direction = 225, Strength = 10);\n'
       '  Filter: FlipV;\n  Filter: Gray;\n'
@@ -1354,7 +1353,7 @@
 
 void selectorWithCalcs() {
   var errors = <Message>[];
-  final String input = r'''
+  final input = r'''
 .foo {
   width: calc(1em + 5 * 2em);
   height: calc(1px + 2%) !important;
@@ -1362,7 +1361,7 @@
   border: calc(5px + 1em) 0px 1px calc(10 + 20 + 1px);
   margin: 25px calc(50px + (100% / (3 - 1em) - 20%)) calc(10px + 10 * 20) calc(100% - 10px);
 }''';
-  final String generated = r'''
+  final generated = r'''
 .foo {
   width: calc(1em + 5 * 2em);
   height: calc(1px + 2%) !important;
diff --git a/test/error_test.dart b/test/error_test.dart
index f4ec960..d242176 100644
--- a/test/error_test.dart
+++ b/test/error_test.dart
@@ -248,7 +248,7 @@
 
 void testBadUnicode() {
   var errors = <Message>[];
-  final String input = '''
+  final input = '''
 @font-face {
   src: url(fonts/BBCBengali.ttf) format("opentype");
   unicode-range: U+400-200;
@@ -266,7 +266,7 @@
       '  │                    ^^^^^^^\n'
       '  ╵');
 
-  final String input2 = '''
+  final input2 = '''
 @font-face {
   src: url(fonts/BBCBengali.ttf) format("opentype");
   unicode-range: U+12FFFF;
@@ -288,7 +288,7 @@
   var errors = <Message>[];
 
   // Test for bad declaration in a nested rule.
-  final String input = '''
+  final input = '''
 div {
   width: 20px;
   span + ul { color: blue; }
@@ -309,7 +309,7 @@
   expect(errorMessage.span.text, '#ffghghgh');
 
   // Test for bad selector syntax.
-  final String input2 = '''
+  final input2 = '''
 div {
   span + ul #aaaa > (3333)  {
     color: #ffghghgh;
@@ -347,7 +347,7 @@
   expect(errorMessage.span.text, '(');
 
   // Test for missing close braces and bad declaration.
-  final String input3 = '''
+  final input3 = '''
 div {
   span {
     color: #green;
diff --git a/test/extend_test.dart b/test/extend_test.dart
index ed5904f..38e0ea0 100644
--- a/test/extend_test.dart
+++ b/test/extend_test.dart
@@ -9,7 +9,7 @@
 
 import 'testing.dart';
 
-compileAndValidate(String input, String generated) {
+void compileAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = compileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
diff --git a/test/mixin_test.dart b/test/mixin_test.dart
index dec6651..f562f38 100644
--- a/test/mixin_test.dart
+++ b/test/mixin_test.dart
@@ -9,7 +9,7 @@
 
 import 'testing.dart';
 
-compileAndValidate(String input, String generated) {
+void compileAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = compileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
@@ -17,7 +17,7 @@
   expect(prettyPrint(stylesheet), generated);
 }
 
-compilePolyfillAndValidate(String input, String generated) {
+void compilePolyfillAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = polyFillCompileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
diff --git a/test/nested_test.dart b/test/nested_test.dart
index b8ef9eb..b096fc2 100644
--- a/test/nested_test.dart
+++ b/test/nested_test.dart
@@ -9,7 +9,7 @@
 
 import 'testing.dart';
 
-compileAndValidate(String input, String generated) {
+void compileAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = compileCss(input, errors: errors, opts: simpleOptions);
   expect(stylesheet != null, true);
@@ -17,7 +17,7 @@
   expect(prettyPrint(stylesheet), generated);
 }
 
-selectorVariations() {
+void selectorVariations() {
   final input1 = r'''html { color: red; }''';
   final generated1 = r'''html {
   color: #f00;
@@ -479,7 +479,7 @@
   compileAndValidate(input2, generated2);
 }
 
-variationsThis() {
+void variationsThis() {
   final input1 = r'''
 .textLink {
   a {
@@ -590,7 +590,7 @@
   compileAndValidate(input10, generated10);
 }
 
-thisCombinator() {
+void thisCombinator() {
   var input = r'''
 .btn {
   color: red;
diff --git a/test/var_test.dart b/test/var_test.dart
index db03b25..1ebd975 100644
--- a/test/var_test.dart
+++ b/test/var_test.dart
@@ -9,7 +9,7 @@
 
 import 'testing.dart';
 
-compileAndValidate(String input, String generated) {
+void compileAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = compileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
@@ -17,7 +17,7 @@
   expect(prettyPrint(stylesheet), generated);
 }
 
-compilePolyfillAndValidate(String input, String generated) {
+void compilePolyfillAndValidate(String input, String generated) {
   var errors = <Message>[];
   var stylesheet = polyFillCompileCss(input, errors: errors, opts: options);
   expect(stylesheet != null, true);
@@ -496,7 +496,7 @@
   expect(prettyPrint(stylesheet), generatedPolyfill);
 }
 
-parserVar() {
+void parserVar() {
   final input = '''
 :root {
   var-color-background: red;
@@ -656,7 +656,7 @@
   compilePolyfillAndValidate(input, generatedPolyfill);
 }
 
-testVar() {
+void testVar() {
   final errors = <Message>[];
   final input = '''
 @color-background: red;
@@ -711,7 +711,7 @@
   compileAndValidate(input2, generated2);
 }
 
-testLess() {
+void testLess() {
   final errors = <Message>[];
   final input = '''
 @color-background: red;