anchor.diff:          assertx(member.initializer != null);
           _summary.result = _visit(member.initializer);
         } else {
  -        Parameter valueParam = _declareParameter("value", member.type, null);
  -        TypeExpr runtimeType = _translator.translate(member.type);
  -        final check = new TypeCheck(valueParam, runtimeType, member,
  -            _typesBuilder.fromStaticType(member.type, true));
  -        _summary.add(check);
  -        _summary.result = check;
  +        final Parameter valueParam =
  +            _declareParameter("value", member.type, null);
  +        _summary.result = _typeCheck(valueParam, member.type, member);
         }
       } else {
         FunctionNode function = member.function;
  
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: 
    void _handleNestedFunctionNode(FunctionNode node) {
      final oldReturn = _returnValue;
      final oldVariables = _variables;
      _returnValue = null;
      _variables = <VariableDeclaration, Join>{};
      _variables.addAll(oldVariables);
  
      // Approximate parameters of nested functions with static types.
  