docs: protected static ControlCreateDurable createDurableCreateDurable(
      MessageProcessor MP,
      ConsumerDispatcherState subState,
      long reqID,
      SIBUuid8 dme) 
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "createDurableCreateDurable", new Object[] {MP, subState, new Long(reqID), dme});
  
      ControlCreateDurable msg = null;
        
      try
      {
        // Create and initialize the message
        msg = MessageProcessor.getControlMessageFactory().createNewControlCreateDurable();
        initializeControlMessage(MP.getMessagingEngineUuid(), msg, dme);
        
        // Parameterize for CreateStream
        msg.setRequestID(reqID);
        msg.setDurableSubName(subState.getSubscriberID());
        
        SelectionCriteria criteria = subState.getSelectionCriteria();
        //check for null values for MFP - discriminator can be null
        //the discriminator
        
        if(criteria==null || criteria.getDiscriminator()==null)
        {
          msg.setDurableDiscriminator(null); 
        } 
        else
        {
          msg.setDurableDiscriminator(criteria.getDiscriminator()); 
        } 
        //the selector
        if(criteria==null || criteria.getSelectorString()==null)
        {
          msg.setDurableSelector(null); 
        } 
        else
        {
          msg.setDurableSelector(subState.getSelectionCriteria().getSelectorString());
        } 
        //the selector domain
        if(criteria==null || criteria.getSelectorDomain()==null)
        {
          msg.setDurableSelectorDomain(SelectorDomain.SIMESSAGE.toInt());
        }  
        else
        {
          msg.setDurableSelectorDomain(criteria.getSelectorDomain().toInt());
        }
        
        // Check the selectorProperties Map to see if we need to convey any additional properties associated
        // with the selector. At present (26/03/08) there is only one additional property
        // which is itself a map (of name spaces). The name space map is used in the XPath10 selector domain
        // to map URLs to prefixes. The use of a selectorProperties map keeps the Core SPI generic but
        // when conveying information over JMF we need a simpler structure and so will need to
        // break out individual properties for transportation.
        if(criteria==null)
        {
          msg.setDurableSelectorNamespaceMap(null);
        }  
        else
        {
          // See if these criteria have any selector properties. They might if they are MPSelectionCriteria
          if(criteria instanceof MPSelectionCriteria)
          {
            MPSelectionCriteria mpCriteria = (MPSelectionCriteria)criteria;
            Map<String, Object> selectorProperties = mpCriteria.getSelectorProperties();
            
            if(selectorProperties != null)
            {
              Map<String, String> selectorNamespaceMap = 
                (Map<String, String>)selectorProperties.get("namespacePrefixMappings");
  
              if(selectorNamespaceMap != null)
                msg.setDurableSelectorNamespaceMap(selectorNamespaceMap);
              else
                msg.setDurableSelectorNamespaceMap(null);
            }
            else
            {
              msg.setDurableSelectorNamespaceMap(null);
            }
          } 
          else
          {
            msg.setDurableSelectorNamespaceMap(null);
          } // eof instanceof MPSelectionCriteria
        } // eof null criteria
        
        //defect 259036
        msg.setCloned(subState.isCloned());
        msg.setNoLocal(subState.isNoLocal());
  
        msg.setSecurityUserid(subState.getUser());
  
        // Set the flag that signals whether this is
        // the privileged SIBServerSubject.
        msg.setSecurityUseridSentBySystem(subState.isSIBServerSubject());          
      }
      catch (Exception e)
      {
        FFDCFilter.processException(e,
          "com.ibm.ws.sib.processor.impl.DurableInputHandler.createDurableCreateDurable",
          "1:495:1.52.1.1",
          DurableInputHandler.class);
        SibTr.exception(tc, e);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "createDurableCreateDurable", msg);
        
      return msg;
    }