sclass Tree { A a; L> children; *() {} *(A *a) {} *(A *a, Iterable> children) { this.children = cloneList(children); } toString { ret empty(children) ? str(a) : a + "\n" + indentx(lines(allToString(children))); } }