code: private Collection<String> getRolesForSpecialSubject(String resourceName, String specialSubject) {
          int found = 0;
          Collection<String> roles = null;
          FeatureAuthorizationTableService featureAuthzTableSvc = featureAuthzTableServiceRef.getService();
          String featureAuthzRoleHeaderValue = null;
          if (featureAuthzTableSvc != null) {
              featureAuthzRoleHeaderValue = featureAuthzTableSvc.getFeatureAuthzRoleHeaderValue();
          }
          if (featureAuthzRoleHeaderValue != null &&
              !featureAuthzRoleHeaderValue.equals(MGMT_AUTHZ_ROLES)) {
              roles = featureAuthzTableSvc.getRolesForSpecialSubject(resourceName, specialSubject);
          } else {
              Iterator<AuthorizationTableService> itr = authorizationTables.getServices();
              while (itr.hasNext()) {
                  AuthorizationTableService authzTableSvc = itr.next();
                  Collection<String> rolesFound = authzTableSvc.getRolesForSpecialSubject(resourceName, specialSubject);
                  if (rolesFound != null) {
                      roles = rolesFound;
                      found++;
                  }
              }
              // We must find one, and only one, Collection of roles
              if (found > 1) {
                  Tr.error(tc, "AUTHZ_MULTIPLE_RESOURCES_WITH_SAME_NAME", resourceName);
                  roles = null;
              }
          }
          return roles;
      }
docs: Check all of the authorization table services for the resourceName.
  If no authorization table can be found for the resourceName, null
  is returned. If more than one authorization table can be found for
  the resourceName, null is returned.
  
  @param resourceName
  @param specialSubject
  @return