code: @SuppressWarnings("unchecked")
      private void decreaseKey(Node<K, V> n, K newKey) {
          int c = ((Comparable<? super K>) newKey).compareTo(n.key);
          if (c > 0) {
              throw new IllegalArgumentException("Keys can only be decreased!");
          }
          n.key = newKey;
          if (c == 0) {
              return;
          }
  
          if (n.next == null) {
              throw new IllegalArgumentException("Invalid handle!");
          }
  
          // if not root and heap order violation
          Node<K, V> y = n.parent;
          if (y != null && ((Comparable<? super K>) n.key).compareTo(y.key) < 0) {
              cut(n, y);
              cascadingCut(y);
          }
  
          // update minimum root
          if (((Comparable<? super K>) n.key).compareTo(minRoot.key) < 0) {
              minRoot = n;
          }
      }
docs: /*
  Decrease the key of a node.