docs: public SessionAffinityContext analyzeRequest(ServletRequest request) {
          // create local variable - JIT performance improvement
          final boolean isTraceOn = com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.entering(methodClassName, methodNames[ANALYZE_REQUEST]);
          }
  
          String sessionID = null;
          boolean reqFromCookie = false;
          boolean reqFromURL = false;
          boolean reqFromSSL = false;
          boolean reqFromClient = false;
          SessionAffinityContext sessionAffinityContext = null;
          List allSessionIds = null;
  
          // tries to get the sac from SSL (if applicable)
          if (_smc.useSSLId()) {
              String sessionId = getActualSSLSessionId(request);
              sessionAffinityContext = analyzeSSLRequest(request, sessionId);
          }
          // we found a sessionAffinityContext for SSL ... return
          if (sessionAffinityContext != null) {
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[ANALYZE_REQUEST], "Affinity Context found from SSL");
              }
              return sessionAffinityContext;
          }
  
          // try a non-SSL request
          if (_smc.getEnableCookies()) {
              // allSessionIds =
              // ((IExtendedRequest)request).getAllCookieValues(_smc.getSessionCookieName());
              byte[] byteSessId = ((IExtendedRequest) request).getCookieValueAsBytes(_smc.getSessionCookieName());
              if (byteSessId != null) {
                  allSessionIds = new ArrayList(1);
                  allSessionIds.add(0, new String(byteSessId));
                  if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "Found session id(s) in cookie");
                  }
                  reqFromCookie = true;
              } else { // 105740: Good message when cookies doesn't contain the sessionID
                  if (isTraceOn&&LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "No session id(s) found in cookie");
                  }
              }
  
  
              /*
               * allSessionIds =
               * ((IExtendedRequest)request).getAllCookieValues(_smc.getSessionCookieName
               * ());
               * if ((allSessionIds != null) && (!allSessionIds.isEmpty())) {
               * if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&LoggingUtil.
               * SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
               * LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName,
               * methodNames[ANALYZE_REQUEST], "Found session id(s) in cookie");
               * }
               * reqFromCookie = true;
               * }
               */
          }
  
          if ((!reqFromCookie) && (_smc.getEnableUrlRewriting())) {
              sessionID = getRequestedSessionIdFromURL(request);
              if (sessionID != null) {
                  reqFromURL = true;
                  allSessionIds = new ArrayList(1);
                  allSessionIds.add(0, sessionID);
              }
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "Found session id in URL: " + sessionID);
              }
          } 
          
          
          // Maybe a cookie was sent using the wrong means - ok it should be treated as
          // invalid but should be returned from ServletRequest.getRequestedSessionId()
          if (!reqFromCookie && !reqFromURL) {            
              if (_smc.getEnableCookies()) {
                  // If cookies were enable now look in the URL
                  sessionID = getRequestedSessionIdFromURL(request,true);
                  if (sessionID != null) {
                      if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "Found client session id in URL: " + sessionID);
                      }
                      reqFromClient = true;
                      allSessionIds = new ArrayList(1);
                      allSessionIds.add(0, sessionID);
                  }              
              } else {               
                  byte[] byteSessId = ((IExtendedRequest) request).getCookieValueAsBytes(_smc.getSessionCookieName());
                  if (byteSessId != null) {
                      allSessionIds = new ArrayList(1);
                      allSessionIds.add(0, new String(byteSessId));
                      if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "Found client session id(s) in cookie");
                      }
                      reqFromClient = true;
                  } else { // 105740: Good message when cookies doesn't contain the sessionID
                      if (isTraceOn&&LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
                          LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "No session id(s) found in cookie");
                      }
                  }
              }    
          }
          
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName, methodNames[ANALYZE_REQUEST], "allSessionIds size = " + (allSessionIds == null ? "0" : allSessionIds.size()));
          }
  
          sessionAffinityContext = new SessionAffinityContext(allSessionIds, reqFromCookie, reqFromURL, reqFromSSL,reqFromClient);
          setNextId(sessionAffinityContext);
  
          // Since we didn't have a sac, but we have session id string...we've been
          // remotely dispatched
          // We need to set the version, id, and clones from the request string into
          // the response fields
          // of our sac.
          String idFromRequest = ((IExtendedRequest) request).getUpdatedSessionId();
          if (idFromRequest != null) { // if yes, modify newly created sac with that data
              setResponseData(idFromRequest, sessionAffinityContext);
          }
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, methodNames[ANALYZE_REQUEST]);
          }
          return sessionAffinityContext;
      }