code: func (s *Execution_State) Evolve(newState Execution_State) error {
  	nextStates := validExecutionStateEvolution[*s]
  	if nextStates == nil {
  		return fmt.Errorf("invalid state transition: no transitions defined for %s", *s)
  	}
  
  	if newState == *s {
  		return nil
  	}
  
  	for _, val := range nextStates {
  		if newState == val {
  			*s = newState
  			return nil
  		}
  	}
  
  	return fmt.Errorf("invalid state transition %v -> %v", *s, newState)
  }
docs: // Evolve attempts to evolve the state of this Attempt. If the state
  // evolution is not allowed (e.g. invalid state transition), this returns an
  // error.