It's slightly more efficient to use `make_shared<InfoExpression>(condition, context);` to create the pointer here if you can get away with it.