class ExpressionBuilder {
public:
ExpressionBuilder& withExpression(const Expression* ex);
ExpressionBuilder& withOperator(char operator);
Expression* build();
}
// usage:
ExpressionBuilder().withExpression(expr1).withExpression(expr2).withOperator('+').build();
Y2xhc3MgRXhwcmVzc2lvbkJ1aWxkZXIgewpwdWJsaWM6CiAgICBFeHByZXNzaW9uQnVpbGRlciYgd2l0aEV4cHJlc3Npb24oY29uc3QgRXhwcmVzc2lvbiogZXgpOwogICAgRXhwcmVzc2lvbkJ1aWxkZXImIHdpdGhPcGVyYXRvcihjaGFyIG9wZXJhdG9yKTsKICAgIEV4cHJlc3Npb24qIGJ1aWxkKCk7Cn0KCi8vIHVzYWdlOgpFeHByZXNzaW9uQnVpbGRlcigpLndpdGhFeHByZXNzaW9uKGV4cHIxKS53aXRoRXhwcmVzc2lvbihleHByMikud2l0aE9wZXJhdG9yKCcrJykuYnVpbGQoKTs=