anchor.diff:    }
   
     visitNodeWithChildren(Node node, String type) {
  -    openNode(type);
  +    openNode(node, type);
       node.visitChildren(this);
  -    closeNode(type);
  +    closeNode();
     }
   
     visitBlock(Block node) {
  
positive.code: 
    // Custom.
    visitLiteral(Literal node, String type) {
      openAndCloseNode(type, {"value" : node.value.toString()});
    }
  
    visitLiteralBool(LiteralBool 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) {
  