docs: public List<FilterDefinition> getFilters() {
  		try {
  			if (isStarted()) {
  				final FilterAcknowledger acknowledger = new FilterAcknowledger();
  				
  				// Be sure that the emit/ack is synchronous to get the filters before the test are run
  				new Thread(new Runnable() {
  					@Override
  					public void run() {
  						try {
  							LOGGER.finest("Retrieve filters");
  							socket.emit("filters:get", acknowledger);
  						}
  						catch (Exception e) {
  							LOGGER.finest("Unable to get the filters: " + e.getMessage());
  							synchronized (acknowledger) {
  								acknowledger.notify();
  							}
  						}
  					}
  				}).start();
  
  				synchronized (acknowledger) {
  					acknowledger.wait();
  				}
  
  				if (!acknowledger.hasFilters()) {
  					for (FilterDefinition filter : acknowledger.getFilters()) {
  						LOGGER.info("Filter element: " + filter);
  					}
  				}
  
  				return acknowledger.getFilters();
  			}
  		}
  		catch (Exception e) {
  			LOGGER.warning("Unable to retrieve the filters from the agent. Cause: " + e.getMessage());
  			e.printStackTrace();
  			if (LOGGER.getLevel() == Level.FINEST) {
  				LOGGER.log(Level.FINEST, "Exception: ", e);
  			}
  		}
  		
  		return null;
  	}