code: public static Object invoke(Object instance, Method method, Object... args) throws IllegalAccessException, InvocationTargetException {
          if (method.isVarArgs()) {
              args = fixVarArgs(method.getParameterTypes(), args);
          }
          return method.invoke(instance, args);
      }
docs: Invokes {@code method}, automatically tries to fix varargs arguments.
  @param instance
  @param method
  @param args
  @return result
  @throws IllegalAccessException
  @throws InvocationTargetException