docs: private Method detectReceiverMethod(final Object receiver, final Class<? extends T> eventClass,
  			final Pattern namePattern) {
  
  		final Method[] methods = receiver.getClass().getMethods();
  		final List<Method> results = new LinkedList<Method>();
  
  		for (final Method method : methods) {
  
  			if (method.getParameterTypes() == null || method.getParameterTypes().length != 1) {
  				// wrong amount of parameters -> try next
  				continue;
  			}
  
  			if (namePattern != null && !namePattern.matcher(method.getName()).find()) {
  				// wrong method name - try next
  				continue;
  			}
  
  			if (this.canHandle(method, eventClass)) {
  				// hit!
  				results.add(method);
  			}
  		}
  
  		if (results.size() == 1) {
  			// only one hit - perfect
  			return results.get(0);
  		}
  
  		if (results.size() > 1) {
  			throw new IllegalArgumentException("receiver '" + receiver
  					+ "' has more than one accessible method with a single parameter of type '" + eventClass.getName()
  					+ "' " + (namePattern != null ? " and name pattern '" + namePattern.pattern() + "' " : "") + ": "
  					+ results.toString());
  		}
  
  		// no hit _> exception
  		throw new IllegalArgumentException("receiver '" + receiver
  				+ "' does not have an accessible method with a single parameter of type '" + eventClass.getName() + "' "
  				+ (namePattern != null ? " and name pattern '" + namePattern.pattern() + "' " : ""));
  
  	}