code: func (a ActionSeq) ByteEncoding(ctx Context, setup, teardown ActionID, actionMap ActionMap) ([]byte, error) {
  	setupFunc, teardownFunc, err := actionMap.findSetupTeardown(setup, teardown)
  	if err != nil {
  		return nil, err
  	}
  	state, err := setupFunc(ctx)
  	if err != nil {
  		return nil, err
  	}
  	defer func() {
  		_, _ = teardownFunc(ctx)
  	}()
  
  	var rv []byte
  	for _, actionID := range a {
  		b, err := probeStateForAction(state, actionID)
  		if err != nil {
  			return nil, err
  		}
  		rv = append(rv, b)
  		action, ok := actionMap[actionID]
  		if !ok {
  			continue
  		}
  		state, err = action(ctx)
  		if err != nil {
  			return nil, err
  		}
  	}
  	return rv, nil
  }
docs: // ByteEncoding runs the FSM to produce a byte sequence to trigger the
  // desired action