public Pong ping(Ping ping) {
        // return this reference, not directly. It's needed for adding time data
        Pong annotationReference = null;

        timer.samplePing(nextIndex(), context.getDetailedDiagnostics());
        Searcher next = (Searcher)next(); // TODO: Allow but skip processors which are not searchers
        if (next == null) {
            annotationReference = new Pong();
            return annotationReference;
        }

        try {
            nextProcessor();
            annotationReference = invokePing(ping, next);
            return annotationReference;
        }
        finally {
            previousProcessor();
            timer.samplePingReturn(nextIndex(), context.getDetailedDiagnostics(), annotationReference);
        }
    }
Calls ping on the next search in this chain. If there is no next, a Pong is created and returned.
container-search/src/main/java/com/yahoo/search/searchchain/Execution.java