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);
}
}
};
}