private function traverseNot(Not $expr) { $negatedExpr1 = $expr->getNegatedExpression(); $negatedExpr2 = $this->traverse($negatedExpr1); if ($negatedExpr1 === $negatedExpr2) { return $expr; } return $negatedExpr2 ? new Not($negatedExpr2) : null; }