public <E extends GenericEvent>Event waitFor(@NonNull Class<? extends E>... eventClasses) throws InterruptedException {
  return waitFor(Arrays.asList(eventClasses));
}

public < E extends GenericEvent > Event waitFor ( @ NonNull Class < ? extends E > ... eventClasses ) throws InterruptedException { return waitFor ( Arrays . asList ( eventClasses ) ) ; }
wait indefinitely for the one of the specified events to be dispatched
