getGroupMembership

Returns an iterator over all group principals for which the given
principal is either direct or indirect member of. If a principal is
a direct member of a group, then Group.isMember(Principal)
evaluates to true. A principal is an indirect member of a
group if any of its groups (to any degree of separation) is direct memeber
of the group.

Example:
If Principal is member of Group A, and Group A is member of
Group B, this method will return Group A and Group B.