docs: private AuthorizationService autoDetectAuthorizationService() {
          Iterator<AuthorizationService> services = authorization.getServices();
          if (services.hasNext() == false) {
              Tr.error(tc, "SECURITY_SERVICE_NO_SERVICE_AVAILABLE", KEY_AUTHORIZATION);
              throw new IllegalStateException(Tr.formatMessage(tc, "SECURITY_SERVICE_NO_SERVICE_AVAILABLE", KEY_AUTHORIZATION));
          }
  
          AuthorizationService authzService = services.next();
          if (services.hasNext()) {
              authzService = null;
              services.next();
  
              if (services.hasNext()) {
                  // more than 2 services
                  Tr.error(tc, "SECURITY_SERVICE_MULTIPLE_SERVICE_AVAILABLE", KEY_AUTHORIZATION);
                  throw new IllegalStateException(Tr.formatMessage(tc, "SECURITY_SERVICE_MULTIPLE_SERVICE_AVAILABLE", KEY_AUTHORIZATION));
  
              }
  
              boolean builtinAuthzFound = false;
  
              for (String key : authorization.keySet()) {
                  String type = (String) authorization.getReference(key).getProperty(AuthorizationService.AUTHORIZATION_TYPE);
                  if ("Builtin".equals(type)) {
                      builtinAuthzFound = true;
                  } else {
                      authzService = authorization.getService(key);
                  }
              }
  
              if (!builtinAuthzFound) {
                  Tr.error(tc, "SECURITY_SERVICE_MULTIPLE_SERVICE_AVAILABLE", KEY_AUTHORIZATION);
                  throw new IllegalStateException(Tr.formatMessage(tc, "SECURITY_SERVICE_MULTIPLE_SERVICE_AVAILABLE", KEY_AUTHORIZATION));
              }
          }
  
          return authzService;
      }