code: @SuppressWarnings("unchecked")
      public static Optional<AlexaIntentHandler> createHandler(final AlexaInput input) {
          try {
              final Class factoryImpl = Class.forName(FACTORY_PACKAGE + "." + FACTORY_CLASS_NAME);
              final Method method = factoryImpl.getMethod(FACTORY_METHOD_NAME, AlexaInput.class);
              final Object handler = method.invoke(null, input);
              return handler != null ? Optional.of((AlexaIntentHandler)handler) : Optional.empty();
          } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
              LOG.error("Could not access generated factory to obtain intent handlers likely because there is no valid intent handler in your project at all.", e);
              return Optional.empty();
          }
      }
docs: Constructs the AlexaIntentHandler which is tagged with the AlexaIntentListener-annotation.
  If more than one handler for an intent is found it returns the one whose verify-method returns
  true. If even then there's more than one handler the one with the highest priority wins (you
  set the priority of an AlexaIntentHanlder in the AlexaIntentListener-annotation.
  @param input the input which should be handled. Most important is the intent name in the
  input as it is the matching criteria for finding the right intent handler.
  @return AlexaLaunchHandler to handle launch events of your skill