docs: private boolean deliverToConsumerDispatchers(
                                                   MessageProcessorSearchResults searchResults,
                                                   MessageItem msg,
                                                   TransactionCommon tran,
                                                   boolean stored) throws SIDiscriminatorSyntaxException, SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "deliverToConsumerDispatchers",
                          new Object[] { searchResults, msg, tran, new Boolean(stored) });
  
          String topic = msg.getMessage().getDiscriminator();
          boolean hasInternalSubscription = false;
  
          Set consumerDispatchers = searchResults.getConsumerDispatchers(topic);
  
          if (TraceComponent.isAnyTracingEnabled() && UserTrace.tc_mt.isDebugEnabled())
          {
              if (msg.getMessage().isApiMessage())
              {
                  String apiMsgId = null;
  
                  if (msg.getMessage() instanceof JsApiMessage)
                      apiMsgId = ((JsApiMessage) msg.getMessage()).getApiMessageId();
                  else
                  {
                      if (msg.getMessage().getApiMessageIdAsBytes() != null)
                      {
                          apiMsgId = msg.getMessage().getApiMessageIdAsBytes().toString();
                      }
                  }
  
                  SibTr.debug(UserTrace.tc_mt,
                              nls_mt.getFormattedMessage(
                                                         "PUBLICATION_COUNT_CWSJU0008",
                                                         new Object[] {
                                                                       apiMsgId,
                                                                       _destination.getName(),
                                                                       new Integer(consumerDispatchers.size()) },
                                                         null));
              }
          }
  
          if (consumerDispatchers != null)
          {
              //  As we have a tran CD put will only add the msg to its item stream.
              Iterator i = consumerDispatchers.iterator();
              while (i.hasNext())
              {
                  ConsumerDispatcher consumerDispatcher = ((MatchingConsumerDispatcher) (i.next())).getConsumerDispatcher();
  
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, "Found consumerDispatcher: " + consumerDispatcher.getConsumerDispatcherState());
  
                  // Check that the consumer is ready to receive the message
                  if (consumerDispatcher.getConsumerDispatcherState().isReady())
                  {
                      stored = consumerDispatcher.put(msg, tran, this, stored);
                  }
  
                  // Are any consumer dispatchers an internal subscription
                  hasInternalSubscription |= consumerDispatcher.
                                  getConsumerDispatcherState().
                                  getTargetDestination() != null;
              }
  
              // Set the number of local subscriptions this message will fan out to for
              // later consumption by the statistics instrumentation.
              msg.setFanOut(consumerDispatchers.size());
          }
  
          // update stored
          stored |= hasInternalSubscription;
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "deliverToConsumerDispatchers", new Boolean(stored));
  
          return stored;
      }