protected boolean couldSwitch(Behaviour last, Behaviour next) {
    if (next == null) return false ;
    if (last == null) return true ;
    //
    //  TODO:  CONSIDER GETTING RID OF THIS CLAUSE?  It's handy in certain
    //  situations, (e.g, where completing the current plan would come at 'no
    //  cost' to the next plan,) but may be more trouble than it's worth.
    final Target NT = targetFor(next) ;
    if (NT != null && targetFor(last) == NT && NT != actor.aboard()) {
      return false ;
    }
    final float
      lastPriority = last.priorityFor(actor),
      persist = (
        Choice.DEFAULT_PRIORITY_RANGE +
        (actor.traits.relativeLevel(STUBBORN) * Choice.DEFAULT_TRAIT_RANGE)
      ),
      threshold = persist + lastPriority,
      /*
      threshold = Math.min(
        lastPriority + persist,
        lastPriority * (1 + (persist / 2))
      ),
      //*/
      nextPriority = next.priorityFor(actor) ;
    if (reactionsVerbose && I.talkAbout == actor) {
      I.say("Last/next priority is: "+lastPriority+"/"+nextPriority) ;
      I.say("Threshold is: "+threshold) ;
    }
    return nextPriority >= threshold ;
  }