private static void appendNode(Node node, StringBuilder sb) {
      if (node.target == ERROR_NODE) {
        sb.append(node.method);
        return;
      }
      else if (node.target != null) {
        appendNode(node.target, sb);
        sb.append('.');
      }
      sb.append(node.method).append('(');
      boolean first = true;
      for (Object arg : (node.args == null ? ArrayUtilRt.EMPTY_OBJECT_ARRAY : node.args)) {
        if (first) first = false;
        else sb.append(',').append(' ');
        if (arg instanceof Node) {
          appendNode((Node)arg, sb);
        }
        else if (arg instanceof String) {
          sb.append('\"').append(StringUtil.escapeStringCharacters((String)arg)).append('\"');
        }
        else if (arg instanceof Number) {
          sb.append(arg);
        }
      }
      sb.append(')');
    }
private static void appendNode(Node node, StringBuilder sb)