public <T extends TraceVisitor> T accept(T visitor) {
        visitor.visit(this);
        if (children == null || children.isEmpty()) {
            return visitor;
        }
        visitor.entering(this);
        for (TraceNode child : children) {
            child.accept(visitor);
        }
        visitor.leaving(this);
        return visitor;
    }
<p>Visits this <code>TraceNode</code> and all of its descendants in depth-first, prefix order.</p>

@param visitor The visitor to accept.
@return The <code>visitor</code> parameter.
vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java