!7 sclass FullSpeechLog > DynTextArea { transient L list = new CopyOnWriteArrayList; void start { setField(noGrab := true); setText(lines(copyList(katze_getFullLog(), list))); onSpeechRecognized(voidfunc(S s) { printToText(addAndReturn(list, s)) }); } visualize { JComponent c = super.visualize(); makeUneditable(textArea); swing { textArea.getCaret().setVisible(true); textArea.getCaret().setSelectionVisible(true); } ret c; } L getList() { ret list; } }