public Iterator<V> iterator() {
            return new GroupValueIterator( mForward, mGroup, mComp );
        }

    }


    private final class Groups extends AbstractSet<G> {

        public int size() {
            return mGroupCount;
        }

        public boolean contains( Object group ) {
            return findGroupNode( group ) != null;
        }

        public boolean remove( Object group ) {
            GroupNode<K, V> node = findGroupNode( group );
            if( node == null ) { return false; }

            GroupMap.this.clear( (G)node.mGroup );
            return true;
        }

        public void clear() {
            GroupMap.this.clear();
        }

        public Iterator<G> iterator() {
            return new GroupTableIterator();
        }