Use explicit dynamic over void return types (#99)

Some implementations are relying on passing values through the visit
methods. Make return types explicitly `dynamic` to match their implicit
types from before.

This highlights that extending the `Visitor` class and expecting to return
useful values is inherently risky. Not only will usages fall through to dynamic
and have no static errors for things like typos, there are also places where
the values will be silently discarded by the implementation in` Visitor`.
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index 81f26bf..b050442 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -17,7 +17,7 @@
   Identifier clone() => Identifier(name, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitIdentifier(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitIdentifier(this);
 
   @override
   String toString() => name;
@@ -28,7 +28,7 @@
   @override
   Wildcard clone() => Wildcard(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitWildcard(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitWildcard(this);
 
   String get name => '*';
 }
@@ -38,7 +38,7 @@
   @override
   ThisOperator clone() => ThisOperator(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitThisOperator(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitThisOperator(this);
 
   String get name => '&';
 }
@@ -48,7 +48,7 @@
   @override
   Negation clone() => Negation(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitNegation(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNegation(this);
 
   String get name => 'not';
 }
@@ -65,7 +65,7 @@
   @override
   CalcTerm clone() => CalcTerm(value, text, expr.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitCalcTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitCalcTerm(this);
 
   @override
   String toString() => '$text($expr)';
@@ -79,7 +79,7 @@
   @override
   CssComment clone() => CssComment(comment, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitCssComment(this);
+  dynamic 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
-  void visit(VisitorBase visitor) => visitor.visitCommentDefinition(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitCommentDefinition(this);
 }
 
 class SelectorGroup extends TreeNode {
@@ -100,7 +100,7 @@
   SelectorGroup clone() => SelectorGroup(selectors, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSelectorGroup(this);
 }
 
 class Selector extends TreeNode {
@@ -121,7 +121,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSelector(this);
 }
 
 class SimpleSelectorSequence extends TreeNode {
@@ -161,7 +161,8 @@
       SimpleSelectorSequence(simpleSelector, span, combinator);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSimpleSelectorSequence(this);
+  dynamic visit(VisitorBase visitor) =>
+      visitor.visitSimpleSelectorSequence(this);
 
   @override
   String toString() => simpleSelector.name;
@@ -181,14 +182,14 @@
   bool get isThis => _name is ThisOperator;
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSimpleSelector(this);
 }
 
 // element name
 class ElementSelector extends SimpleSelector {
   ElementSelector(name, SourceSpan span) : super(name, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitElementSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitElementSelector(this);
 
   @override
   ElementSelector clone() => ElementSelector(_name, span);
@@ -215,7 +216,7 @@
   NamespaceSelector clone() => NamespaceSelector(_namespace, '', span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitNamespaceSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNamespaceSelector(this);
 
   @override
   String toString() => '$namespace|${nameAsSimpleSelector.name}';
@@ -286,7 +287,7 @@
   AttributeSelector clone() => AttributeSelector(_name, _op, value, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitAttributeSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitAttributeSelector(this);
 
   @override
   String toString() => '[$name${matchOperator()}${valueToString()}]';
@@ -298,7 +299,7 @@
   @override
   IdSelector clone() => IdSelector(_name, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitIdSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitIdSelector(this);
 
   @override
   String toString() => '#$_name';
@@ -310,7 +311,7 @@
   @override
   ClassSelector clone() => ClassSelector(_name, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitClassSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitClassSelector(this);
 
   @override
   String toString() => '.$_name';
@@ -320,7 +321,7 @@
 class PseudoClassSelector extends SimpleSelector {
   PseudoClassSelector(Identifier name, SourceSpan span) : super(name, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitPseudoClassSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitPseudoClassSelector(this);
 
   @override
   PseudoClassSelector clone() => PseudoClassSelector(_name, span);
@@ -338,7 +339,8 @@
       {this.isLegacy = false})
       : super(name, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitPseudoElementSelector(this);
+  dynamic visit(VisitorBase visitor) =>
+      visitor.visitPseudoElementSelector(this);
 
   @override
   PseudoElementSelector clone() => PseudoElementSelector(_name, span);
@@ -363,7 +365,7 @@
   SelectorExpression get expression => _argument as SelectorExpression;
 
   @override
-  void visit(VisitorBase visitor) =>
+  dynamic visit(VisitorBase visitor) =>
       visitor.visitPseudoClassFunctionSelector(this);
 }
 
@@ -380,7 +382,7 @@
       PseudoElementFunctionSelector(_name, expression, span);
 
   @override
-  void visit(VisitorBase visitor) =>
+  dynamic visit(VisitorBase visitor) =>
       visitor.visitPseudoElementFunctionSelector(this);
 }
 
@@ -395,7 +397,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSelectorExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSelectorExpression(this);
 }
 
 // :NOT(negation_arg)
@@ -409,7 +411,7 @@
   NegationSelector clone() => NegationSelector(negationArg, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNegationSelector(this);
 }
 
 class NoOp extends TreeNode {
@@ -419,7 +421,7 @@
   NoOp clone() => NoOp();
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitNoOp(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNoOp(this);
 }
 
 class StyleSheet extends TreeNode {
@@ -442,7 +444,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitStyleSheet(this);
 }
 
 class TopLevelProduction extends TreeNode {
@@ -450,7 +452,7 @@
   @override
   TopLevelProduction clone() => TopLevelProduction(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitTopLevelProduction(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitTopLevelProduction(this);
 }
 
 class RuleSet extends TopLevelProduction {
@@ -471,7 +473,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitRuleSet(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitRuleSet(this);
 }
 
 class Directive extends TreeNode {
@@ -483,7 +485,7 @@
   @override
   Directive clone() => Directive(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitDirective(this);
 }
 
 class DocumentDirective extends Directive {
@@ -507,7 +509,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitDocumentDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitDocumentDirective(this);
 }
 
 class SupportsDirective extends Directive {
@@ -528,7 +530,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSupportsDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSupportsDirective(this);
 }
 
 abstract class SupportsCondition extends TreeNode {
@@ -552,7 +554,7 @@
       SupportsConditionInParens(condition.clone(), span);
 
   @override
-  void visit(VisitorBase visitor) =>
+  dynamic visit(VisitorBase visitor) =>
       visitor.visitSupportsConditionInParens(this);
 }
 
@@ -565,7 +567,7 @@
   SupportsNegation clone() => SupportsNegation(condition.clone(), span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSupportsNegation(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSupportsNegation(this);
 }
 
 class SupportsConjunction extends SupportsCondition {
@@ -583,7 +585,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSupportsConjunction(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSupportsConjunction(this);
 }
 
 class SupportsDisjunction extends SupportsCondition {
@@ -601,7 +603,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitSupportsDisjunction(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitSupportsDisjunction(this);
 }
 
 class ViewportDirective extends Directive {
@@ -616,7 +618,7 @@
       ViewportDirective(name, declarations.clone(), span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitViewportDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitViewportDirective(this);
 }
 
 class ImportDirective extends Directive {
@@ -639,7 +641,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitImportDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitImportDirective(this);
 }
 
 /// MediaExpression grammar:
@@ -663,7 +665,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMediaExpression(this);
 }
 
 /// MediaQuery grammar:
@@ -703,7 +705,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMediaQuery(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMediaQuery(this);
 }
 
 class MediaDirective extends Directive {
@@ -726,7 +728,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMediaDirective(this);
 }
 
 class HostDirective extends Directive {
@@ -744,7 +746,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitHostDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitHostDirective(this);
 }
 
 class PageDirective extends Directive {
@@ -766,7 +768,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitPageDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitPageDirective(this);
 
   bool get hasIdent => _ident != null && _ident.isNotEmpty;
   bool get hasPseudoPage => _pseudoPage != null && _pseudoPage.isNotEmpty;
@@ -779,7 +781,7 @@
   @override
   CharsetDirective clone() => CharsetDirective(charEncoding, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitCharsetDirective(this);
 }
 
 class KeyFrameDirective extends Directive {
@@ -821,7 +823,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
 }
 
 class KeyFrameBlock extends Expression {
@@ -835,7 +837,7 @@
   KeyFrameBlock clone() =>
       KeyFrameBlock(_blockSelectors.clone(), _declarations.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitKeyFrameBlock(this);
 }
 
 class FontFaceDirective extends Directive {
@@ -846,7 +848,7 @@
   @override
   FontFaceDirective clone() => FontFaceDirective(_declarations.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitFontFaceDirective(this);
 }
 
 class StyletDirective extends Directive {
@@ -871,7 +873,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitStyletDirective(this);
 }
 
 class NamespaceDirective extends Directive {
@@ -887,7 +889,7 @@
   NamespaceDirective clone() => NamespaceDirective(_prefix, _uri, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNamespaceDirective(this);
 
   String get prefix => _prefix.isNotEmpty ? '$_prefix ' : '';
 }
@@ -902,7 +904,8 @@
   VarDefinitionDirective clone() => VarDefinitionDirective(def.clone(), span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitVarDefinitionDirective(this);
+  dynamic visit(VisitorBase visitor) =>
+      visitor.visitVarDefinitionDirective(this);
 }
 
 class MixinDefinition extends Directive {
@@ -923,7 +926,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMixinDefinition(this);
 }
 
 /// Support a Sass @mixin. See http://sass-lang.com for description.
@@ -949,7 +952,8 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMixinRulesetDirective(this);
+  dynamic visit(VisitorBase visitor) =>
+      visitor.visitMixinRulesetDirective(this);
 }
 
 class MixinDeclarationDirective extends MixinDefinition {
@@ -970,7 +974,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) =>
+  dynamic visit(VisitorBase visitor) =>
       visitor.visitMixinDeclarationDirective(this);
 }
 
@@ -991,7 +995,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitIncludeDirective(this);
 }
 
 /// To support Sass @content.
@@ -999,7 +1003,7 @@
   ContentDirective(SourceSpan span) : super(span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitContentDirective(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitContentDirective(this);
 }
 
 class Declaration extends TreeNode {
@@ -1035,7 +1039,7 @@
           important: important);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitDeclaration(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitDeclaration(this);
 }
 
 // TODO(terry): Consider 2 kinds of VarDefinitions static at top-level and
@@ -1057,7 +1061,7 @@
       _property.clone(), expression != null ? expression.clone() : null, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitVarDefinition(this);
 }
 
 /// Node for usage of @include mixin[(args,...)] found in a declaration group
@@ -1077,7 +1081,7 @@
       IncludeMixinAtDeclaration(include.clone(), span);
 
   @override
-  void visit(VisitorBase visitor) =>
+  dynamic visit(VisitorBase visitor) =>
       visitor.visitIncludeMixinAtDeclaration(this);
 }
 
@@ -1094,7 +1098,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitExtendDeclaration(this);
 }
 
 class DeclarationGroup extends TreeNode {
@@ -1110,7 +1114,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitDeclarationGroup(this);
 }
 
 class MarginGroup extends DeclarationGroup {
@@ -1122,7 +1126,7 @@
   MarginGroup clone() =>
       MarginGroup(margin_sym, super.clone().declarations, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMarginGroup(this);
 }
 
 class VarUsage extends Expression {
@@ -1141,7 +1145,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitVarUsage(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitVarUsage(this);
 }
 
 class OperatorSlash extends Expression {
@@ -1149,7 +1153,7 @@
   @override
   OperatorSlash clone() => OperatorSlash(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitOperatorSlash(this);
 }
 
 class OperatorComma extends Expression {
@@ -1157,7 +1161,7 @@
   @override
   OperatorComma clone() => OperatorComma(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitOperatorComma(this);
 }
 
 class OperatorPlus extends Expression {
@@ -1165,7 +1169,7 @@
   @override
   OperatorPlus clone() => OperatorPlus(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitOperatorPlus(this);
 }
 
 class OperatorMinus extends Expression {
@@ -1173,7 +1177,7 @@
   @override
   OperatorMinus clone() => OperatorMinus(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitOperatorMinus(this);
 }
 
 class UnicodeRangeTerm extends Expression {
@@ -1188,7 +1192,7 @@
   UnicodeRangeTerm clone() => UnicodeRangeTerm(first, second, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitUnicodeRangeTerm(this);
 }
 
 class LiteralTerm extends Expression {
@@ -1204,7 +1208,7 @@
   LiteralTerm clone() => LiteralTerm(value, text, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitLiteralTerm(this);
 }
 
 class NumberTerm extends LiteralTerm {
@@ -1212,7 +1216,7 @@
   @override
   NumberTerm clone() => NumberTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitNumberTerm(this);
 }
 
 class UnitTerm extends LiteralTerm {
@@ -1224,7 +1228,7 @@
   UnitTerm clone() => UnitTerm(value, text, span, unit);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitUnitTerm(this);
 
   String unitToString() => TokenKind.unitToString(unit);
 
@@ -1246,7 +1250,7 @@
   @override
   LengthTerm clone() => LengthTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitLengthTerm(this);
 }
 
 class PercentageTerm extends LiteralTerm {
@@ -1254,7 +1258,7 @@
   @override
   PercentageTerm clone() => PercentageTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitPercentageTerm(this);
 }
 
 class EmTerm extends LiteralTerm {
@@ -1262,7 +1266,7 @@
   @override
   EmTerm clone() => EmTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitEmTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitEmTerm(this);
 }
 
 class ExTerm extends LiteralTerm {
@@ -1270,7 +1274,7 @@
   @override
   ExTerm clone() => ExTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitExTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitExTerm(this);
 }
 
 class AngleTerm extends UnitTerm {
@@ -1286,7 +1290,7 @@
   @override
   AngleTerm clone() => AngleTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitAngleTerm(this);
 }
 
 class TimeTerm extends UnitTerm {
@@ -1301,7 +1305,7 @@
   @override
   TimeTerm clone() => TimeTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitTimeTerm(this);
 }
 
 class FreqTerm extends UnitTerm {
@@ -1314,7 +1318,7 @@
   @override
   FreqTerm clone() => FreqTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitFreqTerm(this);
 }
 
 class FractionTerm extends LiteralTerm {
@@ -1323,7 +1327,7 @@
   @override
   FractionTerm clone() => FractionTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitFractionTerm(this);
 }
 
 class UriTerm extends LiteralTerm {
@@ -1332,7 +1336,7 @@
   @override
   UriTerm clone() => UriTerm(value, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitUriTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitUriTerm(this);
 }
 
 class ResolutionTerm extends UnitTerm {
@@ -1347,7 +1351,7 @@
   @override
   ResolutionTerm clone() => ResolutionTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitResolutionTerm(this);
 }
 
 class ChTerm extends UnitTerm {
@@ -1360,7 +1364,7 @@
   @override
   ChTerm clone() => ChTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitChTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitChTerm(this);
 }
 
 class RemTerm extends UnitTerm {
@@ -1373,7 +1377,7 @@
   @override
   RemTerm clone() => RemTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitRemTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitRemTerm(this);
 }
 
 class ViewportTerm extends UnitTerm {
@@ -1389,7 +1393,7 @@
   @override
   ViewportTerm clone() => ViewportTerm(value, text, span, unit);
   @override
-  void visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitViewportTerm(this);
 }
 
 /// Type to signal a bad hex value for HexColorTerm.value.
@@ -1401,7 +1405,7 @@
   @override
   HexColorTerm clone() => HexColorTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitHexColorTerm(this);
 }
 
 class FunctionTerm extends LiteralTerm {
@@ -1413,7 +1417,7 @@
   @override
   FunctionTerm clone() => FunctionTerm(value, text, _params.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitFunctionTerm(this);
 }
 
 /// A "\9" was encountered at the end of the expression and before a semi-colon.
@@ -1424,7 +1428,7 @@
   @override
   IE8Term clone() => IE8Term(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitIE8Term(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitIE8Term(this);
 }
 
 class GroupTerm extends Expression {
@@ -1441,7 +1445,7 @@
   @override
   GroupTerm clone() => GroupTerm(span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitGroupTerm(this);
 }
 
 class ItemTerm extends NumberTerm {
@@ -1450,7 +1454,7 @@
   @override
   ItemTerm clone() => ItemTerm(value, text, span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitItemTerm(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitItemTerm(this);
 }
 
 class Expressions extends Expression {
@@ -1472,7 +1476,7 @@
   }
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitExpressions(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitExpressions(this);
 }
 
 class BinaryExpression extends Expression {
@@ -1485,7 +1489,7 @@
   @override
   BinaryExpression clone() => BinaryExpression(op, x.clone(), y.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitBinaryExpression(this);
 }
 
 class UnaryExpression extends Expression {
@@ -1497,7 +1501,7 @@
   @override
   UnaryExpression clone() => UnaryExpression(op, self.clone(), span);
   @override
-  void visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitUnaryExpression(this);
 }
 
 abstract class DartStyleExpression extends TreeNode {
@@ -1531,7 +1535,7 @@
   bool isSame(DartStyleExpression other) => _styleType == other._styleType;
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitDartStyleExpression(this);
 }
 
 class FontExpression extends DartStyleExpression {
@@ -1583,7 +1587,7 @@
       lineHeight: font.lineHeight);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitFontExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitFontExpression(this);
 }
 
 abstract class BoxExpression extends DartStyleExpression {
@@ -1593,7 +1597,7 @@
       : super(styleType, span);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitBoxExpression(this);
 
   String get formattedBoxEdge {
     if (box.top == box.left && box.top == box.bottom && box.top == box.right) {
@@ -1643,7 +1647,7 @@
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitMarginExpression(this);
 }
 
 class BorderExpression extends BoxExpression {
@@ -1681,7 +1685,7 @@
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
 
   @override
-  void visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitBorderExpression(this);
 }
 
 class HeightExpression extends DartStyleExpression {
@@ -1704,7 +1708,7 @@
   @override
   HeightExpression clone() => HeightExpression(span, height);
   @override
-  void visit(VisitorBase visitor) => visitor.visitHeightExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitHeightExpression(this);
 }
 
 class WidthExpression extends DartStyleExpression {
@@ -1725,7 +1729,7 @@
   @override
   WidthExpression clone() => WidthExpression(span, width);
   @override
-  void visit(VisitorBase visitor) => visitor.visitWidthExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitWidthExpression(this);
 }
 
 class PaddingExpression extends BoxExpression {
@@ -1762,5 +1766,5 @@
   PaddingExpression clone() => PaddingExpression(span,
       top: box.top, right: box.right, bottom: box.bottom, left: box.left);
   @override
-  void visit(VisitorBase visitor) => visitor.visitPaddingExpression(this);
+  dynamic visit(VisitorBase visitor) => visitor.visitPaddingExpression(this);
 }
diff --git a/lib/src/tree_base.dart b/lib/src/tree_base.dart
index 6f2f442..eef1849 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.
-  void visit(VisitorBase visitor);
+  dynamic visit(VisitorBase visitor);
 
   /// A multiline string showing the node and its children.
   String toDebugString() {
diff --git a/lib/visitor.dart b/lib/visitor.dart
index ceda80c..9fff568 100644
--- a/lib/visitor.dart
+++ b/lib/visitor.dart
@@ -11,107 +11,108 @@
 part 'src/tree_printer.dart';
 
 abstract class VisitorBase {
-  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);
+  dynamic visitCalcTerm(CalcTerm node);
+  dynamic visitCssComment(CssComment node);
+  dynamic visitCommentDefinition(CommentDefinition node);
+  dynamic visitStyleSheet(StyleSheet node);
+  dynamic visitNoOp(NoOp node);
+  dynamic visitTopLevelProduction(TopLevelProduction node);
+  dynamic visitDirective(Directive node);
+  dynamic visitDocumentDirective(DocumentDirective node);
+  dynamic visitSupportsDirective(SupportsDirective node);
+  dynamic visitSupportsConditionInParens(SupportsConditionInParens node);
+  dynamic visitSupportsNegation(SupportsNegation node);
+  dynamic visitSupportsConjunction(SupportsConjunction node);
+  dynamic visitSupportsDisjunction(SupportsDisjunction node);
+  dynamic visitViewportDirective(ViewportDirective node);
+  dynamic visitMediaExpression(MediaExpression node);
+  dynamic visitMediaQuery(MediaQuery node);
+  dynamic visitMediaDirective(MediaDirective node);
+  dynamic visitHostDirective(HostDirective node);
+  dynamic visitPageDirective(PageDirective node);
+  dynamic visitCharsetDirective(CharsetDirective node);
+  dynamic visitImportDirective(ImportDirective node);
+  dynamic visitKeyFrameDirective(KeyFrameDirective node);
+  dynamic visitKeyFrameBlock(KeyFrameBlock node);
+  dynamic visitFontFaceDirective(FontFaceDirective node);
+  dynamic visitStyletDirective(StyletDirective node);
+  dynamic visitNamespaceDirective(NamespaceDirective node);
+  dynamic visitVarDefinitionDirective(VarDefinitionDirective node);
+  dynamic visitMixinDefinition(MixinDefinition node);
+  dynamic visitMixinRulesetDirective(MixinRulesetDirective node);
+  dynamic visitMixinDeclarationDirective(MixinDeclarationDirective node);
+  dynamic visitIncludeDirective(IncludeDirective node);
+  dynamic visitContentDirective(ContentDirective 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);
+  dynamic visitRuleSet(RuleSet node);
+  dynamic visitDeclarationGroup(DeclarationGroup node);
+  dynamic visitMarginGroup(MarginGroup node);
+  dynamic visitDeclaration(Declaration node);
+  dynamic visitVarDefinition(VarDefinition node);
+  dynamic visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node);
+  dynamic visitExtendDeclaration(ExtendDeclaration node);
+  dynamic visitSelectorGroup(SelectorGroup node);
+  dynamic visitSelector(Selector node);
+  dynamic visitSimpleSelectorSequence(SimpleSelectorSequence node);
+  dynamic visitSimpleSelector(SimpleSelector node);
+  dynamic visitElementSelector(ElementSelector node);
+  dynamic visitNamespaceSelector(NamespaceSelector node);
+  dynamic visitAttributeSelector(AttributeSelector node);
+  dynamic visitIdSelector(IdSelector node);
+  dynamic visitClassSelector(ClassSelector node);
+  dynamic visitPseudoClassSelector(PseudoClassSelector node);
+  dynamic visitPseudoElementSelector(PseudoElementSelector node);
+  dynamic visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node);
+  dynamic visitPseudoElementFunctionSelector(
+      PseudoElementFunctionSelector node);
+  dynamic visitNegationSelector(NegationSelector node);
+  dynamic visitSelectorExpression(SelectorExpression 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);
+  dynamic visitUnicodeRangeTerm(UnicodeRangeTerm node);
+  dynamic visitLiteralTerm(LiteralTerm node);
+  dynamic visitHexColorTerm(HexColorTerm node);
+  dynamic visitNumberTerm(NumberTerm node);
+  dynamic visitUnitTerm(UnitTerm node);
+  dynamic visitLengthTerm(LengthTerm node);
+  dynamic visitPercentageTerm(PercentageTerm node);
+  dynamic visitEmTerm(EmTerm node);
+  dynamic visitExTerm(ExTerm node);
+  dynamic visitAngleTerm(AngleTerm node);
+  dynamic visitTimeTerm(TimeTerm node);
+  dynamic visitFreqTerm(FreqTerm node);
+  dynamic visitFractionTerm(FractionTerm node);
+  dynamic visitUriTerm(UriTerm node);
+  dynamic visitResolutionTerm(ResolutionTerm node);
+  dynamic visitChTerm(ChTerm node);
+  dynamic visitRemTerm(RemTerm node);
+  dynamic visitViewportTerm(ViewportTerm node);
+  dynamic visitFunctionTerm(FunctionTerm node);
+  dynamic visitGroupTerm(GroupTerm node);
+  dynamic visitItemTerm(ItemTerm node);
+  dynamic visitIE8Term(IE8Term node);
+  dynamic visitOperatorSlash(OperatorSlash node);
+  dynamic visitOperatorComma(OperatorComma node);
+  dynamic visitOperatorPlus(OperatorPlus node);
+  dynamic visitOperatorMinus(OperatorMinus node);
+  dynamic visitVarUsage(VarUsage node);
 
-  void visitExpressions(Expressions node);
-  void visitBinaryExpression(BinaryExpression node);
-  void visitUnaryExpression(UnaryExpression node);
+  dynamic visitExpressions(Expressions node);
+  dynamic visitBinaryExpression(BinaryExpression node);
+  dynamic visitUnaryExpression(UnaryExpression node);
 
-  void visitIdentifier(Identifier node);
-  void visitWildcard(Wildcard node);
-  void visitThisOperator(ThisOperator node);
-  void visitNegation(Negation node);
+  dynamic visitIdentifier(Identifier node);
+  dynamic visitWildcard(Wildcard node);
+  dynamic visitThisOperator(ThisOperator node);
+  dynamic visitNegation(Negation 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);
+  dynamic visitDartStyleExpression(DartStyleExpression node);
+  dynamic visitFontExpression(FontExpression node);
+  dynamic visitBoxExpression(BoxExpression node);
+  dynamic visitMarginExpression(MarginExpression node);
+  dynamic visitBorderExpression(BorderExpression node);
+  dynamic visitHeightExpression(HeightExpression node);
+  dynamic visitPaddingExpression(PaddingExpression node);
+  dynamic visitWidthExpression(WidthExpression node);
 }
 
 /// Base vistor class for the style sheet AST.
@@ -126,96 +127,96 @@
     }
   }
 
-  void visitTree(StyleSheet tree) => visitStyleSheet(tree);
+  dynamic visitTree(StyleSheet tree) => visitStyleSheet(tree);
 
   @override
-  void visitStyleSheet(StyleSheet ss) {
+  dynamic visitStyleSheet(StyleSheet ss) {
     _visitNodeList(ss.topLevels);
   }
 
   @override
-  void visitNoOp(NoOp node) {}
+  dynamic visitNoOp(NoOp node) {}
 
   @override
-  void visitTopLevelProduction(TopLevelProduction node) {}
+  dynamic visitTopLevelProduction(TopLevelProduction node) {}
 
   @override
-  void visitDirective(Directive node) {}
+  dynamic visitDirective(Directive node) {}
 
   @override
-  void visitCalcTerm(CalcTerm node) {
+  dynamic visitCalcTerm(CalcTerm node) {
     visitLiteralTerm(node);
     visitLiteralTerm(node.expr);
   }
 
   @override
-  void visitCssComment(CssComment node) {}
+  dynamic visitCssComment(CssComment node) {}
 
   @override
-  void visitCommentDefinition(CommentDefinition node) {}
+  dynamic visitCommentDefinition(CommentDefinition node) {}
 
   @override
-  void visitMediaExpression(MediaExpression node) {
+  dynamic visitMediaExpression(MediaExpression node) {
     visitExpressions(node.exprs);
   }
 
   @override
-  void visitMediaQuery(MediaQuery node) {
+  dynamic visitMediaQuery(MediaQuery node) {
     for (var mediaExpr in node.expressions) {
       visitMediaExpression(mediaExpr);
     }
   }
 
   @override
-  void visitDocumentDirective(DocumentDirective node) {
+  dynamic visitDocumentDirective(DocumentDirective node) {
     _visitNodeList(node.functions);
     _visitNodeList(node.groupRuleBody);
   }
 
   @override
-  void visitSupportsDirective(SupportsDirective node) {
+  dynamic visitSupportsDirective(SupportsDirective node) {
     node.condition.visit(this);
     _visitNodeList(node.groupRuleBody);
   }
 
   @override
-  void visitSupportsConditionInParens(SupportsConditionInParens node) {
+  dynamic visitSupportsConditionInParens(SupportsConditionInParens node) {
     node.condition.visit(this);
   }
 
   @override
-  void visitSupportsNegation(SupportsNegation node) {
+  dynamic visitSupportsNegation(SupportsNegation node) {
     node.condition.visit(this);
   }
 
   @override
-  void visitSupportsConjunction(SupportsConjunction node) {
+  dynamic visitSupportsConjunction(SupportsConjunction node) {
     _visitNodeList(node.conditions);
   }
 
   @override
-  void visitSupportsDisjunction(SupportsDisjunction node) {
+  dynamic visitSupportsDisjunction(SupportsDisjunction node) {
     _visitNodeList(node.conditions);
   }
 
   @override
-  void visitViewportDirective(ViewportDirective node) {
+  dynamic visitViewportDirective(ViewportDirective node) {
     node.declarations.visit(this);
   }
 
   @override
-  void visitMediaDirective(MediaDirective node) {
+  dynamic visitMediaDirective(MediaDirective node) {
     _visitNodeList(node.mediaQueries);
     _visitNodeList(node.rules);
   }
 
   @override
-  void visitHostDirective(HostDirective node) {
+  dynamic visitHostDirective(HostDirective node) {
     _visitNodeList(node.rules);
   }
 
   @override
-  void visitPageDirective(PageDirective node) {
+  dynamic visitPageDirective(PageDirective node) {
     for (var declGroup in node._declsMargin) {
       if (declGroup is MarginGroup) {
         visitMarginGroup(declGroup);
@@ -226,60 +227,60 @@
   }
 
   @override
-  void visitCharsetDirective(CharsetDirective node) {}
+  dynamic visitCharsetDirective(CharsetDirective node) {}
 
   @override
-  void visitImportDirective(ImportDirective node) {
+  dynamic visitImportDirective(ImportDirective node) {
     for (var mediaQuery in node.mediaQueries) {
       visitMediaQuery(mediaQuery);
     }
   }
 
   @override
-  void visitKeyFrameDirective(KeyFrameDirective node) {
+  dynamic visitKeyFrameDirective(KeyFrameDirective node) {
     visitIdentifier(node.name);
     _visitNodeList(node._blocks);
   }
 
   @override
-  void visitKeyFrameBlock(KeyFrameBlock node) {
+  dynamic visitKeyFrameBlock(KeyFrameBlock node) {
     visitExpressions(node._blockSelectors);
     visitDeclarationGroup(node._declarations);
   }
 
   @override
-  void visitFontFaceDirective(FontFaceDirective node) {
+  dynamic visitFontFaceDirective(FontFaceDirective node) {
     visitDeclarationGroup(node._declarations);
   }
 
   @override
-  void visitStyletDirective(StyletDirective node) {
+  dynamic visitStyletDirective(StyletDirective node) {
     _visitNodeList(node.rules);
   }
 
   @override
-  void visitNamespaceDirective(NamespaceDirective node) {}
+  dynamic visitNamespaceDirective(NamespaceDirective node) {}
 
   @override
-  void visitVarDefinitionDirective(VarDefinitionDirective node) {
+  dynamic visitVarDefinitionDirective(VarDefinitionDirective node) {
     visitVarDefinition(node.def);
   }
 
   @override
-  void visitMixinRulesetDirective(MixinRulesetDirective node) {
+  dynamic visitMixinRulesetDirective(MixinRulesetDirective node) {
     _visitNodeList(node.rulesets);
   }
 
   @override
-  void visitMixinDefinition(MixinDefinition node) {}
+  dynamic visitMixinDefinition(MixinDefinition node) {}
 
   @override
-  void visitMixinDeclarationDirective(MixinDeclarationDirective node) {
+  dynamic visitMixinDeclarationDirective(MixinDeclarationDirective node) {
     visitDeclarationGroup(node.declarations);
   }
 
   @override
-  void visitIncludeDirective(IncludeDirective node) {
+  dynamic visitIncludeDirective(IncludeDirective node) {
     for (var index = 0; index < node.args.length; index++) {
       var param = node.args[index];
       _visitNodeList(param);
@@ -287,66 +288,66 @@
   }
 
   @override
-  void visitContentDirective(ContentDirective node) {
+  dynamic visitContentDirective(ContentDirective node) {
     // TODO(terry): TBD
   }
 
   @override
-  void visitRuleSet(RuleSet node) {
+  dynamic visitRuleSet(RuleSet node) {
     visitSelectorGroup(node._selectorGroup);
     visitDeclarationGroup(node._declarationGroup);
   }
 
   @override
-  void visitDeclarationGroup(DeclarationGroup node) {
+  dynamic visitDeclarationGroup(DeclarationGroup node) {
     _visitNodeList(node.declarations);
   }
 
   @override
-  void visitMarginGroup(MarginGroup node) => visitDeclarationGroup(node);
+  dynamic visitMarginGroup(MarginGroup node) => visitDeclarationGroup(node);
 
   @override
-  void visitDeclaration(Declaration node) {
+  dynamic visitDeclaration(Declaration node) {
     visitIdentifier(node._property);
     if (node._expression != null) node._expression.visit(this);
   }
 
   @override
-  void visitVarDefinition(VarDefinition node) {
+  dynamic visitVarDefinition(VarDefinition node) {
     visitIdentifier(node._property);
     if (node._expression != null) node._expression.visit(this);
   }
 
   @override
-  void visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node) {
+  dynamic visitIncludeMixinAtDeclaration(IncludeMixinAtDeclaration node) {
     visitIncludeDirective(node.include);
   }
 
   @override
-  void visitExtendDeclaration(ExtendDeclaration node) {
+  dynamic visitExtendDeclaration(ExtendDeclaration node) {
     _visitNodeList(node.selectors);
   }
 
   @override
-  void visitSelectorGroup(SelectorGroup node) {
+  dynamic visitSelectorGroup(SelectorGroup node) {
     _visitNodeList(node.selectors);
   }
 
   @override
-  void visitSelector(Selector node) {
+  dynamic visitSelector(Selector node) {
     _visitNodeList(node.simpleSelectorSequences);
   }
 
   @override
-  void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
+  dynamic visitSimpleSelectorSequence(SimpleSelectorSequence node) {
     node.simpleSelector.visit(this);
   }
 
   @override
-  void visitSimpleSelector(SimpleSelector node) => node._name.visit(this);
+  dynamic visitSimpleSelector(SimpleSelector node) => node._name.visit(this);
 
   @override
-  void visitNamespaceSelector(NamespaceSelector node) {
+  dynamic visitNamespaceSelector(NamespaceSelector node) {
     if (node._namespace != null) node._namespace.visit(this);
     if (node.nameAsSimpleSelector != null) {
       node.nameAsSimpleSelector.visit(this);
@@ -354,232 +355,234 @@
   }
 
   @override
-  void visitElementSelector(ElementSelector node) => visitSimpleSelector(node);
+  dynamic visitElementSelector(ElementSelector node) =>
+      visitSimpleSelector(node);
 
   @override
-  void visitAttributeSelector(AttributeSelector node) {
+  dynamic visitAttributeSelector(AttributeSelector node) {
     visitSimpleSelector(node);
   }
 
   @override
-  void visitIdSelector(IdSelector node) => visitSimpleSelector(node);
+  dynamic visitIdSelector(IdSelector node) => visitSimpleSelector(node);
 
   @override
-  void visitClassSelector(ClassSelector node) => visitSimpleSelector(node);
+  dynamic visitClassSelector(ClassSelector node) => visitSimpleSelector(node);
 
   @override
-  void visitPseudoClassSelector(PseudoClassSelector node) =>
+  dynamic visitPseudoClassSelector(PseudoClassSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  void visitPseudoElementSelector(PseudoElementSelector node) =>
+  dynamic visitPseudoElementSelector(PseudoElementSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  void visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node) =>
+  dynamic visitPseudoClassFunctionSelector(PseudoClassFunctionSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  void visitPseudoElementFunctionSelector(PseudoElementFunctionSelector node) =>
+  dynamic visitPseudoElementFunctionSelector(
+          PseudoElementFunctionSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  void visitNegationSelector(NegationSelector node) =>
+  dynamic visitNegationSelector(NegationSelector node) =>
       visitSimpleSelector(node);
 
   @override
-  void visitSelectorExpression(SelectorExpression node) {
+  dynamic visitSelectorExpression(SelectorExpression node) {
     _visitNodeList(node.expressions);
   }
 
   @override
-  void visitUnicodeRangeTerm(UnicodeRangeTerm node) {}
+  dynamic visitUnicodeRangeTerm(UnicodeRangeTerm node) {}
 
   @override
-  void visitLiteralTerm(LiteralTerm node) {}
+  dynamic visitLiteralTerm(LiteralTerm node) {}
 
   @override
-  void visitHexColorTerm(HexColorTerm node) {}
+  dynamic visitHexColorTerm(HexColorTerm node) {}
 
   @override
-  void visitNumberTerm(NumberTerm node) {}
+  dynamic visitNumberTerm(NumberTerm node) {}
 
   @override
-  void visitUnitTerm(UnitTerm node) {}
+  dynamic visitUnitTerm(UnitTerm node) {}
 
   @override
-  void visitLengthTerm(LengthTerm node) {
+  dynamic visitLengthTerm(LengthTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitPercentageTerm(PercentageTerm node) {
+  dynamic visitPercentageTerm(PercentageTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  void visitEmTerm(EmTerm node) {
+  dynamic visitEmTerm(EmTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  void visitExTerm(ExTerm node) {
+  dynamic visitExTerm(ExTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  void visitAngleTerm(AngleTerm node) {
+  dynamic visitAngleTerm(AngleTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitTimeTerm(TimeTerm node) {
+  dynamic visitTimeTerm(TimeTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitFreqTerm(FreqTerm node) {
+  dynamic visitFreqTerm(FreqTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitFractionTerm(FractionTerm node) {
+  dynamic visitFractionTerm(FractionTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  void visitUriTerm(UriTerm node) {
+  dynamic visitUriTerm(UriTerm node) {
     visitLiteralTerm(node);
   }
 
   @override
-  void visitResolutionTerm(ResolutionTerm node) {
+  dynamic visitResolutionTerm(ResolutionTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitChTerm(ChTerm node) {
+  dynamic visitChTerm(ChTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitRemTerm(RemTerm node) {
+  dynamic visitRemTerm(RemTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitViewportTerm(ViewportTerm node) {
+  dynamic visitViewportTerm(ViewportTerm node) {
     visitUnitTerm(node);
   }
 
   @override
-  void visitFunctionTerm(FunctionTerm node) {
+  dynamic visitFunctionTerm(FunctionTerm node) {
     visitLiteralTerm(node);
     visitExpressions(node._params);
   }
 
   @override
-  void visitGroupTerm(GroupTerm node) {
+  dynamic visitGroupTerm(GroupTerm node) {
     for (var term in node._terms) {
       term.visit(this);
     }
   }
 
   @override
-  void visitItemTerm(ItemTerm node) {
+  dynamic visitItemTerm(ItemTerm node) {
     visitNumberTerm(node);
   }
 
   @override
-  void visitIE8Term(IE8Term node) {}
+  dynamic visitIE8Term(IE8Term node) {}
 
   @override
-  void visitOperatorSlash(OperatorSlash node) {}
+  dynamic visitOperatorSlash(OperatorSlash node) {}
 
   @override
-  void visitOperatorComma(OperatorComma node) {}
+  dynamic visitOperatorComma(OperatorComma node) {}
 
   @override
-  void visitOperatorPlus(OperatorPlus node) {}
+  dynamic visitOperatorPlus(OperatorPlus node) {}
 
   @override
-  void visitOperatorMinus(OperatorMinus node) {}
+  dynamic visitOperatorMinus(OperatorMinus node) {}
 
   @override
-  void visitVarUsage(VarUsage node) {
+  dynamic visitVarUsage(VarUsage node) {
     _visitNodeList(node.defaultValues);
   }
 
   @override
-  void visitExpressions(Expressions node) {
+  dynamic visitExpressions(Expressions node) {
     _visitNodeList(node.expressions);
   }
 
   @override
-  void visitBinaryExpression(BinaryExpression node) {
+  dynamic visitBinaryExpression(BinaryExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitUnaryExpression(UnaryExpression node) {
+  dynamic visitUnaryExpression(UnaryExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitIdentifier(Identifier node) {}
+  dynamic visitIdentifier(Identifier node) {}
 
   @override
-  void visitWildcard(Wildcard node) {}
+  dynamic visitWildcard(Wildcard node) {}
 
   @override
-  void visitThisOperator(ThisOperator node) {}
+  dynamic visitThisOperator(ThisOperator node) {}
 
   @override
-  void visitNegation(Negation node) {}
+  dynamic visitNegation(Negation node) {}
 
   @override
-  void visitDartStyleExpression(DartStyleExpression node) {}
+  dynamic visitDartStyleExpression(DartStyleExpression node) {}
 
   @override
-  void visitFontExpression(FontExpression node) {
+  dynamic visitFontExpression(FontExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitBoxExpression(BoxExpression node) {
+  dynamic visitBoxExpression(BoxExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitMarginExpression(MarginExpression node) {
+  dynamic visitMarginExpression(MarginExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitBorderExpression(BorderExpression node) {
+  dynamic visitBorderExpression(BorderExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitHeightExpression(HeightExpression node) {
+  dynamic visitHeightExpression(HeightExpression node) {
     // TODO(terry): TB
     throw UnimplementedError();
   }
 
   @override
-  void visitPaddingExpression(PaddingExpression node) {
+  dynamic visitPaddingExpression(PaddingExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }
 
   @override
-  void visitWidthExpression(WidthExpression node) {
+  dynamic visitWidthExpression(WidthExpression node) {
     // TODO(terry): TBD
     throw UnimplementedError();
   }