anchor.diff:    }
   
     Expression visitLiteralList(LiteralList node) {
  -    // Process values right-to-left, the opposite of evaluation order.
  -    for (int i = node.values.length - 1; i >= 0; --i) {
  -      node.values[i] = visitExpression(node.values[i]);
  -    }
  +    _rewriteList(node.values);
       return node;
     }
   
  
positive.code:   }
  
    Expression visitTypeExpression(TypeExpression node) {
      for (int i = node.arguments.length - 1; i >= 0; --i) {
        node.arguments[i] = visitExpression(node.arguments[i]);
      }
      return node;
    }
  
    Expression visitCreateInvocationMirror(CreateInvocationMirror node) {
      for (int i = node.arguments.length - 1; i >= 0; --i) {
        node.arguments[i] = visitExpression(node.arguments[i]);
      }
      return node;
    }
  
  
negative.code:     return node;
    }
  
    /// Process nodes right-to-left, the opposite of evaluation order in the case
    /// of argument lists..
    void _rewriteList(List<Node> nodes) {
      for (int i = nodes.length - 1; i >= 0; --i) {
        nodes[i] = visitExpression(nodes[i]);
      }
    }
  
    Expression visitInvokeStatic(InvokeStatic node) {
      _rewriteList(node.arguments);
      return node;
    }
  
    Expression visitInvokeMethod(InvokeMethod node) {
      _rewriteList(node.arguments);
      node.receiver = visitExpression(node.receiver);
      return node;
    }
  
    Expression visitInvokeMethodDirectly(InvokeMethodDirectly node) {
      _rewriteList(node.arguments);
      node.receiver = visitExpression(node.receiver);
      return node;
    }
  
    Expression visitInvokeConstructor(InvokeConstructor node) {
      _rewriteList(node.arguments);
      return node;
    }
  
    Expression visitConcatenateStrings(ConcatenateStrings node) {
      _rewriteList(node.arguments);
      return node;
    }
  
  