sclass WaitForStableValue implements IVar {
long period;
A value;
long valueSince;
*() {}
*(long *period) {}
*(double seconds) { period = toMS(seconds); }
public synchronized void put(A a) {
if (neq(a, value)) {
value = a;
valueSince = sysNow();
}
}
public synchronized A get() {
ret valueSince != 0 && sysNow() >= valueSince+period ? value : null;
}
public bool has() { ret get() != null; }
}