Absorb same-operator children through a formula after an operator swap in updateExpression.
Collapse double negation (NOT(NOT(x)) → x) during toggleNegation and normalize.
Collapse empty formulas/operators and promote single children after removal.
Insert a formula buffer when toggleNegation wraps a non-not operator in NOT.
Auto-redistribute sibling positions when a midpoint collision is detected.
Insert a formula node when wrapping/inserting creates operator-under-operator.
Granular auto-normalization flags.
Each flag controls a specific automatic structural correction during expression mutation operations. Using this object instead of a plain
booleanforautoNormalizeallows fine-grained control over which normalizations are applied.