anchor.diff:    js.Block buildBodyBlock(tree_ir.Statement statement) {
       List<js.Statement> savedAccumulator = accumulator;
       accumulator = <js.Statement>[];
  -    visitStatement(statement);
  +    while (statement != null) {
  +      statement = visitStatement(statement);
  +    }
       js.Statement result = new js.Block(accumulator);
       accumulator = savedAccumulator;
       return result;
  
positive.code:   }
  
    @override
    void visitYield(tree_ir.Yield node) {
      js.Expression value = visitExpression(node.input);
      accumulator.add(new js.DartYield(value, node.hasStar));
      visitStatement(node.next);
    }
  
    @override
    void visitNullCheck(tree_ir.NullCheck node) {
      js.Expression value = visitExpression(node.value);
      // TODO(sra): Try to use the selector even when [useSelector] is false. The
      // reason we use 'toString' is that it is always defined so avoids a slow
  
negative.code:   js.Fun buildFunction(tree_ir.FunctionDefinition function) {
      registerDefaultParameterValues(function.element);
      currentFunction = function.element;
      tree_ir.Statement statement = function.body;
      while (statement != null) {
        statement = visitStatement(statement);
      }
  
      List<js.Parameter> parameters = new List<js.Parameter>();
      Set<tree_ir.Variable> parameterSet = new Set<tree_ir.Variable>();
  