code: private ReliabilitySubset createPersistentSubset(Reliability reliability,
        TransactionCommon tran) throws SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(this, tc, "createPersistentSubset", new Object[] { reliability });
      
      ReliabilitySubset subset = new ReliabilitySubset(reliability, initialData);
      subsets[getIndex(reliability)] = subset;
      if(reliability.compareTo(Reliability.BEST_EFFORT_NONPERSISTENT) > 0)
      {
        try
        {
          Transaction msTran = txManager.resolveAndEnlistMsgStoreTransaction(tran);
          itemStream.addItem(subset, msTran);
          subsetIDs[getIndex(reliability)] = subset.getID();
        }
        catch (MessageStoreException e)
        {        
          // FFDC
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.gd.StreamSet.createPersistentSubset",
            "1:398:1.67",
            this);
            
          //not sure if this default is needed but better safe than sorry
          subsetIDs[getIndex(reliability)] = NO_ID;
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          {
            SibTr.exception(tc, e);
            SibTr.exit(tc, "createPersistentSubset", e);
          }
        }
      }
      else
      {
        subsetIDs[getIndex(reliability)] = NO_ID;    
      }
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "createPersistentSubset", subset);
      return subset;
    }
docs: Create a new ReliabilitySubset for the given reliability. If it is not express,
  store it in the message store and record the message store ID.
  
  @param reliability
  @throws SIResourceException
  @throws SIStoreException