public Behaviour nextStepFor(Actor actor) {
    if (this.actor != actor) {
      if (this.actor != null) ;  //TODO:  Give some kind of message here?
      this.actor = actor ;
      nextStep = null ;
    }
    if (! valid()) { onceInvalid() ; return nextStep = null ; }
    //
    //  We do not cache steps for dormant or 'under consideration' plans, since
    //  that can screw up proper sequence of evaluation/execution.  Start from
    //  scratch instead.
    if (! actor.mind.agenda().includes(this)) {
      nextStep = lastStep = null ;
      return getNextStep() ;
    }
    else if (nextStep == null || nextStep.finished()) {
      nextStep = getNextStep() ;
      if (nextStep != null) lastStep = nextStep ;
    }
    return nextStep ;
  }