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