code: @Override
      public Output processTemplate(String responseTemplateName, Map<String, Object> dataMap, Input input) throws TemplateFactoryException {
          if (templateLoaders == null || templateLoaders.isEmpty() || templateRenderer == null) {
              String message = "Template Loader list is null or empty, or Template Renderer is null.";
              LOGGER.error(message);
              throw new TemplateFactoryException(message);
          }
          TemplateContentData templateContentData = loadTemplate(responseTemplateName, input);
          Output response = renderResponse(templateContentData, dataMap);
          return response;
      }
docs: Process template and data using provided {@link TemplateLoader} and {@link TemplateRenderer} to generate skill response output.
  
  @param responseTemplateName name of response template
  @param dataMap map contains injecting data
  @param input skill input
  @return Output skill response output if loading and rendering successfully
  @throws TemplateFactoryException if fail to load or render template