public static <S, E extends Interval, T extends SuffixArray & IntervalTree<E>> void visualizeIntervalTree(
Appendable buffer, String caption, String label, T tree, int[] childTable, SymbolTable<S> symbolTable)
throws IOException {
Drawing drawing = new TikzReducedIntervalDrawing(buffer, caption, label, 0.65, 0.65, 26, 0);
TreeVisualizer<S> treeVisualizer = new TreeVisualizer<S>(symbolTable, true);
treeVisualizer.visualizeTree(drawing, tree);
TableVisualizer<S> tableVisualizer = new TableVisualizer<S>(tree.getSequence(), symbolTable);
tableVisualizer.visualizeTable(drawing, tree.getSuffixTable(), "suftab", 6, TikzConstants.RED_CELL);
tableVisualizer.visualizeTable(drawing, tree.getLcpTable(), "lcptab", 6, TikzConstants.GREEN_CELL);
if (childTable != null) {
tableVisualizer.visualizeTable(drawing, childTable, "cldtab", 6, TikzConstants.BLUE_CELL);
}
tableVisualizer.visualizeSuffixIntervals(drawing, tree, treeVisualizer.getStyleMap());
drawing.flush();
}