!7 cmodule SmartParser > DynTextArea { transient SingleComponentPanel scp; transient L parsed; visual jvsplit(super, jCenteredSection("Parsed", scp = singleComponentPanel(makeComponent()))); start { dm_watchFieldAndNow text(r parse); } void parse { setField(parsed := map getVarOpt(smartParser1_generic(text))); if (scp != null) scp.setComponent(makeComponent()); } JComponent makeComponent() { pnl(+parsed); ret jscroll(jTree_hideRoot(jDynamicTree( (O) parsed, o -> makeChildren(o), makeChildrenIsFast := true))); } Cl makeChildren(O o) { o = fullyUnpackVar(o); if (o cast Cl) ret o; if (o cast S) ret smartParser1_subParse(o); null; } }