protected function examineExpression($node)
{
if ($node instanceof Variable) {
return $this->wrapNodeWithMagicMethods($node);
}
if ($node instanceof PropertyFetch) {
return $this->wrapNodeWithMagicMethods($node);
}
if ($node instanceof MethodCall) {
return $this->wrapNodeWithMagicMethods($node);
}
if ($node instanceof Ternary) {
$node->if = $this->examineExpression($node->if);
$node->else = $this->examineExpression($node->else);
return $node;
}
if ($node instanceof Concat) {
$node->left = $this->examineExpression($node->left);
$node->right = $this->examineExpression($node->right);
return $node;
}
if ($node instanceof Arg) {
$node->value = $this->examineExpression($node->value);
return $node;
}
if ($node instanceof FuncCall) {
return $this->examineFunction($node);
}
return $node;
}