// second type parameter defaults to Object
sclass WithTrail extends Var {
B trail;
*() {}
*(A value) { super(value); }
*(B *trail, A value) { super(value); }
toString {
if (trail == null) ret super.toString();
ret super.toString() + "\n" +
indentx("[Trail: " + trail + "]");
}
}