private void resizeKeys( int newCapacity ) {
        Node<K, V>[] oldBuckets = mKeyBuckets;

        int oldCap = oldBuckets.length;
        if( oldCap >= MAXIMUM_CAPACITY ) {
            mKeyThreshold = Integer.MAX_VALUE;
            return;
        }

        Node<K, V>[] newBuckets = new Node[newCapacity];

        for( int i = 0; i < oldBuckets.length; i++ ) {
            Node<K, V> node = oldBuckets[i];

            while( node != null ) {
                Node<K, V> next = node.mNext;

                int idx = (node.mHash & (newCapacity - 1));
                node.mNext = newBuckets[idx];
                newBuckets[idx] = node;

                node = next;
            }
        }

        mKeyBuckets = newBuckets;
        mKeyThreshold = (int)(newCapacity * mKeyLoadFactor);
    }