docs: private TemplateNode renderMainHelper(
        Appendable outputBuf,
        String templateName,
        @Nullable SoyRecord data,
        @Nullable SoyRecord ijData,
        Predicate<String> activeDelPackageNames,
        @Nullable SoyMsgBundle msgBundle,
        @Nullable SoyIdRenamingMap idRenamingMap,
        @Nullable SoyCssRenamingMap cssRenamingMap,
        boolean debugSoyTemplateInfo,
        ImmutableMap<String, Supplier<Object>> pluginInstances) {
  
      // templateNode is always guaranteed to be non-null because for a tofu compile all templates are
      // considered source files
      TemplateNode template = basicTemplates.get(templateName);
      if (template == null) {
        throw new SoyTofuException("Attempting to render undefined template '" + templateName + "'.");
      } else if (template.getVisibility() == Visibility.PRIVATE) {
        throw new SoyTofuException("Attempting to render private template '" + templateName + "'.");
      }
  
      if (data == null) {
        data = SoyValueConverter.EMPTY_DICT;
      }
      if (ijData == null) {
        ijData = SoyValueConverter.EMPTY_DICT;
      }
  
      try {
        RenderVisitor rv =
            new RenderVisitor(
                new EvalVisitorFactoryImpl(),
                outputBuf,
                basicTemplates,
                delTemplates,
                data,
                ijData,
                activeDelPackageNames,
                msgBundle,
                idRenamingMap,
                cssRenamingMap,
                debugSoyTemplateInfo,
                pluginInstances);
        rv.exec(template);
  
      } catch (RenderException re) {
        throw new SoyTofuException(re);
      }
  
      return template;
    }