public TraceNode add(TraceNode child) {
        if (child.parent != null) {
            throw new IllegalArgumentException("Can not add " + child + " to " + this + "; it is not a root.");
        }
        child.parent = this;
        synchronized(this) {
            if (children == null) {
                children = Collections.synchronizedList(new ArrayList<>());
            }
        }
        children.add(child);
        return this;
    }
<p>Adds another <code>TraceNode</code> as a child to this.</p>

@param child the TraceNode to add
@return this, to allow chaining
@throws IllegalArgumentException if <code>child</code> is not a root TraceNode
@see #isRoot()
vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java