anchor.diff:      return node;
     }
   
  -  AstNode visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) {
  +  AstNode visitRedirectingConstructorInvocation(
  +      RedirectingConstructorInvocation node) {
       bool checked = checkArgumentList(node.argumentList);
       assert(checked);
       node.visitChildren(this);
  
positive.code:   }
  
    // Check that member declarations soundly override any overridden declarations.
    InvalidOverride findInvalidOverride(AstNode node, ExecutableElement element, InterfaceType type, [bool allowFieldOverride = null]) {
      // FIXME: This can be done a lot more efficiently.
      assert(!element.isStatic);
  
  
negative.code: 
    bool isDynamic(DartType t) {
      // Erasure
      if (t is TypeParameterType) return true;
      if (t.isDartCoreFunction) return true;
      return t.isDynamic;
    }
  
    bool canBeBoxedTo(DartType primitiveType, DartType boxedType) {
      assert(isPrimitive(primitiveType));
      // Any primitive can be boxed to Object or dynamic.
      if (boxedType.isObject ||
          boxedType.isDynamic ||
          boxedType is TypeParameterType) {
        return true;
      }
      // True iff a location with this type may be assigned a boxed
      // int or double.
      if (primitiveType !=
          provider.boolType && !primitiveNum && boxedType.name == "num") {
        return true;
      }
      return false;
    }
  
    bool isPrimitive(DartType t) {
      // FIXME: Handle VoidType here?
      if (t.isVoid) return true;
      if (t == provider.intType ||
          t == provider.doubleType ||
          t == provider.boolType) return true;
      if (primitiveNum && t.name == "num") return true;
      return false;
    }
  
  