Environment
Description
When I wrap a BinaryOp\BooleanAnd node in a BooleanNot node, the format-preserving printer loses the required parentheses around the boolean AND expression. This produces semantically incorrect code.
Expected Behavior
The format-preserving printer should add parentheses around the wrapped expression:
Actual Behavior
The parentheses are missing, changing the code's meaning:
Mutation
$stmts[0]->expr->expr = new \PhpParser\Node\Expr\BooleanNot($booleanAnd);