docs: public void addListener(T listener) {
  	Method[] declaredMethods = listener.getClass().getDeclaredMethods();
  	boolean found = false;
  	for (Method method : declaredMethods) { // loop only on declared methods to avoid
  						// calling
  						// empty Adapter methods on event fire
  	    if (CALLBACK_NAME.equals(method.getName())) {
  		found = true;
  		Class<?>[] parameterTypes = method.getParameterTypes();
  		if (parameterTypes.length >= 1 && EventObject.class.isAssignableFrom(parameterTypes[0])) { // since
  													   // event
  													   // methods
  													   // have
  													   // at
  													   // least
  													   // the
  													   // event
  													   // argument
  		    register(listener, parameterTypes[0]);
  
  		}
  	    }
  	}
  
  	if (!found) {
  	    log.warn("[addListener] No callback method found in provided listener {}", listener);
  	}
  
      }