public static void main(String[] args) {
        int n = 500000;
        long[] keys = new long[n];
        for (int i = 0; i < n; i++) {
            keys[i] = i;
        }
        XorBinaryFuse8.construct(keys);
    }
 
Execute this code will report:
java.lang.ArrayIndexOutOfBoundsException: 500001
 
Is there any paper/draft can help understand xor binary fuse algorithm?