sclass AWTOnConceptChanges is AutoCloseable { settable JComponent component; settable Runnable action; settable Concepts concepts; settable int firstDelay; settable int delay = 500; long changes = -1; javax.swing.Timer timer; *(Concepts *concepts, JComponent *component, Runnable *action) {} void install { assertNotNull(concepts); timer = installTimer(component, delay, firstDelay, r _trigger); } void _trigger { long c = concepts.changes; if (changes != c) { changes = c; action?.run(); } } close { dispose timer; } }