docs: public List findUndeliveredList(long tick, JsMessage message)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "findUndeliveredList",
          new Object[] { Long.valueOf(tick), message });
  
      int priority = message.getPriority().intValue();
      // The priority to compare against
      _targetStream.setCursor(_latestTick);
      TickRange tr2 = null;
      TickRange tr1 = _targetStream.getPrev();
      ArrayList<AIValueTick> temp = null;
      boolean startNewList = true;
      do
      {
        if (tr1.type == TickRange.Value)
        {
          AIValueTick valueTick = (AIValueTick) tr1.value;
          boolean delivered = valueTick.isDelivered();
          int currentPriority = valueTick.getMsgPriority();
          // If we did not follow a prevTick link, we need to make sure we use the correct priority
          // only assured messages can be undelivered, so we need not check for reliability
          if (!delivered && (currentPriority == priority))
          {
            //JsMessage currentMsg = valueTick.getMsg();
            long prevTick = valueTick.getMsg().getMessage().getGuaranteedRemoteGetPrevTick();
            if (startNewList)
            {
              temp = new ArrayList<AIValueTick>(10); // this code is typically not executed since messages usually arrive in order
              startNewList = false;
            }
            temp.add(valueTick);
            //targetStream.setCursor(currentMsg.getGuaranteedRemoteGetPrevTick());
            _targetStream.setCursor(prevTick);
            tr2 = tr1;
            tr1 = _targetStream.getPrev();
            continue;
          }
        }
  
        // We've hit a gap in the requests (an unknown/unsatisfied request), blank out the list built so far as
        // those cannot be delivered yet.
        startNewList = true;
        temp = null;
  
        tr2 = tr1;
        tr1 = _targetStream.getPrev();
      }
      while ((tr1.endstamp > tick) && (tr1 != tr2));
  
      // turn the list around before returning
      ArrayList<AIValueTick> undeliveredList = null;
      if (temp != null)
      {
        undeliveredList = new ArrayList<AIValueTick>(temp.size());
        for (int i = temp.size() - 1; i >= 0; i--)
        {
          undeliveredList.add(temp.get(i));
        }
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "findUndeliveredList", undeliveredList);
  
      return undeliveredList;
    }