docs: public void sessionDestroyed(ISession session) {
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.entering(methodClassName, methodNames[SESSION_DESTROYED], "sessionid=" + session.getId());
          }
  
          ArrayList attributes = session.getListenerAttributeNames();
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[SESSION_DESTROYED], "attributes.size()=:" + attributes.size());
          }
  
          if (_sessionListeners.size() > 0 || attributes.size() > 0) {
              HttpSession httpsession = (HttpSessionImpl) _adapter.adapt(session);
              HttpSessionEvent event = new HttpSessionEvent(httpsession);
              HttpSessionListener listener = null;
  
              // synchronized (_sessionListeners) {
              for (int i = _sessionListeners.size() - 1; i >= 0; i--) {
                  listener = (HttpSessionListener) _sessionListeners.get(i);
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[SESSION_DESTROYED], "Calling sessionDestroyed on listener:" + listener);
                  }
                  try {
                      listener.sessionDestroyed(event);
                  } catch (Exception e) {
                      if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[SESSION_DESTROYED], e.toString() + " thrown by listener: " +  listener);
                      }
                  }
              }
              // }
  
              if (attributes.size() != 0) {
                  Object value = null;
                  String name = null;
                  for (int i = 0; i < attributes.size(); i++) {
                      name = (String) attributes.get(i);
                      value = session.getAttribute(name);
                      if (null != value) {
                          // we know these are all binding listeners
                          HttpSessionBindingListener bindingListener = (HttpSessionBindingListener) value;
                          HttpSessionBindingEvent bindingEvent = new HttpSessionBindingEvent(httpsession, name);
                          bindingListener.valueUnbound(bindingEvent);
                      }
                  }
              }
          }
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[SESSION_DESTROYED]);
          }
  
      }