in tools/javac/ApiComparator.java [92:111]
private Compatibility traverse(StringBuilder out, StringBuilder indent, Set<Message> messages) {
messages.addAll(this.messages);
int indentDepth = indent.length();
Compatibility nextComp = Compatibility.SAME, comp = compatibility;
if (next != null) nextComp = next.traverse(out, indent, messages);
if (child != null) {
indent.append(" ");
comp = Compatibility.max(comp, child.traverse(out, indent, messages));
indent.setLength(indentDepth);
}
String marks = this.messages.stream().map(m -> m.mark != null ? " " + m.mark : "").collect(Collectors.joining());
if (comp != Compatibility.SAME || note != null || !marks.isEmpty()) {
indent.append(diff.ch).append(' ').append(name);
if (note != null) indent.append(" - ").append(note);
indent.append(marks);
out.insert(0, indent.append('\n'));
indent.setLength(indentDepth);
}
return Compatibility.max(comp, nextComp);
}