docs: @Override
      synchronized void restart()
      {
          if (!m_currentReads.isEmpty()) {
              // re-submit all the tasks in the current read set to the pool.
              // the pool will ensure that things submitted with the same
              // txnID will go to the the MpRoSite which is currently running it
              for (TransactionTask task : m_currentReads.values()) {
                  taskQueueOffer(task);
              }
          }
          else {
              assert(!m_currentWrites.isEmpty());
              TransactionTask task;
              // There currently should only ever be one current write.  This
              // is the awkward way to get a single value out of a Map
              task = m_currentWrites.entrySet().iterator().next().getValue();
              taskQueueOffer(task);
          }
      }