docs: public void stop(int requestNumber)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "stop", requestNumber);
  
        // We need to lock this down with a semaphore here to ensure that the 'started' flag is
        // correct by callers of isStarted() - see defect 347591
  
        checkNotBrowserSession();
        
        SessionStopSendListener listener = new SessionStopSendListener();
        startSemaphore.waitOnIgnoringInterruptions();
  
        try {
            if (subConsumer != null)
            {
                subConsumer.stop(requestNumber, listener);
            }
            else
            {
                super.stop(requestNumber, listener);
            }
        }
        catch (RuntimeException e) {
            FFDCFilter.processException(e, CLASS_NAME + ".stop",
                                        CommsConstants.CATMAINCONSUMER_STOP_01, this,
                                        new Object[]{subConsumer});
  
           // the listener may never post because of this, so we post now
           // to ensure the semaphore is not left dangling
           listener.errorOccurred(e);
           if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "stop", e); 
           throw e;
        }
        
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "stop");
     }