Reading the paper about block indirect sort I was very puzzled of how one could manage the blocks indirectly without some sort of index, whose size would have been linear in the data (very small, like below 1%, but still depending on the data, not on the number of threads). Looking at the code, it seems to me that the variable std::vector<block_pos> index of the backbone is in fact a vector of additional usize values of length equal to the number of blocks. Am I correct?