docs: private void handleNewStreamID(AbstractMessage aMessage, MessageItem msgItem) throws SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "handleNewStreamID", new Object[] { aMessage, msgItem });
  
      SIBUuid12 streamID = aMessage.getGuaranteedStreamUUID();
  
      // Synchronize to resolve race between multiple messages on same
      // stream.  Can't actually happen until multihop, e.g. messages on
      // same stream arrive simultaneously from multiple cellules.
      synchronized (flushMap)
      {
        // Otherwise, create a new flush query record and proceed
        FlushQueryRecord entry = flushMap.get(streamID);
  
        if ( (entry != null) && (msgItem != null) )
        {
          // Since the entry already exists, somebody else already
          // started the timer so all we have to do is cache the
          // message for replay later.
          entry.append(msgItem);
        }
        else
        {
          // Otherwise, new entry:
          // 1. Create a request ID and flush record, store it in the map.
          // 2. Create and send an "are you flushed".
          // 3. Start an alarm to repeat "are you flushed" a set number of
          //    times.
  
          SIBUuid8 sourceMEUuid = aMessage.getGuaranteedSourceMessagingEngineUUID();
  
          SIBUuid12 destID = aMessage.getGuaranteedTargetDestinationDefinitionUUID();
          SIBUuid8  busID  = aMessage.getGuaranteedCrossBusSourceBusUUID();
  
          // Create and store the request record
          long reqID = messageProcessor.nextTick();
          entry = new FlushQueryRecord(sourceMEUuid, destID, busID,
                                       msgItem, reqID);
          flushMap.put(streamID, entry);
  
          // Create and send the query
          // TODO: create a proper srcID here
          upControl.sendAreYouFlushedMessage(sourceMEUuid, destID, busID, reqID, streamID);
  
          // Start the alarm.  The context for the alarm is the stream id, which
          // we can use to look up the FlushQueryRecord if the alarm expires.
          entry.resend = am.create(GDConfig.FLUSH_QUERY_INTERVAL, this, streamID);
        }
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "handleNewStreamID");
    }