UnaryExpression uses unique_ptr