static Runnable rWatcher_noRunFirstTime(IF0 calc, Runnable r) { ret rWatcher_noRunFirstTime(calc, runnableToIVF1(r)); } static Runnable rWatcher_noRunFirstTime(IF0 calc, IVF1 r) { ret new Runnable { A value = callF(calc); run { A newValue = callF(calc); if (neq(value, newValue)) { value = newValue; callF(r, value); } } }; }