docs: public void reconstituteSourceStreams(DestinationHandler dest, PtoPOutputHandler outputHandler, int startMode) 
    
    throws MessageStoreException, SIDiscriminatorSyntaxException, SIErrorException, SIResourceException
    {
      if (tc.isEntryEnabled())
        SibTr.entry(tc, "reconstituteSourceStreams", new Integer(startMode));
  
      
      /*
       * Iterate through all contained Protocol Items, looking for StreamSet
       * associated with source. Note that outputHandler passed in is null if this 
       * is Pubsub. 
       */ 
       
      SourceStreamSetFilter filter = null;
      if( dest.isPubSub())
      { 
        filter = new SourceStreamSetFilter(null);
      }
      else
      {
        filter = new SourceStreamSetFilter(outputHandler.getTargetMEUuid());
      }
      
      NonLockingCursor cursor = null;
      
      try
      {
        cursor = newNonLockingItemCursor(filter);    
             
  	    AbstractItem item = null;
  	    
  	    //should only be one match!!
  	    while (null != (item = cursor.next()))
  	    {
  	      StreamSet streamSet = (StreamSet)item;
            streamSet.initializeNonPersistent(dest.getTxManager());
  	      
  	      // 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 ) )
  	      {
  	        // Log message to console saying we have started flush for this steamSet
  	        // parmeters are:- ME name, streamSet Uuid, destinationName
  	        SibTr.info(
  	          tc,
  	          "FLUSH_INITIATED_MESSAGE_CWSIP0781",
  	          new Object[] { dest.getMessageProcessor().getMessagingEngineName(),
  	                        streamSet.getStreamID(),
  	                        dest.getName() });
  	      }
  	      try
  	      {
  	        if( dest.isPubSub())
  	        {
  	          PubSubInputHandler inputHandler = (PubSubInputHandler)dest.getInputHandler();
  	          inputHandler.reconstitutePubSubSourceStreams(streamSet, startMode);
  	        }
  	        else
  	        {        
  	          outputHandler.reconstitutePtoPSourceStreams(streamSet, startMode);
  	        }
  	      }
  	      catch (SIResourceException e)
  	      {
  	        // FFDC
  	        FFDCFilter.processException(
  	          e,
  	          "com.ibm.ws.sib.processor.impl.store.itemstreams.SourceProtocolItemStream.reconstituteSourceStreams",
  	          "1:179:1.29",
  	          this);
  	        
  	        // 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 ) )
  	        {
  	          // Log message to console saying flush for this steamSet has failed
  	          // parmeters are:- ME name, streamSet Uuid, destinationName, exception.
  	          SibTr.error(
  	            tc,
  	            "FLUSH_FAILED_MESSAGE_CWSIP0782",
  	            new Object[] {dest.getMessageProcessor().getMessagingEngineName(),
  	                          streamSet.getStreamID(),
  	                          dest.getName(),
  	                          e });
  	        }
  	        
  	        // Rethrow exception after logging error
  	        if (tc.isEntryEnabled()) SibTr.exit(tc, "reconstituteSourceStreams");
  	        throw(e);
  	      
  	      }
  	    }
      }
      finally
      {
        if (cursor != null)
          cursor.finished();
      }
      
      if (tc.isEntryEnabled())  
        SibTr.exit(tc, "reconstituteSourceStreams");      
    }