package fsm type transition[SK, EK comparable, EV any] struct { guards, actions []Hook[EK, EV] next SK } func (mt *transition[SK, EK, EV]) SetGuards([]Hook[EK, EV]) {} func (mt *transition[SK, EK, EV]) Guards() []Hook[EK, EV] { return mt.guards } func (mt *transition[SK, EK, EV]) SetActions([]Hook[EK, EV]) {} func (mt *transition[SK, EK, EV]) Actions() []Hook[EK, EV] { return mt.actions } func (mt *transition[SK, EK, EV]) Next() SK { return mt.next }