public final G next() {
            if( mModCount != mIterModCount ) { throw new ConcurrentModificationException(); }

            if( mNext == null ) { throw new NoSuchElementException(); }

            mPrev = mNext;
            mNext = mNext.mNext;
            GroupNode<K, V>[] buckets = mGroupBuckets;

            while( mNext == null ) {
                if( mIndex >= buckets.length ) { return (G)mPrev.mGroup; }

                mNext = buckets[mIndex++];
            }

            return (G)mPrev.mGroup;
        }