docs: public void executeSysProcPlanFragmentsAsync(
              SynthesizedPlanFragment pfs[]) {
  
          MpTransactionState txnState = (MpTransactionState)m_runner.getTxnState();
          assert(txnState != null);
  
          int fragmentIndex = 0;
          for (SynthesizedPlanFragment pf : pfs) {
              assert (pf.parameters != null);
  
              FragmentTaskMessage task = FragmentTaskMessage.createWithOneFragment(
                      txnState.initiatorHSId,
                      m_site.getCorrespondingSiteId(),
                      txnState.txnId,
                      txnState.uniqueId,
                      txnState.isReadOnly(),
                      fragIdToHash(pf.fragmentId),
                      pf.outputDepId,
                      pf.parameters,
                      false,
                      txnState.isForReplay(),
                      txnState.isNPartTxn(),
                      txnState.getTimetamp());
  
              //During @MigratePartitionLeader, a fragment may be mis-routed. fragmentIndex is used to check which fragment is mis-routed and
              //to determine how the follow-up fragments are processed.
              task.setBatch(fragmentIndex++);
              task.setFragmentTaskType(FragmentTaskMessage.SYS_PROC_PER_SITE);
  
              if (pf.multipartition) {
                  // create a workunit for every execution site
                  txnState.createAllParticipatingFragmentWork(task);
              } else {
                  // create one workunit for the current site
                  if (pf.siteId == -1) {
                      txnState.createLocalFragmentWork(task, false);
                  } else {
                      txnState.createFragmentWork(new long[] { pf.siteId },
                                                           task);
                  }
              }
          }
      }