code: protected <C extends DeadboltHandler> DeadboltHandler getDeadboltHandler(final String handlerKey)
      {
          LOGGER.debug("Getting Deadbolt handler with key [{}]",
                       handlerKey);
          return handlerKey == null || Constants.DEFAULT_HANDLER_KEY.equals(handlerKey) ? handlerCache.get()
                                                                                         : handlerCache.apply(handlerKey);
      }
docs: Gets the current {@link DeadboltHandler}.  This can come from one of two places:
  - a handler key is provided in the annotation.  A cached instance of that class will be used. This has the highest priority.
  - the global handler defined in the application.conf by deadbolt.handler.  This has the lowest priority.
  
  @param handlerKey the DeadboltHandler key, if any, coming from the annotation.
  @param <C>        the actual class of the DeadboltHandler
  @return an option for the DeadboltHandler.