private function traverseKey(Key $expr) { $innerExpr1 = $expr->getExpression(); $innerExpr2 = $this->traverse($innerExpr1); if ($innerExpr1 === $innerExpr2) { return $expr; } return $innerExpr2 ? new Key($expr->getKey(), $innerExpr2) : null; }