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