docs: public void stopListeners(String stoppingJ2eename) {
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.entering(methodClassName, methodNames[STOP_LISTENERS], "stopListeners for " + stoppingJ2eename);
          }
  
          if (stoppingJ2eename != null) { // should never be null, but make sure
              // do mHttpSessionListeners first
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS],
                                                       "mHttpSessListenersJ2eeNames.size is " + mHttpSessionListenersJ2eeNames.size());
              }
              synchronized (mHttpSessionListeners) {
                  for (int x = mHttpSessionListenersJ2eeNames.size() - 1; x >= 0; x--) {
                      String listenerJ2eeName = (String) mHttpSessionListenersJ2eeNames.get(x);
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS], "listenerJ2eeName is " + listenerJ2eeName);
                      }
                      if (stoppingJ2eename.equals(listenerJ2eeName)) {
                          mHttpSessionListeners.remove(x);
                          mHttpSessionListenersJ2eeNames.remove(x);
                      }
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS], "stopping http session listener for: " + stoppingJ2eename);
                      }
                  }
                  if (mHttpSessionListeners.size() == 0) {
                      sessionListener = false;
                      _coreHttpSessionManager.getIStore().setHttpSessionListener(false);
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS], "stopped all http session listeners");
                      }
                  }
                  if (wasHttpSessionObserver.getDoesContainIBMSessionListener()) {
                      // if we used to contain an IBMSessionListener, checking remaining
                      // listeners to see if we need to update the boolean
                      boolean mIBMSessionListenerImplemented = isIBMSessionListenerImplemented(mHttpSessionListeners);
                      if (!mIBMSessionListenerImplemented) {
                          wasHttpSessionObserver.setDoesContainIBMSessionListener(false);
                      }
                  }
              }
              // now do mHttpSessionAttributeListeners
  
              for (int x = mHttpSessionAttributeListenersJ2eeNames.size() - 1; x >= 0; x--) {
                  String listenerJ2eeName = (String) mHttpSessionAttributeListenersJ2eeNames.get(x);
                  if (stoppingJ2eename.equals(listenerJ2eeName)) {
                      mHttpSessionAttributeListeners.remove(x);
                      mHttpSessionAttributeListenersJ2eeNames.remove(x);
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS], "stopping http session attribute listener for: "
                                                                                                                         + stoppingJ2eename);
                      }
                  }
              }
              if (mHttpSessionAttributeListeners.size() == 0) {
                  sessionAttributeListener = false;
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[STOP_LISTENERS], "stopped all http session attribute listeners");
                  }
              }
          }
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[STOP_LISTENERS]);
          }
      }