anchor.diff:      visit(node.argumentsNode);
     }
   
  +  /**
  +   * Special case for assignments like "list[0] = 1".
  +   */
  +  unparseIndexedSet(SendSet node) {
  +    visit(node.receiver);
  +    sb.add('[');
  +    sb.add(node.arguments.head);
  +    sb.add(']');
  +    add(node.assignmentOperator.token.value);
  +    unparseNodeListFrom(node.argumentsNode, node.argumentsNode.nodes.tail);
  +  }
  +
     visitSendSet(SendSet node) {
  -    unparseSendPart(node);
  -    add(node.assignmentOperator.token.value);
  -    visit(node.argumentsNode);
  +    if (node.isIndex) {
  +      unparseIndexedSet(node);
  +    } else {
  +      unparseSendPart(node);
  +      add(node.assignmentOperator.token.value);
  +      visit(node.argumentsNode);
  +    }
     }
   
     visitThrow(Throw node) {
  
positive.code:     if (node.endToken !== null) add(node.endToken.value);
    }
  
  
    unparseSendPart(Send node) {
      if (node.isPrefix) {
        visit(node.selector);
  
negative.code:       visit(node.receiver);
        if (node.selector is !Operator) sb.add('.');
      }
      if (!node.isPrefix && !node.isIndex) {
        visit(node.selector);
      }
    }
  