code: protected Set<IEntityGroup> primGetAncestorGroups(IGroupMember member, Set<IEntityGroup> rslt)
              throws GroupsException {
          for (IEntityGroup group : member.getParentGroups()) {
              // avoid stack overflow in case of circular group dependencies
              if (!rslt.contains(group)) {
                  rslt.add(group);
                  primGetAncestorGroups(group, rslt);
              }
          }
          return rslt;
      }
docs: Returns the <code>Set</code> of groups in our member <code>Collection</code> and,
  recursively, in the <code>Collections</code> of our members.
  
  @param member org.apereo.portal.groups.IGroupMember - The current group member in the
  recursive execution.
  @param rslt Set - A Set that groups are added to.
  @return Set