pub fn split_block<F>(&mut self, block_index: BlockIndex, predicate: F) -> Option<BlockIndex>
let new_block = Block::new(self.blocks[block_index].begin + size, self.blocks[block_index].end);
let block_partition: BlockPartition<()> = BlockPartition::from_indexed_partition(&partition);
assert_eq!(partition.block(element), expected_block, "Block {block} contains elements from different indexed-partition blocks");