docs: public void reconstitutePtoPSourceStreams(StreamSet streamSet, int startMode ) 
    throws SIRollbackException, SIConnectionLostException, SIResourceException, SIErrorException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "reconstitutePtoPSourceStreams", new Object[] {streamSet, new Integer(startMode)});
  
      sourceStreamManager.reconstituteStreamSet(streamSet);
      
      // Don't do flush if we are asked to start in recovery mode 
      if(   ((startMode & JsConstants.ME_START_FLUSH ) == JsConstants.ME_START_FLUSH )
         && ((startMode & JsConstants.ME_START_RECOVERY ) == 0 ) )
     {
        this.sendFlushedMessage(null, streamSet.getStreamID());
        // Now change streamID of streamSet
        streamSet.setStreamID(new SIBUuid12());
        // This calls requestUpdate on the StreamSet Item which will
        // cause a callback to the streamSet.getPersistentData() by msgstore
        Transaction tran = messageProcessor.getTXManager().createAutoCommitTransaction();
        try
        {
          streamSet.requestUpdate(tran);
        }
        catch (MessageStoreException e)
        {
           // MessageStoreException shouldn't occur so FFDC.
           FFDCFilter.processException(
           e,
           "com.ibm.ws.sib.processor.impl.PtoPOutputHandler.reconstitutePtoPSourceStreams",
           "1:1883:1.241",
           this);
    
           SibTr.exception(tc, e);
           if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "reconstitutePtoPSourceStreams", "SIStoreException");
           throw new SIResourceException(e);
        }      
      }
          
      NonLockingCursor cursor = null;
      try
      {
        cursor = transmissionItemStream.newNonLockingItemCursor(
          new ClassEqualsFilter(MessageItem.class));
        cursor.allowUnavailableItems();  
  
        MessageItem msg = (MessageItem)cursor.next();
        while(msg!=null)
        {
          // Change streamID in message to streamID of StreamSet
          // If we are restoring from a stale backup this will
          // and the restoreMessage method puts it on a new SourceStream
          if( msg.getGuaranteedStreamUuid() !=  streamSet.getStreamID())
          {
            msg.setGuaranteedStreamUuid(streamSet.getStreamID());
          }
                
          //add all messages back in to the streams
          if(!(msg.isAdding() || msg.isRemoving()))
          {
            // commit those which are not in doubt
            sourceStreamManager.restoreMessage(msg, true);
          }
          else
          {
            // add to stream in uncommitted state
            sourceStreamManager.restoreMessage(msg, false);
          }
          
          msg = (MessageItem)cursor.next();
        }
        
        // Consolidate all streams which may have been reconstituted
        // This is necessary as messages may have been added out of order
        // This will return a list of the messageStoreIds of all the
        // messages which need to be locked because they are inside the
        // sendWindows of the streams which they were added to and so may
        // already have been sent 
        List msgsToLock = sourceStreamManager.consolidateStreams(startMode);
        
        // Run through locking all messages in list so they won't expire.      
        // watch out as list is Longs msgstore ids
        long msgId = 0;
        MessageItem msgItem = null;
        for (int i = 0; i < msgsToLock.size(); i++)
        {
          msgId = ((Long)msgsToLock.get(i)).longValue();
          msgItem = (MessageItem)transmissionItemStream.findById(msgId); 
          if( msgItem != null )
            msgItem.lockItemIfAvailable(lockID);
          else
          {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(tc, "message wasn't there when we tried to lock it");
          }
        }    
      }
      catch (MessageStoreException e)
      {
        // MessageStoreException shouldn't occur so FFDC.
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.impl.PtoPOutputHandler.reconstitutePtoPSourceStreams",
          "1:1956:1.241",
          this);
  
        SibTr.exception(tc, e);
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.impl.PtoPOutputHandler",
            "1:1963:1.241",
            e });
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "reconstitutePtoPSourceStreams", e);
  
        throw new SIResourceException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.impl.PtoPOutputHandler",
              "1:1974:1.241",
              e },
            null),
          e);
      }
      finally
      {
        if (cursor != null)
          cursor.finished();
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())  
        SibTr.exit(tc, "reconstitutePtoPSourceStreams");      
    }