code: func Longevity(ctx Context, setup, teardown ActionID, actionMap ActionMap, seed int64, closeChan chan struct{}) error {
  	source := rand.NewSource(seed)
  	return runReader(ctx, setup, teardown, actionMap, rand.New(source), closeChan)
  }
docs: // Longevity runs the state machine with the provided context
  // first, the setup action is executed unconditionally
  // the start state is determined by this action
  // actionMap is a lookup table for all actions
  // random bytes are generated to determine all future state transitions
  // finally, the teardown action is executed unconditionally for cleanup