private function traverseConjunction(AndX $expr)
{
$conjuncts1 = $expr->getConjuncts();
$conjuncts2 = array();
foreach ($conjuncts1 as $conjunct) {
if ($conjunct = $this->traverse($conjunct)) {
$conjuncts2[] = $conjunct;
}
}
if ($conjuncts1 === $conjuncts2) {
return $expr;
}
return $conjuncts2 ? new AndX($conjuncts2) : null;
}