sclass WithReasoning extends Var { S reasoning; *() {} *(A value) { super(value); } *(A value, S *reasoning) { super(value); } toString { if (empty(reasoning)) ret super.toString(); ret super.toString() + "\n" + indentx("[Reasoning: " + reasoning + "]"); } }