code: public Object invoke (Object proxy, Method method, Object[] args) throws Throwable {
          if (isCorrectMethod(method, args)) {
              boolean handled = callTarget(args[0]);
              setApplicationEventHandled(args[0], handled);
          }
          // All of the ApplicationListener methods are void; return null regardless of what happens
          return null;
      }
docs: This is the entry point for our proxy object; it is called every time an ApplicationListener method is invoked