public static AscendingLongIterator or(AscendingLongIterator[] iterators) {
        return new OrIterator(iterators);
    }
@Test
    public void testOr() {
        long seed = System.nanoTime();
        System.out.println(getClass().getSimpleName() + ".testOr seed: " + seed);

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

        generate(0, 75000, 1);
        verifyOr();

        generate(100, 40000, 2);
        verifyOr();

        generate(200, 30000, 3);
        verifyOr();

        actual.add(new SparseBitSet());
        expected.add(new TreeSet<>());
        verifyOr();
        actual.remove(actual.size() - 1);
        expected.remove(expected.size() - 1);

        generate(2000000, 30000, 3);
        verifyOr();
        actual.remove(actual.size() - 1);
        expected.remove(expected.size() - 1);

        generateRandom(seed, 10000, 50000);
        verifyOr();

        generateRandom(seed, 20000, -1);
        verifyOr();

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

        generateRandom(seed, 40000, 100000);
        verifyOr();

        generateRandom(seed, 40000, 100000);
        verifyOr();

        generateRandom(seed, 500000, -1);
        verifyOr();
    }