func (a *ActiveState) ReceiveEvent(eventName, label string, t time.Time) (State, bool) {
	if a.exit.Match(eventName, label) {
		return &InactiveState{
			entry: a.exit.Opposite(),
		}, true
	}
	return a, false
}
func (a *ActiveState) ReceiveEvent(eventName, label string, t time.Time) (State, bool) {
	if a.exit.Match(eventName, label) {
		return &InactiveState{
			entry: a.exit.Opposite(),
		}, true
	}
	return a, false
}
// ReceiveEvent checks if the event matches the exit criteria.
// Returns a new InactiveState or self, and true if it changed.