docs: private User checkExistsAndAuthz(final Cache<String, User> cache, final User user, final AuthenticationBackend authenticationBackend,
              final Set<AuthorizationBackend> authorizers) {
          if (user == null) {
              return null;
          }
  
          try {
              return cache.get(user.getName(), new Callable<User>() { //no cache miss in case of noop
                  @Override
                  public User call() throws Exception {
                      if (log.isTraceEnabled()) {
                          log.trace("Credentials for user " + user.getName() + " not cached, return from " + authenticationBackend.getType()
                                  + " backend directly");
                      }
                      if (authenticationBackend.exists(user)) {
                          authz(user, null, authorizers); //no role cache because no miss here in case of noop
                          return user;
                      }
  
                      if (log.isDebugEnabled()) {
                          log.debug("User " + user.getName() + " does not exist in " + authenticationBackend.getType());
                      }
                      return null;
                  }
              });
          } catch (Exception e) {
              if (log.isDebugEnabled()) {
                  log.debug("Can not check and authorize " + user.getName() + " due to " + e.toString(), e);
              }
              return null;
          }
      }