code: @Override
      public void meld(MergeableHeap<K> other) {
          BinaryTreeSoftHeap<K> h = (BinaryTreeSoftHeap<K>) other;
  
          // check same comparator
          if (comparator != null) {
              if (h.comparator == null || !h.comparator.equals(comparator)) {
                  throw new IllegalArgumentException("Cannot meld heaps using different comparators!");
              }
          } else if (h.comparator != null) {
              throw new IllegalArgumentException("Cannot meld heaps using different comparators!");
          }
  
          if (rankLimit != h.rankLimit) {
              throw new IllegalArgumentException("Cannot meld heaps with different error rates!");
          }
  
          // perform the meld
          mergeInto(h.rootList.head, h.rootList.tail);
          size += h.size;
  
          // clear other
          h.size = 0;
          h.rootList.head = null;
          h.rootList.tail = null;
      }
docs: {@inheritDoc}
  
  @throws IllegalArgumentException
  if {@code other} has a different error rate