anchor.diff:    }
   
     Join _declareVariable(VariableDeclaration decl,
  -      {bool addInitType: false,
  -      bool useTypeCheck: false,
  -      DartType checkType: null}) {
  -    final type = checkType ?? decl.type;
  +      {bool addInitType: false, DartType type}) {
  +    type ??= decl.type;
       Join join = new Join(decl.name, type);
       _summary.add(join);
  -    _variableJoins[decl] = join;
  -
  -    TypeExpr variable = join;
  -    if (useTypeCheck) {
  -      TypeExpr runtimeType = _translator.translate(type);
  -      variable = new TypeCheck(variable, runtimeType, decl,
  -          _typesBuilder.fromStaticType(decl.type, true));
  -      _summary.add(variable);
  -    }
  -
  -    _variables[decl] = variable;
  +    _variables[decl] = join;
   
       if (decl.initializer != null) {
         TypeExpr initType = _visit(decl.initializer);
  
positive.code: 
    @override
    TypeExpr visitAsExpression(AsExpression node) {
      TypeExpr operand = _visit(node.operand);
      Type type = _typesBuilder.fromStaticType(node.type, true);
      TypeExpr runtimeType = _translator.translate(node.type);
      TypeExpr result = new TypeCheck(operand, runtimeType, node, type);
      explicitCasts[node] = result;
      _summary.add(result);
      return result;
    }
  
  
negative.code:     _visit(node.body);
  
      _returnValue = oldReturn;
      _variables = oldVariables;
    }
  
  