public BucketProgress getNext() {
            assert(hasNext()) : "getNext() called with hasNext() == false";

            // Create the progress to return for creating visitors, and advance bucket cursor.
            BucketProgress progress = new BucketProgress(progressToken.getCurrentBucketId(), new BucketId());
            progressToken.setBucketCursor(progressToken.getBucketCursor() + 1);

            // Skip ahead to our next next slice, to ensure we also exhaust the bucket space when
            // hasNext() turns false, but there are still super buckets left after the current.
            skipToSlice();

            return progress;
        }
Ensure that a given <code>ProgressToken</code> instance only has
buckets pending that have a used-bits count of that of the
<code>targetDistCits</code>. This is done by splitting or merging
all inconsistent buckets until the desired state is reached.

Time complexity is approx <i>O(4bn)</i> where <i>b</i> is the maximum
delta of bits to change anywhere in the set of pending and <i>n</i>
is the number of pending. This includes the time spent making shallow
map copies.

@param targetDistBits The desired distribution bit count of the buckets
documentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java