code: public static <T> T invoke(Object instance, String method, Object... args) {
          if (instance == null) return null;
          try {
              Method m = getPublicMethod(instance.getClass(), method, getArgsClasses(args));
              return (T) m.invoke(instance, args);
          } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
              throw new IllegalStateException(e.getMessage(), e);
          }
      }
docs: <p>invoke.</p>
  
  @param instance a {@link java.lang.Object} object.
  @param method a {@link java.lang.String} object.
  @param args a {@link java.lang.Object} object.
  @param <T> a T object.
  @return a T object.