code: @Override
      public void invoke(final Object listener, final Object message, MessagePublication publication){
          final Method handler = getContext().getHandler().getMethod();
          try {
              handler.invoke(listener, message);
          } catch (IllegalAccessException e) {
              handlePublicationError(publication, new PublicationError(e, "Error during invocation of message handler. " +
                      "The class or method is not accessible",
                      handler, listener, publication));
          } catch (IllegalArgumentException e) {
              handlePublicationError(publication, new PublicationError(e, "Error during invocation of message handler. " +
                      "Wrong arguments passed to method. Was: " + message.getClass()
                      + "Expected: " + handler.getParameterTypes()[0],
                      handler, listener, publication));
          } catch (InvocationTargetException e) {
              handlePublicationError(publication, new PublicationError(e, "Error during invocation of message handler. " +
                      "There might be an access rights problem. Do you use non public inner classes?",
                      handler, listener, publication));
          } catch (Throwable e) {
              handlePublicationError(publication, new PublicationError(e, "Error during invocation of message handler. " +
                      "The handler code threw an exception",
                      handler, listener, publication));
          }
      }
docs: {@inheritDoc}