public static AscendingLongIterator not(AscendingLongIterator iterator, SparseArray<?> universe) {
        return new NotIterator(iterator, universe);
    }
@Test
    public void testNot() {
        long seed = System.nanoTime();
        System.out.println(getClass().getSimpleName() + ".testNot seed: " + seed);

        actual.add(new SparseBitSet());
        expected.add(new TreeSet<>());
        verifyNotAndThenClear();

        generateUniverse(0, 75000, 1);
        actual.add(new SparseBitSet());
        expected.add(new TreeSet<>());
        verifyNotAndThenClear();

        generateUniverse(0, 70000, 1);
        generate(0, 70000, 1);
        verifyNotAndThenClear();

        generateUniverse(0, 70000, 2);
        generate(0, 70000, 1);
        verifyNotAndThenClear();

        generateUniverse(100, 75000, 1);
        generateRandom(seed, 50000, 100000);
        verifyNotAndThenClear();

        generateUniverse(100, 75000, 2);
        generateRandom(seed, 50000, 100000);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 60000, 100000);
        generateRandom(seed, 60000, 100000);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 40000, 100000);
        generateRandom(seed, 40000, -1);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 75000, -1);
        generateRandom(seed, 75000, -1);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 1000, -1);
        generateRandom(seed, 1000, -1);
        actual.get(0).add(Long.MAX_VALUE);
        expected.get(0).add(Long.MAX_VALUE);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 2000, -1);
        generateRandom(seed, 2000, -1);
        actual.get(0).add(Long.MAX_VALUE - 1);
        actual.get(0).add(Long.MAX_VALUE);
        expected.get(0).add(Long.MAX_VALUE - 1);
        expected.get(0).add(Long.MAX_VALUE);
        verifyNotAndThenClear();

        generateRandomUniverse(seed, 500000, -1);
        generateRandom(seed, 500000, -1);
        actual.get(0).add(Long.MAX_VALUE - 2);
        actual.get(0).add(Long.MAX_VALUE - 1);
        actual.get(0).add(Long.MAX_VALUE);
        expected.get(0).add(Long.MAX_VALUE - 2);
        expected.get(0).add(Long.MAX_VALUE - 1);
        expected.get(0).add(Long.MAX_VALUE);
        verifyNotAndThenClear();
    }