code: public Object invoke(Object proxy, Method method, Object[] args)
              throws Throwable {
          Object returnValue = null;
  
          try {
              returnValue = method.invoke(target, args);
          } catch(InvocationTargetException ite) {
              throw ite.getTargetException();
          }
  
          if (messaging != null && !exec.isShutdown()) {
              exec.submit(new Notifier(method, args, returnValue));
          }
  
          return returnValue;
      }
docs: {@inheritDoc}