public void add(int value) {
        add(Util.toUnsignedLong(value));
    }
@Test
    public void testEqual() {
        // empty == empty
        BitmapValue emp1 = new BitmapValue();
        BitmapValue emp2 = new BitmapValue();
        assertEquals(emp1, emp2);

        // empty == single value
        emp2.add(1);
        Assert.assertNotEquals(emp1, emp2);
        // empty == bitmap
        emp2.add(2);
        Assert.assertNotEquals(emp1, emp2);

        // single value = empty
        BitmapValue sgv = new BitmapValue();
        sgv.add(1);
        BitmapValue emp3 = new BitmapValue();
        Assert.assertNotEquals(sgv, emp3);
        // single value = single value
        BitmapValue sgv1 = new BitmapValue();
        sgv1.add(1);
        BitmapValue sgv2 = new BitmapValue();
        sgv2.add(2);
        assertEquals(sgv, sgv1);
        Assert.assertNotEquals(sgv, sgv2);
        // single value = bitmap
        sgv2.add(3);
        Assert.assertNotEquals(sgv, sgv2);

        // bitmap == empty
        BitmapValue bitmapValue = new BitmapValue();
        bitmapValue.add(1);
        bitmapValue.add(2);
        BitmapValue emp4 = new BitmapValue();
        Assert.assertNotEquals(bitmapValue, emp4);
        // bitmap == singlevalue
        BitmapValue sgv3 = new BitmapValue();
        sgv3.add(1);
        Assert.assertNotEquals(bitmapValue, sgv3);
        // bitmap == bitmap
        BitmapValue bitmapValue1 = new BitmapValue();
        bitmapValue1.add(1);
        BitmapValue bitmapValue2 = new BitmapValue();
        bitmapValue2.add(1);
        bitmapValue2.add(2);
        assertEquals(bitmapValue, bitmapValue2);
        Assert.assertNotEquals(bitmapValue, bitmapValue1);
    }