private void shift() {
        if ((int) word == 0) {
            wordShift += 32;
            word = word >>> 32;
        }
        if ((word & 0x0000FFFF) == 0) {
            wordShift += 16;
            word >>>= 16;
        }
        if ((word & 0x000000FF) == 0) {
            wordShift += 8;
            word >>>= 8;
        }
        indexArray = bitlist[(int) word & 0xff];
    }
** the python code that generated bitlist
     def bits2int(val):
     arr=0
     for shift in range(8,0,-1):
     if val & 0x80:
     arr = (arr << 4) | shift
     val = val << 1
     return arr

     def int_table():
     tbl = [ hex(bits2int(val)).strip('L') for val in range(256) ]
     return ','.join(tbl)
****
indexr-common/src/main/java/io/indexr/util/DirectBitMapIterator.java