int (int index) { index++; int bindex = index >>> 5; int dindex = index & 0x1F; while (bindex < data.length) { int block = data[bindex]; if (block != 0) { block >>>= dindex; while (dindex < 32) { if ((block & 1) != 0) { return (bindex << 5) + dindex; } block >>>= 1; dindex++; } } dindex = 0; bindex = next[bindex]; if (bindex == 0) { break; } } return -1; }