DfaMemoryStateImpl apply(DfaMemoryStateImpl left, DfaMemoryStateImpl right) {
      DfaMemoryStateImpl result = (myApplyToRight ? right : left).createCopy();
      myPatcher.accept(result);
      result.afterMerge(myApplyToRight ? left : right);
      return result;
    }
DfaMemoryStateImpl apply(DfaMemoryStateImpl left, DfaMemoryStateImpl right)