private static boolean anySubtreeMeetsPredicate(RegExpTree tree, Predicate<RegExpTree> p) { if (p.test(tree)) { return true; } for (RegExpTree subTree : tree.children()) { if (anySubtreeMeetsPredicate(subTree, p)) { return true; } } return false; }
private void appendDebugString(StringBuilder sb) { sb.append('(').append(getClass().getSimpleName()); int len = sb.length(); sb.append(' '); appendDebugInfo(sb); if (sb.length() == len + 1) { sb.setLength(len); } for (RegExpTree child : children()) { sb.append(' '); child.appendDebugString(sb); } sb.append(')'); }