fn allocate_new_block(&self, state: &ThreadLocalAllocState<T, N>) -> Result<NonNull<T>, AllocError> {
let mut freelist_ptrs: std::collections::HashSet<*mut Entry<T>> = std::collections::HashSet::new();
/// Removes free blocks from the underlying block allocator, see [`BlockAllocator::remove_free_blocks`].
/// If the element is free, this points to the next entry in the freelist, or null if this is the last entry.