docs: public void getPersistentData(ObjectOutputStream oos)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "getPersistentData", oos);
  
      try
      {
        HashMap hm = new HashMap();
  
        hm.put("subscriberID", _subState.getSubscriberID());
        hm.put("topicspace", _subState.getTopicSpaceUuid().toString());
        hm.put("topicspaceName", _subState.getTopicSpaceName());
        hm.put("topicspaceBusName", _subState.getTopicSpaceBusName());
        hm.put("targetDestination", _subState.getTargetDestination());
        hm.put("isToBeDeleted", new Boolean(toBeDeleted));
  
        hm.put("user", _subState.getUser());
        hm.put("isSIBServerSubject", new Boolean(_subState.isSIBServerSubject()));
        hm.put("topics", _subState.getTopics());
        hm.put("isCloned", new Boolean(_subState.isCloned()));
        hm.put("isNoLocal", new Boolean(_subState.isNoLocal()));
  
        // New for version 2
        SelectionCriteria[] selectionCriteriaList = _subState.getSelectionCriteriaList();
  
        String[] selectors = null;
        int[] domains = null;
        Map[] selectorProperties = null;
        if( selectionCriteriaList != null)
        {
          selectors = new String[selectionCriteriaList.length];
          domains = new int[selectionCriteriaList.length];
          selectorProperties = new HashMap[selectionCriteriaList.length];
  
          for( int i=0; i<selectionCriteriaList.length; i++)
          {
            selectors[i] = (selectionCriteriaList[i] == null) ?
                           null : selectionCriteriaList[i].getSelectorString();
  
            domains[i]   = (selectionCriteriaList[i] == null) ?
                            SelectorDomain.SIMESSAGE.toInt() : selectionCriteriaList[i].getSelectorDomain().toInt();
  
            selectorProperties[i] = null;
            // Set up selectorProperties if appropriate
            if(selectionCriteriaList[i] != null)
            {
              if(selectionCriteriaList[i] instanceof MPSelectionCriteria)
              {
                MPSelectionCriteria mpCriteria = (MPSelectionCriteria)selectionCriteriaList[i];
                selectorProperties[i] = mpCriteria.getSelectorProperties();
              }
            }
  
          }
        }
        hm.put("selectors",selectors);
        hm.put("domains",domains);
        hm.put("selectorProperties", selectorProperties);
  
        hm.put("userData", _subState.getUserData());
  
        oos.writeObject(hm);
      }
      catch (IOException e)
      {
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.impl.store.itemstreams.DurableSubscriptionItemStream.getPersistentData",
          "1:275:1.95",
          this);
  
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "getPersistentData", e);
  
        throw new SIErrorException(
          nls.getFormattedMessage(
            "SUBSCRIPTION_WARM_START_ERROR_CWSIP0148",
            new Object[] { _destinationManager.getLocalME().getMessagingEngineName(), e },
            null),
          e);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "getPersistentData");
    }