public int dispatchWithArgs(Object... args) {
        clearArgs();
        for (Object arg : args) {
            Class<?> argclass = arg.getClass();
            // System.out.println("argclass=" + argclass);
            if (!pushPrimitiveArg(argclass, arg)) {
                // in this usage everything that is not a primitive is pushed as an "object"
                pushObjectArg(arg);
            }
        }
        return dispatchKernelWaitComplete();
    }