binaryOpManipulator = $binaryOpManipulator; } public function createInvertedCondition(Expr $expr) : Expr { // inverse condition if ($expr instanceof BinaryOp) { $binaryOp = $this->binaryOpManipulator->invertCondition($expr); if (!$binaryOp instanceof BinaryOp) { return new BooleanNot($expr); } if ($binaryOp instanceof BooleanAnd) { return new BooleanNot($expr); } return $binaryOp; } if ($expr instanceof BooleanNot) { return $expr->expr; } return new BooleanNot($expr); } }