docs: public Object createSession(String id, int sessionVersion, Object correlator) {
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              // LoggingUtil.SESSION_LOGGER_CORE.logp(Level.FINE, methodClassName,
              // "createSession", new Object[] {id, new Integer(sessionVersion),
              // correlator});
          }
          ISession iSession = null;
  
          if ((null == id) || !_store.idExists(id, correlator)) {
              id = _idGenerator.getID();
              iSession = _store.createSession(id, correlator);
          } else {
              iSession = _store.createSession(id, correlator);
              if (sessionVersion != -1) {
                  iSession.setVersion(sessionVersion);
              }
          }
  
          iSession.incrementRefCount();
          iSession.setMaxInactiveInterval(_sessionTimeout);
  
          _sessionEventDispatcher.sessionCreated(iSession);
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && LoggingUtil.SESSION_LOGGER_CORE.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_CORE.exiting(methodClassName, "createSession", "iSession = " + iSession);
          }
          return iSession;
      }