!7 module LLtoNL > DynRecordingTextArea { S output; transient S calcedInput; visualize { ret jvsplit( jSection("INPUT (LL)", super.visualize()), jSection("OUTPUT (NL)", dm_fieldTextArea('output))); } start { onChange(r calc); } void calc { if (neq(text, calcedInput)) { calcedInput = text; for (S s : tlft(text)) { LS tok = javaTokWithAllBrackets(s); continue unless isSquareBracketed(second(tok)) && eq(":", get(tok, 3); tok = subList(tok, 3); print(join(tok)); } } } }