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 + "]");
}
}