docs: public void sendAckExpectedMessage(
      long ackExpStamp,
      int priority,
      Reliability reliability,
      SIBUuid12 stream)
      throws SIResourceException
    {
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "sendAckExpectedMessage",
          new Object[] {
            new Long(ackExpStamp),
            _targetMEUuid,
            new Integer(priority),
            reliability });
  
      ControlAckExpected ackexpMsg;
      try
      {
        ackexpMsg = _cmf.createNewControlAckExpected();
      }
      catch (Exception e)
      {
        // FFDC
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.impl.PubSubOutputHandler.sendAckExpectedMessage",
          "1:676:1.164.1.5",
          this);
  
        SibTr.exception(tc, e);
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.impl.PubSubOutputHandler",
            "1:683:1.164.1.5",
            e });
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "sendAckExpectedMessage", e);
  
        throw new SIResourceException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.impl.PubSubOutputHandler",
              "1:694:1.164.1.5",
              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(), 
          null,
          stream,
          null,
          _destinationHandler.getUuid(),
          ProtocolType.PUBSUBINPUT,
          GDConfig.PROTOCOL_VERSION);
     
      ackexpMsg.setTick(ackExpStamp);
      ackexpMsg.setPriority(priority);
      ackexpMsg.setReliability(reliability);
      
      // SIB0105
      // Update the health state of this stream 
      InternalOutputStream sourceStream = (InternalOutputStream)_internalOutputStreamManager
                                                .getStreamSet(stream, false)
                                                .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);
      }
      // Send ackExpected message to destination
      // Using MPIO
  
      //add a target cellule to the array for sending
      SIBUuid8[] fromTo = new SIBUuid8[1];
      fromTo[0] = _targetMEUuid;
  
      // Send the message to the MessageTransmitter
      _mpio.sendDownTree(fromTo,
                           priority,
                           ackexpMsg);
  
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "sendAckExpectedMessage");
  
    }