static JTextField dm_mergeWithTopInput(final JTextField tf) { final DynModule m = dm_current_mandatory(); final Var loopPreventer = new(false); onChange(tf, r { if (!loopPreventer!) dm_setTopInput(getText(tf)) }); dm_onTopInputChanged(voidfunc(fS s) { switch to m.q(); temp tempSetVar(loopPreventer, true); setText(tf, s); }); onEnter(tf, rThread { dm_setTopInputAndFireWithInfo(getText(tf), "typed") }); ret tf; }