code: @Override
      public boolean isUserDeepMemberOfGroupName(String userName, String groupName) {
          final EntityIdentifier[] results =
                  GroupService.searchForGroups(
                          groupName, GroupService.SearchMethod.DISCRETE, IPerson.class);
          if (results == null || results.length == 0) {
              return false;
          }
  
          if (results.length > 1) {
              this.logger.warn(
                      results.length
                              + " groups were found for '"
                              + groupName
                              + "'. The first result will be used.");
          }
  
          final IGroupMember group = GroupService.getGroupMember(results[0]);
  
          final IEntity entity = GroupService.getEntity(userName, IPerson.class);
          if (entity == null) {
              if (this.logger.isDebugEnabled()) {
                  this.logger.debug("No user found for key '" + userName + "'");
              }
  
              return false;
          }
  
          return group.asGroup().deepContains(entity);
      }
docs: /* (non-Javadoc)
  @see org.apereo.portal.security.xslt.IXalanGroupMembershipHelper#isUserDeepMemberOfGroupName(java.lang.String, java.lang.String)
  
  groupName is case sensitive.