public void msgRequestingBreak(WaiterAgent w) {
   print("Received msgRequestingBreak");
   synchronized (waiters) {
     for (MyWaiter mw : waiters) {
       if (mw.waiter == w) {
         mw.state = waiterState.requestingBreak;
       }
     }
   }
   stateChanged();
 }
 public void msgImBack(WaiterAgent w) {
   print("Received msgImBack");
   synchronized (waiters) {
     for (MyWaiter mw : waiters) {
       if (mw.waiter == w) {
         mw.state = waiterState.working;
       }
     }
   }
   stateChanged();
 }
 private void signOffBreak(MyWaiter mw) {
   int numWorkingWaiters = 0;
   for (MyWaiter w : waiters) {
     numWorkingWaiters =
         (w.state != waiterState.onBreak) ? ++numWorkingWaiters : --numWorkingWaiters;
   }
   if (waiters.size() <= 1 || numWorkingWaiters < 1) {
     print("No break allowed");
     mw.waiter.msgNoBreak();
     mw.state = waiterState.working;
   } else {
     print("Break is allowed.");
     mw.waiter.msgYesBreak();
     mw.state = waiterState.onBreak;
   }
   // stateChanged();
 }