code: def _siftdown_max(heap, startpos, pos):
      'Maxheap variant of _siftdown'
      newitem = heap[pos]
      # Follow the path to the root, moving parents down until finding a place
      # newitem fits.
      while pos > startpos:
          parentpos = (pos - 1) >> 1
          parent = heap[parentpos]
          if parent < newitem:
              heap[pos] = parent
              pos = parentpos
              continue
          break
      heap[pos] = newitef _siftdown_max(heap, startpos, pos):
      'Maxheap variant of _siftdown'
      newitem = heap[pos]
      # Follow the path to the root, moving parents down until finding a place
      # newitem fits.
      while pos > startpos:
          parentpos = (pos - 1) >> 1
          parent = heap[parentpos]
          if parent < newitem:
              heap[pos] = parent
              pos = parentpos
              continue
          break
      heap[pos] = newitem
docs: Maxheap variant of _siftdown