protected FillHitsResult fillHits(Result result, DocsumPacket[] packets, String summaryClass) {
        // System.err.println("fill result with packets: " + packets.length);
        int skippedHits = 0;
        String lastError = null;
        int packetIndex = 0;
        for (Hit hit : iterableHits(result)) {
            // System.err.println("fill? hit " + hit);
            if (hit instanceof FastHit fastHit && ! hit.isFilled(summaryClass)) {
                // System.err.println("yes for " + summaryClass);

                DocsumPacket docsum = packets[packetIndex];

                packetIndex++;
                FillHitResult fr = fillHit(fastHit, docsum, summaryClass);
                if ( ! fr.ok ) {
                    skippedHits++;
                }
                if (fr.error != null) {
                    result.hits().addError(ErrorMessage.createTimeout(fr.error));
                    skippedHits++;
                    lastError = fr.error;
                }
            }
        }
        result.hits().setSorted(false);
        return new FillHitsResult(skippedHits, lastError);
    }
Fills the hits.

@return the number of hits that we did not return data for, and an optional error message.
        when things are working normally we return 0.
container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingBackend.java