code: public void handleEvent(Object event) throws InvocationTargetException {
      if (!valid) {
        throw new IllegalStateException(toString() + " has been invalidated and can no longer handle events.");
      }
      try {
        method.invoke(target, event);
      } catch (IllegalAccessException e) {
        throw new AssertionError(e);
      } catch (InvocationTargetException e) {
        if (e.getCause() instanceof Error) {
          throw (Error) e.getCause();
        }
        throw e;
      }
    }
docs: Invokes the wrapped handler method to handle {@code event}.
  
  @param event  event to handle
  @throws IllegalStateException  if previously invalidated.
  @throws java.lang.reflect.InvocationTargetException  if the wrapped method throws any {@link Throwable} that is not
  an {@link Error} ({@code Error}s are propagated as-is).