protected override object InvokeListenerMethod(string methodName, object[] arguments)
 {
     try
     {
         MethodInfo mi = MethodNode.GetBestMethod(HandlerObject.GetType(), methodName, BINDING_FLAGS, arguments);
         if (mi == null)
         {
             throw new ListenerExecutionFailedException("Failed to invoke the target method '" + methodName +
                                                        "' with arguments " +
                                                        StringUtils.CollectionToCommaDelimitedString(arguments));
         }
         try
         {
             return(mi.Invoke(HandlerObject, arguments));
         } catch (Exception e)
         {
             throw new ListenerExecutionFailedException("Listener method '" + methodName + "' threw exception.", e);
         }
     } catch (Exception e)
     {
         throw new ListenerExecutionFailedException("Failed to invoke the target method '" + methodName +
                                                    "' with arguments " +
                                                    StringUtils.CollectionToCommaDelimitedString(arguments), e);
     }
 }