docs: @Override
      public synchronized void invalidate() {
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.entering(methodClassName, methodNames[INVALIDATE], appNameAndIdString);
          }
          if (invalInProgress) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[INVALIDATE], "Invalidation in Progress");
              }
              return;
          }
          if (!_isValid) {
              throw new IllegalStateException();
          }
          invalInProgress = true;
          
          // PM03375: Remove duplicate call to sessionCacheDiscard for persistence case
          if (_smc.isUsingMemory()) {
              _storeCallback.sessionCacheDiscard(this);
          }
          _storeCallback.sessionInvalidated(this);
          _store.removeSession(_sessionId);
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[INVALIDATE], "_removeAttrOnInvalidate = " + _removeAttrOnInvalidate );
              if(_attributes != null) {
                  LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[INVALIDATE], "session _attributes.size() = " + _attributes.size() );
              }
          }        
          
          //CTS defect expects removal of session attributes
          if(_attributes != null && _removeAttrOnInvalidate) {
              
             Enumeration<String> attrKey =  _attributes.keys();
             while(attrKey.hasMoreElements()){
                 
                 String key = attrKey.nextElement();
                 this.removeAttribute(key);
             }                    
             if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                 LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[INVALIDATE], "session attributes removed");
             }
          }
  
          setIsValid(false);
  
          invalInProgress = false;
          _attributes = null;
          _attributeNames.clear();
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[INVALIDATE]);
          }
      }