docs: def make_forest(self, chunksize):
          """ Divide a tree branch to a forest, 
              each subtree of size at most chunksize """
          heap = []
          heappush(heap, (-self.size, self))
          while True:
              w, x = heappop(heap)
              if w == 0: 
                  heappush(heap, (0, x))
                  break
              if x.less is None \
              or (x.size < chunksize):
                  heappush(heap, (0, x))
                  continue
              heappush(heap, (x.less.size, x.less))
              heappush(heap, (x.greater.size, x.greater))
          for w, x in heap:
              yield x