public <PAYLOADTYPE> Iterable<PAYLOADTYPE> descendants(final Class<PAYLOADTYPE> payloadType) {
        if (children == null) {
            return List.of();
        }
        return new Iterable<PAYLOADTYPE>() {

            @Override
            public Iterator<PAYLOADTYPE> iterator() {
                return new PayloadIterator<>(TraceNode.this, payloadType);
            }
        };
    }
<p>Returns a read-only iterable of all {@link #payload() payloads} that are instances of <code>payloadType</code>,
in all its decendants. The payload of <em>this</em> <code>TraceNode</code> is ignored.</p>
<p>The payloads are retrieved in depth-first, prefix order.</p>

@param payloadType the type of payloads to retrieve
@return the payloads, never <code>null</code>
vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java