code: @Override
      @LogarithmicTime(amortized = true)
      public Handle<K, V> deleteMin() {
          if (size == 0) {
              throw new NoSuchElementException();
          }
          Node<K, V> oldRoot = root;
  
          // easy special cases
          if (size == 1) {
              root = null;
              size = 0;
              return oldRoot;
          } else if (size == 2) {
              root = root.o_c;
              root.o_c = null;
              root.y_s = null;
              size = 1;
              oldRoot.o_c = null;
              return oldRoot;
          }
  
          root = unlinkAndUnionChildren(root);
          size--;
  
          return oldRoot;
      }
docs: {@inheritDoc}