pub fn build_bracket_plan(events: &[IrEvent]) -> BracketPlanExpand description
Build a BracketPlan from the resolved IR. Each OpenBracket
resolution becomes an BracketDispo::Open keyed at the opener’s
start byte. Unresolved openers and unmatched closers become
BracketDispo::Literal so the emission path can recognise them
without re-parsing.