docs: public void sendAckExpectedMessage(long ackExpStamp,
                                       int priority,
                                       Reliability reliability,
                                       SIBUuid12 stream) // not used for ptp
    throws SIResourceException
    {
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "sendAckExpectedMessage",
      new Object[] { new Long(ackExpStamp),
                     new Integer(priority),
                     reliability });
  
      if( routingMEUuid != null )
      {
        ControlAckExpected ackexpMsg;
        try
        {
          ackexpMsg = cmf.createNewControlAckExpected();
        }
        catch (Exception e)
        {
          // FFDC
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.impl.PtoPOutputHandler.sendAckExpectedMessage",
            "1:733:1.241",
            this);
  
          SibTr.exception(tc, e);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "sendAckExpectedMessage", e);
        
          SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.impl.PtoPOutputHandler",
              "1:744:1.241",
              e });
        
          throw new SIResourceException(
            nls.getFormattedMessage(
              "INTERNAL_MESSAGING_ERROR_CWSIP0002",
              new Object[] {
                "com.ibm.ws.sib.processor.impl.PtoPOutputHandler",
                "1:752:1.241",
                e },
              null),
              e);
        }
  
        // As we are using the Guaranteed Header - set all the attributes as
        // well as the ones we want.
        SIMPUtils.setGuaranteedDeliveryProperties(ackexpMsg,
            messageProcessor.getMessagingEngineUuid(), 
            targetMEUuid,
            stream,
            null,
            destinationHandler.getUuid(),
            ProtocolType.UNICASTINPUT,
            GDConfig.PROTOCOL_VERSION);
     
        ackexpMsg.setTick(ackExpStamp);
        ackexpMsg.setPriority(priority);
        ackexpMsg.setReliability(reliability);
        
        // SIB0105
        // Update the health state of this stream 
        SourceStream sourceStream = (SourceStream)sourceStreamManager
                                                  .getStreamSet()
                                                  .getStream(priority, reliability);
        if (sourceStream != null)
        {
          sourceStream.setLatestAckExpected(ackExpStamp);
          sourceStream.getControlAdapter()
            .getHealthState().updateHealth(HealthStateListener.ACK_EXPECTED_STATE, 
                                           HealthState.AMBER);
        }
  
        // If the destination in a Link add Link specific properties to message
        if( isLink )
        {
          ackexpMsg = (ControlAckExpected)addLinkProps(ackexpMsg);
        }
          
        // If the destination is system or temporary then  the 
        // routingDestination into th message
        if( this.isSystemOrTemp )
        {
          ackexpMsg.setRoutingDestination(routingDestination); 
        }
      
        // Send ackExpected message to destination
        // Using MPIO
        mpio.sendToMe(routingMEUuid, priority, ackexpMsg );
   
      }
      else
      {
        if(TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc,"Unable to send AckExpected as Link not started");
      }
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "sendAckExpectedMessage");
  
    }