docs: protected void cleanupSessionToken(String token) {
  		// Empty check
  		if (sessions.isEmpty()) {
  			return;
  		}
  
  		if (log.isDebugEnabled()) {
  			log.debug("Removing duplicates and cleaning up sessions for site - token: " + site + " - "
  					+ token);
  		}
  
  		synchronized (this.sessions) {
  			// If there are no more session tokens, delete all sessions
  			HttpSessionTokensSet siteTokensSet = extension.getHttpSessionTokensSet(site);
  			if (siteTokensSet == null) {
  				log.info("No more session tokens. Removing all sessions...");
  				// Invalidate all sessions
  				for (HttpSession session : this.sessions) {
  					session.invalidate();
  				}
  	
  				// Remove all sessions
  				this.sessions.clear();
  				this.activeSession = null;
  				this.model.removeAllElements();
  				return;
  			}
  	
  			// Iterate through all the sessions, eliminate the given token and eliminate any duplicates
  			Map<String, HttpSession> uniqueSession = new HashMap<>(sessions.size());
  			List<HttpSession> toDelete = new LinkedList<>();
  			for (HttpSession session : this.sessions) {
  				// Eliminate the token
  				session.removeToken(token);
  				if (session.getTokenValuesCount() == 0 && !session.isActive()) {
  					toDelete.add(session);
  					continue;
  				} else {
  					model.fireHttpSessionUpdated(session);
  				}
  	
  				// If there is already a session with these tokens, mark one of them for deletion
  				if (uniqueSession.containsKey(session.getTokenValuesString())) {
  					HttpSession prevSession = uniqueSession.get(session.getTokenValuesString());
  					// If the latter session is active, put it into the map and delete the other
  					if (session.isActive()) {
  						toDelete.add(prevSession);
  						session.setMessagesMatched(session.getMessagesMatched()
  								+ prevSession.getMessagesMatched());
  					} else {
  						toDelete.add(session);
  						prevSession.setMessagesMatched(session.getMessagesMatched()
  								+ prevSession.getMessagesMatched());
  					}
  				}
  				// If it's the first one with these token values, keep it
  				else {
  					uniqueSession.put(session.getTokenValuesString(), session);
  				}
  			}
  	
  			// Delete the duplicate sessions
  			if (log.isInfoEnabled()) {
  				log.info("Removing duplicate or empty sessions: " + toDelete);
  			}
  			Iterator<HttpSession> it = toDelete.iterator();
  			while (it.hasNext()) {
  				HttpSession ses = it.next();
  				ses.invalidate();
  				sessions.remove(ses);
  				model.removeHttpSession(ses);
  			}
  		}
  	}