static S dynRenderConcept(O c) { if (c == null) ret "null"; new StringBuilder buf; buf.append(c.id + " " + shortDynamicClassName(c)); for (S field : listFields(c)) { O val = cget(c, field); if (val != null) { buf.append(" " + field + "="); buf.append(dynRenderConceptShort(val)); } } ret str(buf); } static S dynRenderConceptShort(O val) { if (val instanceof DynamicObject) { O id = getOpt(val, "id"); if (id instanceof Long) ret shortDynamicClassName(val) + id; } ret struct(val); }