docs: public void sessionAttributeSet(ISession session, Object name, Object oldValue, Boolean oldIsListener, Object newValue, Boolean newIsListener) {
  
          HttpSession httpsession = (HttpSession) _adapter.adapt(session);
          HttpSessionBindingEvent addEvent = null; // only init if necessary
          HttpSessionBindingEvent replaceEvent = null; // only init this if
                                                       // necessary..done below
  
          // do binding listeners first to be consistent with v6.1
          if ((oldValue != null) && (oldIsListener.booleanValue())) {
              replaceEvent = new HttpSessionBindingEvent(httpsession, (String) name, oldValue);
              // if (oldValue instanceof HttpSessionBindingListener)
              ((HttpSessionBindingListener) oldValue).valueUnbound(replaceEvent);
          }
          if ((newValue != null) && (newIsListener.booleanValue())) { // (newValue instanceof HttpSessionBindingListener) ) {
              addEvent = new HttpSessionBindingEvent(httpsession, (String) name, newValue);
              ((HttpSessionBindingListener) newValue).valueBound(addEvent);
          }
          // now do attribute listeners
          HttpSessionAttributeListener listener = null;
          for (int i = 0; i < _sessionAttributeListeners.size(); i++) {
              listener = (HttpSessionAttributeListener) _sessionAttributeListeners.get(i);
              if (oldValue != null) {
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, "sessionAttrSet", "Calling attributeReplace on listener:" + listener);
                  }
                  if (replaceEvent == null)
                      replaceEvent = new HttpSessionBindingEvent(httpsession, (String) name, oldValue);
                  listener.attributeReplaced(replaceEvent);
              } else {
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, "sessionAttrSet", "Calling attributeCreated on listener:" + listener);
                  }
                  if (addEvent == null)
                      addEvent = new HttpSessionBindingEvent(httpsession, (String) name, newValue);
                  listener.attributeAdded(addEvent);
              }
          }
      }