code: @Override
      public Output render(TemplateContentData templateContentData,
                                     Map<String, Object> dataMap) throws TemplateRendererException {
          byte[] contentBytes = templateContentData.getTemplateContent();
          try (Reader reader = new InputStreamReader(new ByteArrayInputStream(contentBytes), STANDARD_CHARSET);
               ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
               Writer writer = new OutputStreamWriter(byteArrayOutputStream, STANDARD_CHARSET)) {
              updateLoadingConfig(templateContentData);
              Template template = new Template(templateContentData.getIdentifier(), reader, configuration);
              template.process(dataMap, writer);
              return unmarshaller.unmarshall(byteArrayOutputStream.toByteArray()).get().getUnmarshalledRequest();
          } catch (IOException e) {
              String exceptionMsg = "Unable to process invalid template";
              throw throwException(exceptionMsg, e, templateContentData, dataMap);
          } catch (TemplateException e) {
              String exceptionMsg = "Unable to process template";
              throw throwException(exceptionMsg, e, templateContentData, dataMap);
          } catch (AskSdkException e) {
              String exceptionMsg = "Unable to unmarshall template";
              throw throwException(exceptionMsg, e, templateContentData, dataMap);
          }
      }
docs: Render {@link TemplateContentData} by processing data and deserialize to skill response output.
  
  @param templateContentData {@link TemplateContentData} that contains template content
  @param dataMap map that contains injecting data
  @return skill response output.
  @throws TemplateRendererException if fail to render template or deserialize to skill response output.