class MacroBlock extends Block {

    @Override
    public void getAstExtra(@NotNull StringBuilder out) {
        if (isClosedTag()) out.append(" isClosed");
        segmentSpanChars(out, getMacroContentChars(), "macroContent");
    }

    @NotNull
    @Override
    public BasedSequence[] getSegments() {
        return Node.EMPTY_SEGMENTS;
    }

    public MacroBlock() {
    }

    public MacroBlock(BasedSequence chars) {
        super(chars);
    }

    public MacroBlock(Node node) {
        super();
        appendChild(node);
        this.setCharsFromContent();
    }

    public Map<String, String> getAttributes() {
        return getMacroNode().getAttributes();
    }

    public Macro getMacroNode() {
        Node firstChild = getFirstChild();
        assert firstChild instanceof Macro;
        return (Macro) firstChild;
    }

    public boolean isClosedTag() {
        return getMacroNode().isClosedTag();
    }

    public BasedSequence getMacroContentChars() {<FILL_FUNCTION_BODY>}
}

        Node firstChild = getFirstChild();
        Node lastChild = getLastChild();
        Node firstContentNode = firstChild.getNext();
        Node lastContentNode = lastChild instanceof MacroClose ? lastChild.getPrevious() : lastChild;

        //noinspection UnnecessaryLocalVariable
        BasedSequence contentChars = Node.spanningChars(firstContentNode == null || firstContentNode instanceof MacroClose ? BasedSequence.NULL : firstContentNode.getChars(),
                lastContentNode == null || lastContentNode == firstChild ? BasedSequence.NULL : lastContentNode.getChars());

        return contentChars;
    
<methods>public void <init>() ,public void <init>(@NotNull BasedSequence) ,public void <init>(@NotNull BasedSequence, @NotNull List<BasedSequence>) ,public void <init>(@NotNull List<BasedSequence>) ,public void <init>(com.vladsch.flexmark.util.ast.BlockContent) ,public @Nullable Block getParent() <variables>