// -Notify all blocked waiters that phase has advanced
private void advancePhase() {
try {
lock.lock();
for (Map.Entry<Activity, Integer> entry : signalers.entrySet()) {
Activity signaler = entry.getKey();
int signalValue = entry.getValue();
signalers.put(signaler, signalValue-1);
signalValue--;
if (signalValue == 0) yetToSignal++;
}
for (Map.Entry<Activity, Integer> entry : waiters.entrySet()) {
Activity waiter = entry.getKey();
int waitValue = entry.getValue();
waiters.put(waiter, waitValue+1);
}
phaseAdvance.signalAll();
} finally {