code: public TemplateParserResult parseHtmlTemplate(String htmlTemplate,
        TemplateParserContext context, Elements elements, Messager messager, URI htmlTemplateUri) {
      this.context = context;
      this.elements = elements;
      this.messager = messager;
      this.logger = new TemplateParserLogger(context, messager);
      this.htmlTemplateUri = htmlTemplateUri;
  
      initJerichoConfig(this.logger);
  
      Source source = new Source(htmlTemplate);
      outputDocument = new OutputDocument(source);
  
      result = new TemplateParserResult(context);
      processImports(source);
      result.setScopedCss(processScopedCss(source));
      source.getChildElements().forEach(this::processElement);
  
      result.setProcessedTemplate(outputDocument.toString());
      return result;
    }
docs: Parse a given HTML template and return the a result object containing the expressions and a
  transformed HTML.
  
  @param htmlTemplate The HTML template to process, as a String
  @param context Context of the Component we are currently processing
  @param messager Used to report errors in template during Annotation Processing
  @return A {@link TemplateParserResult} containing the processed template and expressions