// multi-level structureLines static S structureTree(O data) { if (data instanceof O[]) data = asList((O[]) data); if (data instanceof Collection) { new L l; l.add(shortClassName(data)); for (O x : (Collection) data) l.add(structureTree(x)); ret indentx(fromLines(l)); } ifclass MultiSet if (data instanceof MultiSet) data = multiSetToMap(data/MultiSet); endif if (data instanceof Map) { new L l; for (O key : ((Map) data).keySet()) { O value = ((Map) data).get(key); l.add(structureForUser(key) + " = " + structureForUser(value)); } ret fromLines(l); } ret structureForUser(data); }