int (int bitIndex, int[] bits, int bitsLength) { int wordIndex = bitIndex >> INT_BITS_SHIFT; if (wordIndex >= bitsLength) { return -1; } int word = bits[wordIndex] & (-1 << bitIndex); while (true) { if (word != 0) { return (wordIndex << INT_BITS_SHIFT) + Long.numberOfTrailingZeros(word); } if (++wordIndex == bitsLength) { return -1; } word = bits[wordIndex]; } }