anchor.diff:    }
   
     void addTypeWithParams(String type, [Map params]) {
  +    if (nextTypePrefix !== null) {
  +      sb.add(nextTypePrefix);
  +      nextTypePrefix = null;
  +    }
       sb.add("${type}");
       if (params != null) {
         // TODO(smok): Escape doublequotes in values.
  
positive.code: 
    StringBuffer sb;
    int depth;
  
    PrettyPrinter() : sb = new StringBuffer(), depth = 0;
  
  
negative.code:     visitNodeWithChildren(node, "ScriptTag");
    }
  
    /** Custom helper to visit given node and print its type with prefix. */
    visitWithPrefix(Node node, String prefix) {
      nextTypePrefix = prefix;
      node.accept(this);
    }
  
    openSendNodeWithFields(Send node, String type) {
      openNode(type, {
          "isPrefix" : "${node.isPrefix}",
          "isPostfix" : "${node.isPostfix}",
          "isIndex" : "${node.isIndex}"
      });
      if (node.receiver !== null) visitWithPrefix(node.receiver, "receiver:");
      if (node.selector !== null) visitWithPrefix(node.selector, "selector:");
      if (node.argumentsNode !== null)
          visitWithPrefix(node.argumentsNode, "argumentsNode:");
    }
  
    visitSend(Send node) {
      openSendNodeWithFields(node, "Send");
      closeNode("Send");
    }
  
    visitSendSet(SendSet node) {
      openSendNodeWithFields(node, "SendSet");
      if (node.assignmentOperator !== null)
          visitWithPrefix(node.assignmentOperator, "assignmentOperator:");
      closeNode("SendSet");
    }
  
    visitStringInterpolation(StringInterpolation node) {
  