public bool CanGoAhead(waitSlotType wait)
    {
        if(IsWaiting())
            return false;

        if(EverRequested(wait))
            return false;

        return true;
    }
 public bool IsWaitingOn(waitSlotType wait)
 {
     return slots[(int)wait];
 }
 public bool EverRequested(waitSlotType wait)
 {
     return everRequestedSlots[(int)wait];
 }
 public void ActivateWaitSlot(waitSlotType wait)
 {
     slots[(int)wait] = true;
     everRequestedSlots[(int)wait] = true;
 }
 public void TerminateWaitSlot(waitSlotType wait)
 {
     slots[(int)wait] = false;
 }