// N.B. two copies here: shallow used for expanding out multi-complex chanels, so that we
 // end up using the same evaluator object.
 // deep is used for derived channels where one is like another but with some parameter changes
 // in coded transitions. All copies for non coded transitions are deep
 public FunctionTransition makeMultiCopy(KSState sa, KSState sb, double ff, double fr) {
   FunctionTransition ret = makeCopy(sa, sb);
   ret.applyMultipliers(ff, fr);
   return ret;
 }