@Override
    @ConstantTime
    public Handle<K, V> insert(K key, V value) {
        if (key == null) {
            throw new IllegalArgumentException("Null keys not permitted");
        }
        if (compare(key, maxKey) > 0) {
            throw new IllegalArgumentException("Key is more than the maximum allowed key");
        }
        if (compare(key, lastDeletedKey) < 0) {
            throw new IllegalArgumentException("Invalid key. Monotone heap.");
        }

        // add to bucket
        Node p = new Node(key, value);
        int b = computeBucket(key, lastDeletedKey);
        p.bucket = b;
        if (buckets[b] == null) {
            buckets[b] = p;
        } else {
            buckets[b].prev = p;
            p.next = buckets[b];
            buckets[b] = p;
        }

        // update current minimum cache
        if (currentMin == null || compare(key, currentMin.key) < 0) {
            currentMin = p;
        }

        size++;
        return p;
    }
@ Override @ ConstantTime public Handle < K , V > insert ( K key , V value ) { if ( key == null ) { throw new IllegalArgumentException ( "Null keys not permitted" ) ; } if ( compare ( key , maxKey ) > 0 ) { throw new IllegalArgumentException ( "Key is more than the maximum allowed key" ) ; } if ( compare ( key , lastDeletedKey ) < 0 ) { throw new IllegalArgumentException ( "Invalid key. Monotone heap." ) ; } Node p = new Node ( key , value ) ; int b = computeBucket ( key , lastDeletedKey ) ; p . bucket = b ; if ( buckets [ b ] == null ) { buckets [ b ] = p ; } else { buckets [ b ] . prev = p ; p . next = buckets [ b ] ; buckets [ b ] = p ; } if ( currentMin == null || compare ( key , currentMin . key ) < 0 ) { currentMin = p ; } size ++ ; return p ; }
{@inheritDoc}

@throws IllegalArgumentException
if the key is null
@throws IllegalArgumentException
if the key is less than the minimum allowed key
@throws IllegalArgumentException
if the key is more than the maximum allowed key
@throws IllegalArgumentException
if the key is less than the last deleted key (or the minimum
key allowed if no key has been deleted)