class FreemarkerEngine extends EngineTemplate<Configuration> {

    @Override
    public Tpl.Engine engine() {
        return Tpl.Engine.FreeMarker;
    }

    @Override
    public Configuration init() {<FILL_FUNCTION_BODY>}

    @SneakyThrows
    @Override
    public void render(Configuration configuration, String filePath, Map<String, Object> bindingMap, Writer out) {
        configuration.getTemplate(filePath).process(bindingMap, out);
    }

}

        Configuration freemarkerConfig = new Configuration(Configuration.VERSION_2_3_29);
        freemarkerConfig.setDefaultEncoding(StandardCharsets.UTF_8.name());
        freemarkerConfig.setClassForTemplateLoading(this.getClass(), "/");
        return freemarkerConfig;
    
<methods>public non-sealed void <init>() ,public abstract xyz.erupt.annotation.sub_erupt.Tpl.Engine engine() ,public Configuration getEngine() ,public abstract Configuration init() ,public abstract void render(Configuration, java.lang.String, Map<java.lang.String,java.lang.Object>, java.io.Writer) ,public void setEngine(Configuration) <variables>private Configuration engine