Instead of a hash map mapping pairs of blocks and successor index to the probability, store the probabilities as flat array and start indices into this array in a per-block information vector. Also drop value handles: no stored pointers => no stale pointers. If a block is removed, the block number is not reused unless the function is renumbered, and BPI doesn't support renumbering.