code: public static Object invokeMethod(Method method, Object target, Object... args) {
          try {
              return method.invoke(target, args);
          } catch (InvocationTargetException | IllegalAccessException e) {
              throw new IllegalStateException("Could not access method: " + method, ExceptionUtils.getRootCause(e));
          }
      }
docs: Invoke the specified {@link Method} against the supplied target object with the
  supplied arguments. The target object can be {@code null} when invoking a
  static {@link Method}.
  
  @param method the method to invoke
  @param target the target object to invoke the method on
  @param args the invocation arguments (may be {@code null})
  @return the invocation result, if any