@Override
    public synchronized ListIterator<E> listIterator() {
        return new BitListIterator<>(this, 0);
    }
@Test
    void testListIterator1() {
        List<String> list = Arrays.asList("A", "B", "C", "D", "E");
        BitList<String> bitList = new BitList<>(list);

        ListIterator<String> listIterator = bitList.listIterator(2);
        ListIterator<String> expectedIterator = list.listIterator(2);

        while (listIterator.hasNext()) {
            Assertions.assertEquals(expectedIterator.nextIndex(), listIterator.nextIndex());
            Assertions.assertEquals(expectedIterator.next(), listIterator.next());
        }

        while (listIterator.hasPrevious()) {
            Assertions.assertEquals(expectedIterator.previousIndex(), listIterator.previousIndex());
            Assertions.assertEquals(expectedIterator.previous(), listIterator.previous());
        }
    }