code: @Override
      @LogarithmicTime(amortized = true)
      public AddressableHeap.Handle<K, V> deleteMin() {
          if (size == 0) {
              throw new NoSuchElementException();
          }
          // assert root.o_s == null && root.y_s == null;
  
          Handle<K, V> oldRoot = root;
  
          // cut all children, combine them and overwrite old root
          root = combine(cutChildren(root));
  
          // decrease size
          size--;
  
          return oldRoot;
      }
docs: {@inheritDoc}