anchor.diff:        return js.js('#.#(#)',
             [visitExpression(node.receiver),
              glue.instanceMethodName(node.target),
  -           visitArguments(node.arguments)]);
  +           visitExpressionList(node.arguments)]);
       }
       return js.js('#.#.call(#, #)',
           [glue.prototypeAccess(node.target.enclosingClass),
            glue.invocationName(node.selector),
            visitExpression(node.receiver),
  -         visitArguments(node.arguments)]);
  +         visitExpressionList(node.arguments)]);
     }
   
     @override
     js.Expression visitLiteralList(tree_ir.LiteralList node) {
       registry.registerInstantiatedClass(glue.listClass);
  -    List<js.Expression> entries = node.values.map(visitExpression).toList();
  +    List<js.Expression> entries = visitExpressionList(node.values);
       return new js.ArrayInitializer(entries);
     }
   
  
positive.code:     Selector selector = node.selector;
      assert(selector.isGetter || selector.isSetter || selector.isCall);
      FunctionElement target = node.target;
      List<js.Expression> arguments = visitArguments(node.arguments);
      return buildStaticInvoke(selector, target, arguments,
          sourceInformation: node.sourceInformation);
    }
  
negative.code:     return name;
    }
  
    List<js.Expression> visitExpressionList(
        List<tree_ir.Expression> expressions) {
      return new List<js.Expression>.generate(expressions.length,
          (int index) => visitExpression(expressions[index]),
          growable: false);
    }
  
    giveup(tree_ir.Node node,
  