docs: private SubscriptionMessageHandler addSubscription(
        String topicSpaceName,
        SIBUuid12 topicSpaceUuid,
        String topic,
        SubscriptionMessageHandler messageHandler,
        Hashtable subscriptionsTable,
        boolean sendProxy)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "addSubscription",
          new Object[] {
            topicSpaceName,
            topicSpaceUuid,
            topic,
            messageHandler,
            subscriptionsTable,
            new Boolean(sendProxy)});
  
      // Get a key to find the Subscription with
      final String key = subscriptionKey(topicSpaceUuid, topic);
  
      synchronized( subscriptionLock )
      {
        // Find the subscription from this Buses list of subscriptions.
        MESubscription subscription = (MESubscription) subscriptionsTable.get(key);
        
        //defect 267686
        //Lookup the local topic space name - the remote ME will need to know.
        String localTSName = null;
        try
        {
          DestinationHandler destHand = null;
          
          if (sendProxy || topicSpaceName == null)
            destHand = iProxyHandler.
                         getMessageProcessor().
                           getDestinationManager().
                             getDestination(topicSpaceUuid, false);
          else
            destHand = iProxyHandler.
                         getMessageProcessor().
                           getDestinationManager().getDestination(topicSpaceName, false);
          
          if(destHand!=null)
          {
            localTSName = destHand.getName();
          }
        }
        catch(SIException e)
        {
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.proxyhandler.BusGroup.addSubscription",
            "1:339:1.49",
            this);
          SIErrorException error = new SIErrorException(e); 
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "addSubscription", error);
          throw error;      
        }      
        
        if(localTSName!=null)
        {
          // Lookup foreign topicspace mapping 
          String foreignTSName =
            iProxyHandler.
            getMessageProcessor().
            getDestinationManager().
            getTopicSpaceMapping(iBusName, topicSpaceUuid);        
          
          // If no topicspace mapping exists, we shouldn`t fwd to the other ME.
          if (foreignTSName != null)
          {        
            if (subscription == null)
            {             
              subscription = new MESubscription(topicSpaceUuid, 
                                                localTSName, 
                                                topic, 
                                                foreignTSName);
              subscriptionsTable.put(key, subscription);
            }
             
            // Perform the proxy subscription operation.
            messageHandler = doProxySubscribeOp(subscription.addRef(),
                                                subscription,
                                                messageHandler,
                                                subscriptionsTable,
                                                sendProxy);
          }
          
        }//end if localTSName!=null
      }//end sync
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "addSubscription");
  
      return messageHandler;
    }