class CompositeAdjacencyCursor implements AdjacencyCursor {

    long advance(long target) {
        for (var cursor : cursors) {
            cursorQueue.remove(cursor);
            // an implementation aware cursor would probably be much faster and could skip whole blocks
            // see AdjacencyDecompressingReader#advance
            while (cursor.hasNextVLong() && cursor.peekVLong() < target) {
                cursor.nextVLong();
            }
            if (cursor.hasNextVLong()) {
                cursorQueue.add(cursor);
            }
        }

        return cursorQueue.isEmpty() ? AdjacencyCursor.NOT_FOUND : nextVLong();
    }

      CompositeAdjacencyCursor(List<AdjacencyCursor> cursors);

}