code: def iter_items(self,  start_key=None, end_key=None, reverse=False):
          
          # optimized iterator (reduced method calls) - faster on CPython but slower on pypy
  
          if self.is_empty():
              return []
          if reverse:
              return self._iter_items_backward(start_key, end_key)
          else:
              return self._iter_items_forward(start_key, end_key)
docs: Iterates over the (key, value) items of the associated tree,
          in ascending order if reverse is True, iterate in descending order,
          reverse defaults to False