docs: @Override
      public Iterator findParentGroups(IGroupMember gm) throws GroupsException {
          Collection allGroups = new ArrayList();
  
          for (IIndividualGroupService service :
                  (Collection<IIndividualGroupService>) getComponentServices().values()) {
              if (!gm.isGroup()
                      || service.isEditable()
                      || getComponentService(((IEntityGroup) gm).getServiceName()) == service) {
                  {
                      for (Iterator groups = service.findParentGroups(gm); groups.hasNext(); ) {
                          allGroups.add((IEntityGroup) groups.next());
                      }
                  }
              }
          }
          return allGroups.iterator();
      }