code: @Override
      @SuppressWarnings("unchecked")
      @ConstantTime(amortized = true)
      public AddressableHeap.Handle<K, V> insert(K key, V value) {
          if (other != this) {
              throw new IllegalStateException("A heap cannot be used after a meld");
          }
          if (key == null) {
              throw new NullPointerException("Null keys not permitted");
          }
  
          Node<K, V> n = new Node<K, V>(this, key, value);
          if (root == null) {
              root = n;
          } else {
              if (comparator == null) {
                  if (((Comparable<? super K>) n.key).compareTo(root.key) < 0) {
                      root = link(root, n);
                  } else {
                      link(n, root);
                  }
              } else {
                  if (comparator.compare(n.key, root.key) < 0) {
                      root = link(root, n);
                  } else {
                      link(n, root);
                  }
              }
          }
          size++;
          return n;
      }
docs: {@inheritDoc}
  
  @throws IllegalStateException
  if the heap has already been used in the right hand side of a
  meld