code: public void processAckExpected(long stamp)
    {
      if (tc.isEntryEnabled())
        SibTr.entry(tc, "processAckExpected", new Object[] { new Long(stamp)});
  
      synchronized (this)
      {
        // Send Ack message for ticks up to iack
        sendAck();
  
        // Send Nack message for ticks between iack and stamp
        if (stamp > iack)
        {
          try
          {
            upControl.sendNackMessage(
              null,
              null,
              null,
              iack+1,
              stamp,
              priority,
              reliability,
              streamID);
          }
          catch (SIResourceException e)
          {
            // FFDC
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.gd.InternalInputStream.processAckExpected",
              "1:379:1.42",
              this);
  
            SibTr.exception(tc, e);
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
              new Object[] {
                "com.ibm.ws.sib.processor.gd.InternalInputStream",
                "1:386:1.42",
                e });
  
            if (tc.isEntryEnabled())
              SibTr.exit(tc, "processAckExpected", e);
  
            throw new SIErrorException(
              nls.getFormattedMessage(
               "INTERNAL_MESSAGING_ERROR_CWSIP0002",
               new Object[] {
                 "com.ibm.ws.sib.processor.gd.InternalInputStream",
                 "1:397:1.42",
                 e },
               null),
              e);
          }   
        }
      }
  
      if (tc.isEntryEnabled())
        SibTr.exit(tc, "processAckExpected");
    }
docs: This method will send an Ack up to the current aggregated Ack prefix
  and send a Nack for any ticks after this