code: public static Reflect on(@NonNull Method method, Object owner, boolean allowPrivilegedAccess, Object... args) throws ReflectionException {
        boolean accessible = method.isAccessible();
        try {
           if (!accessible && allowPrivilegedAccess) {
              method.setAccessible(true);
           }
           Object[] convertedArgs = null;
           if (args != null) {
              convertedArgs = new Object[args.length];
              Class<?>[] parameterTypes = method.getParameterTypes();
              for (int i = 0; i < args.length; i++) {
                 convertedArgs[i] = convertValueType(args[i], parameterTypes[i]);
              }
           }
           Object object = method.invoke(owner, convertedArgs);
           return new Reflect(object, object == null ? Void.class : object.getClass(), allowPrivilegedAccess);
        } catch (IllegalAccessException | InvocationTargetException e) {
           throw new ReflectionException(e);
        } finally {
           if (!accessible && allowPrivilegedAccess) {
              method.setAccessible(false);
           }
        }
     }
docs: Creates an instance Reflect for an object returned by invoking a method.
  
  @param method                The method to call
  @param owner                 The object to call the method on (null for static)
  @param allowPrivilegedAccess Allows access to all methods on the object or class
  @param args                  The arguments to pass to the constructor
  @return A Reflect wrapper around the constructed object
  @throws ReflectionException Something went wrong invoking the method