sclass InputChooser implements Swingable { DynModule module; transient S input; transient OptionalInputPanel panel; *(DynModule *module) {} S input() { ret input; } S _freshInput() { ret dm_getInterestingString(); } bool update() { S s = _freshInput(); if (neq(input, s)) { input = s; true; //dm_updateModule(); } false; } JComponent visualize() { ret wrap(panel != null ? panel : (panel = new OptionalInputPanel)); } }