public AscendingLongIterator iterator() {
        return new IteratorImpl(storages);
    }
@Test
    public void testIteratorAdvanceAtLeastToDistinctPrefixes() {
        long prefix = ((long) Integer.MAX_VALUE * 2 + 1);

        set(0);
        verifyAdvanceAtLeastTo();
        set(prefix + 1);
        verifyAdvanceAtLeastTo();
        set(prefix * 3 + 1);
        verifyAdvanceAtLeastTo();
        set(prefix * 4 + 1);
        verifyAdvanceAtLeastTo();
        set(prefix * 5 + 1);
        verifyAdvanceAtLeastTo();

        AscendingLongIterator iterator = actual.iterator();
        // try advance to the gap
        iterator.advanceAtLeastTo(prefix * 2 + 1);
        verify(iterator, expected.tailSet(prefix * 2 + 1));
    }