- if (numChildren()==0) return head==null ? "{}" : head;
- ret.append(head==null?"{ ":(head+":"+nl));
+
+ Iterator<T> iterator = iterator();
+ if (!iterator.hasNext()) return head==null ? (left()+right()) : head;
+ PrintableTree t0 = iterator.next();
+ if (!iterator.hasNext() && ignoreSingleton())
+ return t0.toPrettyString(nl);
+
+ ret.append(head==null?(left()+" "):(head+":"+nl));