docs: public boolean isAuthenticated(HttpMessage msg) {
  		if (msg == null || msg.getResponseBody() == null) {
  			return false;
  		}
  		// Assume logged in if nothing was set up
  		if (loggedInIndicatorPattern == null && loggedOutIndicatorPattern == null) {
  			try {
  				Stats.incCounter(SessionStructure.getHostName(msg), AUTH_STATE_NO_INDICATOR_STATS);
  			} catch (URIException e) {
  				// Ignore
  			}
  			if (View.isInitialised()) {
  				// Let the user know this
  				View.getSingleton()
  						.getOutputPanel()
  						.append(Constant.messages.getString("authentication.output.indicatorsNotSet", msg
  								.getRequestHeader().getURI())
  								+ "\n");
  			}
  			return true;
  		}
  
  		String body = msg.getResponseBody().toString();
  		String header = msg.getResponseHeader().toString();
  
  		if (loggedInIndicatorPattern != null
  				&& (loggedInIndicatorPattern.matcher(body).find() || loggedInIndicatorPattern.matcher(header)
  						.find())) {
  			// Looks like we're authenticated
  			try {
  				Stats.incCounter(SessionStructure.getHostName(msg), AUTH_STATE_LOGGED_IN_STATS);
  			} catch (URIException e) {
  				// Ignore
  			}
  			return true;
  		}
  
  		if (loggedOutIndicatorPattern != null && !loggedOutIndicatorPattern.matcher(body).find()
  				&& !loggedOutIndicatorPattern.matcher(header).find()) {
  			// Cant find the unauthenticated indicator, assume we're authenticated but record as unknown
  			try {
  				Stats.incCounter(SessionStructure.getHostName(msg), AUTH_STATE_UNKNOWN_STATS);
  			} catch (URIException e) {
  				// Ignore
  			}
  			return true;
  		}
  		// Not looking good...
  		try {
  			Stats.incCounter(SessionStructure.getHostName(msg), AUTH_STATE_LOGGED_OUT_STATS);
  		} catch (URIException e) {
  			// Ignore
  		}
  		return false;
  	}