@wdprlib/parser
    Preparing search index...
    footnoteBlockRule: BlockRule = ...

    Block rule for [[footnoteblock]].

    Parsing strategy:

    1. Match BLOCK_OPEN + name "footnoteblock" (case-insensitive).
    2. Parse optional attributes (title, hide) with the rule-local parser.
    3. Consume closing ]].
    4. If ctx.scope.footnoteBlockParsed is already true on the current ParseContext copy, fail. Because parseBlocksUntil spreads a fresh ctx per sibling rule, this only rejects a second [[footnoteblock]] that arrives via the parser's top-level dispatch loop in practice. See ScopeContext.footnoteBlockParsed.
    5. Replace ctx.scope with the flag set to true and emit a footnote-block element.