private void removeGroupNode( GroupNode<K, V> groupNode ) {
        final GroupNode<K, V>[] buckets = mGroupBuckets;
        final int               idx     = (groupNode.mHash & (buckets.length - 1));

        GroupNode<K, V> parent = null;
        GroupNode<K, V> g      = buckets[idx];

        while( g != null ) {
            if( groupNode == g ) {
                mModCount++;
                mGroupCount--;

                if( parent == null ) {
                    buckets[idx] = g.mNext;
                } else {
                    parent.mNext = g.mNext;
                }

                break;
            }

            parent = g;
            g = g.mNext;
        }
    }