docs: MESubscription proxyRegistered(SIBUuid12 topicSpaceUuid,
                                   String localTopicSpaceName,
                                   String topic,
                                   String foreignTSName,
                                   Transaction transaction,
                                   boolean foreignSecuredProxy,
                                   String MESubUserId)
  
    throws SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "proxyRegistered", new Object[] { topicSpaceUuid,
                                                          localTopicSpaceName,
        	                                                topic,
        	                                                foreignTSName,
        	                                                transaction,
        	                                                new Boolean(foreignSecuredProxy),
        	                                                MESubUserId});
  
      // Generate a key for the topicSpace/topic
      final String key = BusGroup.subscriptionKey(topicSpaceUuid, topic);
  
      // Get the subscription from the Hashtable.
      MESubscription sub = (MESubscription) iProxies.get(key);
  
      if (sub != null)
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Unmarking subscription " + sub);
  
        // unmark the subscription as it has been found
        sub.unmark();
  
        // Check whether we need to update the recovered subscription
        boolean attrChanged = checkForeignSecurityAttributesChanged(sub,
                                                                    foreignSecuredProxy,
                                                                    MESubUserId);
  
        // If the attributes have changed then we need to persist the update
        if(attrChanged)
        {
          try
          {
            sub.requestUpdate(transaction);
          }
          catch (MessageStoreException e)
          {
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.proxyhandler.Neighbour.proxyRegistered",
              "1:522:1.107",
              this);
  
            SibTr.exception(tc, e);
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.proxyhandler.Neighbour",
              "1:529:1.107",
              e });
  
            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "proxyRegistered", "SIResourceException");
  
            throw new SIResourceException(
              nls.getFormattedMessage(
                "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                new Object[] {
                  "com.ibm.ws.sib.processor.proxyhandler.Neighbour",
                  "1:539:1.107",
                  e },
                null),
              e);
          }
        }
  
        // Set the subscription to null to indicate that this
        // is an old subscription
        sub = null;
      }
      else
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Subscription being created");
  
  
        // Create a new MESubscription as one wasn't found
        sub = new MESubscription(topicSpaceUuid,
                                 localTopicSpaceName,
                                 topic,
                                 foreignTSName,
                                 foreignSecuredProxy,
                                 MESubUserId);
  
        // Add this subscription to the item Stream
        try
        {
          addItem(sub, transaction);
        }
        catch (MessageStoreException e)
        {
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.proxyhandler.Neighbour.proxyRegistered",
            "1:574:1.107",
            this);
  
          SibTr.exception(tc, e);
          SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.proxyhandler.Neighbour",
            "1:581:1.107",
            e });
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "proxyRegistered", "SIResourceException");
  
          throw new SIResourceException(
            nls.getFormattedMessage(
              "INTERNAL_MESSAGING_ERROR_CWSIP0002",
              new Object[] {
                "com.ibm.ws.sib.processor.proxyhandler.Neighbour",
                "1:591:1.107",
                e },
              null),
            e);
        }
  
        // Put the subscription in the hashtable.
        iProxies.put(key, sub);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "proxyRegistered", sub);
  
      return sub;
    }