anchor.diff:      // Reset the variable index.  This function is not reentrant.
       Variable.counter = 0;
       this.treeElements = treeElements;
  -    ast.Identifier name = new ast.Identifier(
  -        new StringToken.fromString(IDENTIFIER_INFO, element.name, -1));
  -
  -    ast.NodeList parameters = new ast.NodeList(
  -        new BeginGroupToken(OPEN_PAREN_INFO, -1),
  -        const Link<ast.Node>(),
  -        new SymbolToken(CLOSE_PAREN_INFO, -1),
  -        ',');
  +    ast.Identifier name = makeIdentifier(element.name);
  +
  +    ast.NodeList parameters = makeArgumentList([]);
       ast.Node body = expr.accept(this);
   
       if (!variables.isEmpty) {
  
positive.code:   ast.Identifier assignIdentifier() {
      assert(identifier == null);
      String name = _newName();
      identifier = new ast.Identifier(
          new StringToken.fromString(IDENTIFIER_INFO, name, -1));
      return identifier;
    }
  
  
negative.code:   // tree.
    dart2js.TreeElementMapping treeElements;
  
    // Tokens needed in the AST.
    final Token openParen = new BeginGroupToken(OPEN_PAREN_INFO, -1);
    final Token closeParen = new SymbolToken(CLOSE_PAREN_INFO, -1);
    final Token openBrace = new BeginGroupToken(OPEN_CURLY_BRACKET_INFO, -1);
    final Token closeBrace = new SymbolToken(CLOSE_CURLY_BRACKET_INFO, -1);
    final Token semicolon = new SymbolToken(SEMICOLON_INFO, -1);
  
    // Helper methods to construct ASTs.
    static ast.Identifier makeIdentifier(String name) {
      return new ast.Identifier(
          new StringToken.fromString(IDENTIFIER_INFO, name, -1));
    }
  
    ast.NodeList makeArgumentList(List<ast.Node> arguments) {
      return new ast.NodeList(openParen,
                              new Link<ast.Node>.fromList(arguments),
                              closeParen,
                              ',');
    }
  
    ast.Block makeBlock(List<ast.Node> statements) {
      return new ast.Block(new ast.NodeList(
          openBrace, new Link<ast.Node>.fromList(statements), closeBrace));
    }
  
    static ast.SendSet makeAssignment(ast.Identifier identifier,
                                      ast.Expression expression) {
      return new ast.SendSet(
          null,
          identifier,
          new ast.Operator(new SymbolToken(EQ_INFO, -1)),
          new ast.NodeList.singleton(expression));
    }
  
    /**
     * Translate the body of a function to an AST FunctionExpression.
     */
  