class_docstr: Allocator class for managing which blocks are free/used in the
  blocked KV-cache. This is a simple allocator that uses a linked list
  to keep track of which blocks are free/used. The cost of allocation/deallocation
  is O(blocks), where blocks is the number of blocks to allocate/deallocate.
  
  TODO(cmikeh2): Evaluate performance of this allocator and migrate
  to C++ if necessary.
docstr: Return the number of free blocks in the KV-cache.
docstr_tok: ["Return","the","number","of","free","blocks","in","the","KV-cache","."]
code: def free_blocks(self) -> int:
      """
      Return the number of free blocks in the KV-cache.
      """
      return self._free_blocks
  
imports: from typing import Iterable, Union
  import torch
label_desc: Use image node_id 4 for calling the BlockedAllocator obj's underlying member method code with example usage: obj.free_blocks() and returns: self