docs: @Override
      public boolean isAuthorized(String resourceName,
                                  Collection<String> requiredRoles, final Subject inSubject) {
          validateInput(resourceName, requiredRoles);
  
          Subject subject = inSubject;
          if (subject == null) {
              subject = subjManager.getCallerSubject();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
              Tr.event(tc, "Determining if Subject is authorized to access resource " + resourceName + ". Specified required roles are " + requiredRoles + ".", subject);
          }
  
          if (requiredRoles.isEmpty()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                  Tr.event(tc, "Subject is authorized to access resource " + resourceName + " as there are no required roles.", subject);
              }
              return true;
          }
  
          // first, check if Everyone is granted
          if (isEveryoneGranted(resourceName, requiredRoles)) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                  Tr.event(tc, "Subject is authorized to access resource " + resourceName + " as everyone is authorized.", subject);
              }
              return true;
          }
  
          // make sure subject is valid and authenticated
          if (!isSubjectValid(subject)) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                  Tr.event(tc, "Subject is NOT authorized to access resource " + resourceName + " as the subject is not valid.", subject);
              }
              return false;
          } else {
              // second, check if AllAuthenticated is granted
              if (isAllAuthenticatedGranted(resourceName, requiredRoles, subject)) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                      Tr.event(tc, "Subject is authorized to access resource " + resourceName + " as all authenticated users are authorized.", subject);
                  }
                  return true;
              }
  
              // finally, check if the passed-in subject is authorized
              boolean authorized = isSubjectAuthorized(resourceName, requiredRoles, subject);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                  if (authorized) {
                      Tr.event(tc, "Subject is authorized to access resource " + resourceName + " as the Subject possesses one of the required roles.", subject);
                  } else {
                      List<String> rolesList = new ArrayList<String>();
                      Iterator<String> iter = requiredRoles.iterator();
                      while (iter.hasNext()) {
                          rolesList.add(iter.next());
                      }
                      Tr.event(tc, "Subject is NOT authorized to access resource " + resourceName + " as the Subject does not possess one of the required roles: " + rolesList,
                               subject);
                  }
              }
              return authorized;
          }
      }