@Override
    public synchronized boolean isEmpty() {
        return this.rootSet.isEmpty() && CollectionUtils.isEmpty(tailList);
    }
@Test
    void testIsEmpty() {
        List<String> list = Arrays.asList("A", "B", "C");
        BitList<String> bitList = new BitList<>(list);
        bitList.add("D");

        bitList.removeAll(list);
        Assertions.assertEquals(1, bitList.size());

        bitList.remove("D");
        Assertions.assertTrue(bitList.isEmpty());
    }