class JekyllTagNodeRenderer implements NodeRenderer {
    final private boolean embedIncludes;
    final private Map<String, String> includeContent;

    public JekyllTagNodeRenderer(DataHolder options) {
        includeContent = JekyllTagExtension.INCLUDED_HTML.get(options);
        embedIncludes = JekyllTagExtension.EMBED_INCLUDED_CONTENT.get(options);
    }

    @Override
    public Set<NodeRenderingHandler<?>> getNodeRenderingHandlers() {
        Set<NodeRenderingHandler<?>> set = new HashSet<>();
        // @formatter:off
        set.add(new NodeRenderingHandler<>(JekyllTag.class, this::render));
        set.add(new NodeRenderingHandler<>(JekyllTagBlock.class, this::render));
        // @formatter:on
        return set;
    }

    private void render(JekyllTag node, NodeRendererContext context, HtmlWriter html) {
        if (embedIncludes) {
            context.renderChildren(node);
        } else {
            // nothing to do since includes are not rendered
        }
    }

    private void render(JekyllTagBlock node, NodeRendererContext context, HtmlWriter html) {<FILL_FUNCTION_BODY>}

    public static class Factory implements NodeRendererFactory {
        @NotNull
        @Override
        public NodeRenderer apply(@NotNull DataHolder options) {
            return new JekyllTagNodeRenderer(options);
        }
    }
}

//        if (embedIncludes) {
//            // remove jekyll tag node and just leave the included content
//            Node child = node.getFirstChild();
//
//            if (child != null) child = child.getNextAnyNot(JekyllTag.class);
//
//            while (child != null) {
//                Node next = child.getNextAnyNot(JekyllTag.class);
//                context.render(child);
//                child = next;
//            }
//        } else {
//            Node child = node.getFirstChild();
//            while (child != null) {
//                Node next = child.getNextAny(JekyllTag.class);
//                context.render(child);
//                child = next;
//            }
//        }
        context.renderChildren(node);
    
<no_super_class>