sclass WithReasoning extends Var { S reasoning; *() {} *(A value) { super(value); } *(A value, S *reasoning) { super(value); } toString { ret super.toString() + (empty(reasoning) ? "" : " because " + reasoning); } }