Tricky! Maybe we should run the binary search on a copy to not mutate the hole?