Merge pull request #79 from srawlins/too-much-dynamic

Change many variables from dynamic to proper type
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index 634fdcf..6c3dc91 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -514,7 +514,7 @@
   SupportsConjunction(this.conditions, SourceSpan span) : super(span);
 
   SupportsConjunction clone() {
-    var clonedConditions = <SupportsCondition>[];
+    var clonedConditions = <SupportsConditionInParens>[];
     for (var condition in conditions) {
       clonedConditions.add(condition.clone());
     }
@@ -530,7 +530,7 @@
   SupportsDisjunction(this.conditions, SourceSpan span) : super(span);
 
   SupportsDisjunction clone() {
-    var clonedConditions = <SupportsCondition>[];
+    var clonedConditions = <SupportsConditionInParens>[];
     for (var condition in conditions) {
       clonedConditions.add(condition.clone());
     }
@@ -709,7 +709,7 @@
    * Either @keyframe or keyframe prefixed with @-webkit-, @-moz-, @-ms-, @-o-.
    */
   final int _keyframeName;
-  final name;
+  final Identifier name;
   final List<KeyFrameBlock> _blocks;
 
   KeyFrameDirective(this._keyframeName, this.name, SourceSpan span)
@@ -736,11 +736,11 @@
   }
 
   KeyFrameDirective clone() {
-    var cloneBlocks = [];
+    var directive = KeyFrameDirective(_keyframeName, name.clone(), span);
     for (var block in _blocks) {
-      cloneBlocks.add(block.clone());
+      directive.add(block.clone());
     }
-    return new KeyFrameDirective(_keyframeName, cloneBlocks, span);
+    return directive;
   }
 
   visit(VisitorBase visitor) => visitor.visitKeyFrameDirective(this);
diff --git a/lib/src/validate.dart b/lib/src/validate.dart
index e716e66..a98c665 100644
--- a/lib/src/validate.dart
+++ b/lib/src/validate.dart
@@ -17,9 +17,9 @@
 List<String> ids = [];
 
 class Validate {
-  static int _classNameCheck(var selector, int matches) {
-    if (selector.isCombinatorDescendant() ||
-        (selector.isCombinatorNone() && matches == 0)) {
+  static int _classNameCheck(SimpleSelectorSequence selector, int matches) {
+    if (selector.isCombinatorDescendant ||
+        (selector.isCombinatorNone && matches == 0)) {
       if (matches < 0) {
         String tooMany = selector.simpleSelector.toString();
         throw new CssSelectorException(
@@ -35,11 +35,11 @@
     }
   }
 
-  static int _elementIdCheck(var selector, int matches) {
-    if (selector.isCombinatorNone() && matches == 0) {
+  static int _elementIdCheck(SimpleSelectorSequence selector, int matches) {
+    if (selector.isCombinatorNone && matches == 0) {
       // Perfect just one element id returns matches of -1.
       return -1;
-    } else if (selector.isCombinatorDescendant()) {
+    } else if (selector.isCombinatorDescendant) {
       String tooMany = selector.simpleSelector.toString();
       throw new CssSelectorException(
           'Use of Id selector must be singleton starting at $tooMany');