docs: @Override
      public boolean registerConsumerSetMonitor(
                                                SIDestinationAddress destinationAddress,
                                                String discriminatorExpression,
                                                ConsumerSetChangeCallback callback)
                      throws SIResourceException,
                      SINotPossibleInCurrentConfigurationException,
                      SIConnectionUnavailableException,
                      SIConnectionDroppedException,
                      SIIncorrectCallException,
                      SICommandInvocationFailedException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "registerConsumerSetMonitor",
                          new Object[] { destinationAddress,
                                        discriminatorExpression,
                                        callback });
  
          // Check that a listener has been specified
          if (callback == null)
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
              // Parameter is null, throw an excepiton
              throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_CONSUMERSETCHANGECALLBACK_CWSIP0667", null, null));
          } else if (destinationAddress == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
              // Parameter is null, throw an excepiton
              throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_DESTINATIONADDRESS_CWSIP0668", null, null));
  
          } else if (discriminatorExpression == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
              // Parameter is null, throw an excepiton
              throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_DISCRIMINATOREXPRESSION_CWSIP0669", null, null));
  
          }
          boolean areConsumers = false;
          try
          {
              DestinationHandler topicSpace =
                              _destinationManager.getDestination((JsDestinationAddress) destinationAddress, false);
  
              areConsumers =
                              _messageProcessor.
                                              getMessageProcessorMatching().
                                              registerConsumerSetMonitor(topicSpace,
                                                                         discriminatorExpression,
                                                                         this,
                                                                         callback);
          } catch (Exception e)
          {
              // FFDC
              FFDCFilter
                              .processException(
                                                e,
                                                "com.ibm.ws.sib.processor.impl.ConnectionImpl.registerConsumerSetMonitor",
                                                "1:7378:1.347.1.25",
                                                this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.exception(tc, e);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "registerConsumerSetMonitor", "SIErrorException");
              //SIErrorException is RuntimeExcetion hence catching this exception in StaticCATConnection
              throw new SIErrorException(e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "registerConsumerSetMonitor", Boolean.valueOf(areConsumers));
          return areConsumers;
      }