diff --git a/lib/parser.dart b/lib/parser.dart
index be375a7..3347c90 100644
--- a/lib/parser.dart
+++ b/lib/parser.dart
@@ -1215,7 +1215,7 @@
       Declaration decl = processDeclaration(dartStyles);
       if (decl != null) {
         if (decl.hasDartStyle) {
-          var newDartStyle = decl.dartStyle as DartStyleExpression;
+          var newDartStyle = decl.dartStyle;
 
           // Replace or add latest Dart style.
           bool replaced = false;
@@ -1241,8 +1241,7 @@
     // declarations.
     for (var decl in decls) {
       if (decl is Declaration) {
-        if (decl.hasDartStyle &&
-            dartStyles.indexOf(decl.dartStyle as DartStyleExpression) < 0) {
+        if (decl.hasDartStyle && dartStyles.indexOf(decl.dartStyle) < 0) {
           // Dart style not live, ignore these styles in this Declarations.
           decl.dartStyle = null;
         }
@@ -1300,7 +1299,7 @@
           Declaration decl = processDeclaration(dartStyles);
           if (decl != null) {
             if (decl.hasDartStyle) {
-              var newDartStyle = decl.dartStyle as DartStyleExpression;
+              var newDartStyle = decl.dartStyle;
 
               // Replace or add latest Dart style.
               bool replaced = false;
@@ -1326,8 +1325,7 @@
     // Fixup declaration to only have dartStyle that are live for this set of
     // declarations.
     for (var decl in decls) {
-      if (decl.hasDartStyle &&
-          dartStyles.indexOf(decl.dartStyle as DartStyleExpression) < 0) {
+      if (decl.hasDartStyle && dartStyles.indexOf(decl.dartStyle) < 0) {
         // Dart style not live, ignore these styles in this Declarations.
         decl.dartStyle = null;
       }
@@ -2217,8 +2215,10 @@
   }
 
   // TODO(terry): Need to handle auto.
-  num marginValue(var exprTerm) {
-    if (exprTerm is UnitTerm || exprTerm is NumberTerm) {
+  num marginValue(Expression exprTerm) {
+    if (exprTerm is UnitTerm) {
+      return exprTerm.value as num;
+    } else if (exprTerm is NumberTerm) {
       return exprTerm.value as num;
     }
     return null;
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index fd8a137..634fdcf 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -908,7 +908,7 @@
   final Identifier _property;
   final Expression _expression;
   /** Style exposed to Dart. */
-  dynamic dartStyle;
+  DartStyleExpression dartStyle;
   final bool important;
 
   /**
