code: private void fireEventByReflection(String methodName, Object[] eventArgs) {
  		Method eventMethod = (Method)methodCache.get(new MethodCacheKey(listenerClass, methodName, eventArgs.length));
  		Object[] listenersCopy = listeners;
  		for (int i = 0; i < listenersCopy.length; i++) {
  			try {
  				eventMethod.invoke(listenersCopy[i], eventArgs);
  			}
  			catch (InvocationTargetException e) {
  				throw new EventBroadcastException("Exception thrown by listener", e.getCause());
  			}
  			catch (IllegalAccessException e) {
  				throw new EventBroadcastException("Unable to invoke listener", e);
  			}
  		}
  	}
docs: Invokes the method with the given name on each of the listeners registered with this list
  helper. The given arguments are passed to each method invocation.
  
  @param methodName The name of the method to be invoked on the listeners.
  @param eventArgs The arguments that will be passed to each method invocation. The number
  of arguments is also used to determine the method to be invoked.
  
  @throws EventBroadcastException if an error occurs invoking the event method on any of the
  listeners.