docs: public void addLifecycleListener(java.util.EventListener listener) {
          String listenerClassName = getClassName(listener);
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                  logger.entering(CLASS_NAME, "addLifecycleListener : listenerClass = " + listenerClassName);     
          }       
  
          if (listener != null) {
              if (listener instanceof javax.servlet.ServletContextListener) {
                  addServletContextListener(listener);
              }
              if (listener instanceof javax.servlet.ServletContextAttributeListener) {
                  // add to the context attr listener list
                  servletContextLAttrListeners.add(listener);
              }
  
              if (listener instanceof javax.servlet.http.HttpSessionListener) {
                  // add to the session listener list
                  this.sessionCtx.addHttpSessionListener((javax.servlet.http.HttpSessionListener) listener, name);
  
                  // 434577
                  // add to a mirror list because we can't get access to the list
                  // the
                  // session context is holding on to later on.
  
                  this.sessionListeners.add(listener);
                  this.addedSessionListeners.add(listener);
              }
              
              // Servlet 3.1
              checkForSessionIdListenerAndAdd(listener);
  
              // \PK34418 begins
              if (listener instanceof javax.servlet.http.HttpSessionAttributeListener) {
                  // add to the session attribute listener list
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                      logger
                              .logp(Level.FINE, CLASS_NAME, "addLifecycleListener",
                                      "listener instanceof javax.servlet.http.HttpSessionAttributeListener");
                      logger.logp(Level.FINE, CLASS_NAME, "addLifecycleListener", "name : " + name);
                  }
                  this.sessionCtx.addHttpSessionAttributeListener((HttpSessionAttributeListener) listener, name);
  
                  // 434577
                  // add to a mirror list because we can't get access to the list
                  // the
                  // session context is holding on to later on.
  
                  this.sessionAttrListeners.add(listener);
                  this.addedSessionAttrListeners.add(listener);
  
              }// PK34418
  
              // 2.4 Listeners
              if (listener instanceof javax.servlet.ServletRequestListener) {
                  servletRequestListeners.add(listener);
              }
              if (listener instanceof javax.servlet.ServletRequestAttributeListener) {
                  servletRequestLAttrListeners.add(listener);
              }
  
              if (listener instanceof javax.servlet.http.HttpSessionActivationListener) {
                  sessionActivationListeners.add(listener);
              }
  
              if (listener instanceof javax.servlet.http.HttpSessionBindingListener) {
                  sessionBindingListeners.add(listener);
              }
          }
          logger.exiting(CLASS_NAME, "addLifecycleListener");
      }