docs: public void restart(PersistentMessageStore PM) throws TransactionException, SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "restart", "PersistenceManager="+PM);
  
          if (PM != null)
          {
              // We need to store the PM so that we can call
              // it during transaction completion.
              if (PM instanceof PersistenceManager)
              {
                  _persistence = (PersistenceManager)PM;
              }
              else
              {
                  // We don't have a valid PersistenceManager so we
                  // are up the spout. Need to fall over in a big heap.
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "No PersistenceManager provided at startup. MessageStore cannot continue!");
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "restart");
                  throw new SevereMessageStoreException("UNRECOVERABLE_ERROR_SIMS1499", new Object[]{});
              }
  
  
              // We need to read our indoubt xid list in preperation
              // for a call from the transaction manager at recovery
              // time.
              try
              {
                  List list = PM.readIndoubtXIDs();
                  Iterator iterator = list.iterator();
  
                  while (iterator.hasNext())
                  {
                      PersistentTranId ptid = (PersistentTranId)iterator.next();
  
                      _indoubtXids.add(ptid);
  
                      synchronized(_associationLock)
                      {
                          _unassociatedTrans.put(ptid, new XidParticipant(_ms, ptid, _persistence, 0, TransactionState.STATE_PREPARED));
                      }
  
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Indoubt Transaction Re-instated from database: "+ptid);
                  }
              }
              catch (PersistenceException pe)
              {
                  com.ibm.ws.ffdc.FFDCFilter.processException(pe, "com.ibm.ws.sib.msgstore.transactions.XidManager.restart", "1:516:1.62");
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "Persistence exception caught reading indoubt transactions from database!", pe);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "restart");
                  throw new TransactionException("UNEXPECTED_EXCEPTION_SIMS1099", new Object[]{pe}, pe);
              }
          }
          else
          {
              // We don't have a valid PersistenceManager so we
              // are up the spout. Need to fall over in a big heap.
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "PersistenceManager is null. MessageStore cannot continue!");
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "restart");
              throw new SevereMessageStoreException("UNRECOVERABLE_ERROR_SIMS1499", new Object[]{});
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "restart");
      }