anchor.diff:  
     // Custom.
     visitLiteral(Literal node, String type) {
  -    openAndCloseNode(type, {"value" : node.value.toString()});
  +    openAndCloseNode(node, type, {"value" : node.value.toString()});
     }
   
     visitLiteralBool(LiteralBool node) {
  
positive.code:   tokenToStringOrNull(Token token) => token === null ? null : token.stringValue;
  
    visitLiteralList(LiteralList node) {
      openNode("LiteralList", {
        "constKeyword" : tokenToStringOrNull(node.constKeyword)
      });
      visitWithPrefix(node.type, "type:");
      visitWithPrefix(node.elements, "elements:");
      closeNode("LiteralList");
    }
  
    visitLiteralMap(LiteralMap node) {
  
negative.code:   visitNodeList(NodeList node) {
      var params = {
          "delimiter" :
              node.delimiter !== null ? node.delimiter.stringValue : null
      };
      if (node.nodes.toList().length == 0) {
        openAndCloseNode(node, "NodeList", params);
      } else {
        openNode(node, "NodeList", params);
        node.visitChildren(this);
        closeNode();
      }
    }
  
    visitOperator(Operator node) {
      openAndCloseNode(node, "Operator", {"value" : node.token.slowToString()});
    }
  
    visitParenthesizedExpression(ParenthesizedExpression node) {
  