code: public static MethodInvocation newMethodInvocation(Object target, String methodName, Object... args) {
      Assert.notNull(target, "Target object cannot be null");
  
      return new MethodInvocation(target, ClassUtils.findMethod(target.getClass(), methodName, args), args);
    }
docs: Factory method used to construct an instance of {@link MethodInvocation} initialized with the given
  {@link Object target} on which the {@code methodName named} {@link Method} accepting the given
  array of {@link Object arguments} will be invoked.
  
  The {@link String named} {@link Method} represents a {@link java.lang.reflect.Modifier#STATIC non-static}
  instance {@link Method} that will be invoked on the given target {@link Object}.
  
  @param target {@link Object} on which the {@link Method} will be invoked.
  @param methodName {@link String name} of the {@link Method}.
  @param args array of {@link Object arguments} passed to the {@link Method}.
  @return an instance of {@link MethodInvocation} encapsulating all the necessary details to invoke
  the instance {@link Method} on the target {@link Object}.
  @throws IllegalArgumentException if the target {@link Object} is {@literal null}.
  @see #MethodInvocation(Object, Method, Object...)
  @see java.lang.Object