sb.append("<table><caption>");
sb.append(String.format("<span class='table-caption'>Trace %s started at<br>%s</span></caption>", id, dateString(start)));
sb.append("<tr><th>Time</th><th>Start</th><th>Service@Location</th><th>Name</th><th>Addl Data</th></tr>");
final long finalStart = start;
Set<Long> visited = tree.visit(new SpanTreeVisitor() {
@Override
public void visit(int level, RemoteSpan parent, RemoteSpan node, Collection<RemoteSpan> children) {
sb.append("<tr>\n");
sb.append(String.format("<td class='right'>%d+</td><td class='left'>%d</td>%n", node.stop - node.start, node.start - finalStart));
sb.append(String.format("<td style='text-indent: %dpx'>%s@%s</td>%n", level * 5, node.svc, node.sender));