private T InvokeCanvasMethodUnmarshalled <T>(UnmarshalledCanvasMethod method, params object[] args)
        {
            invokeArguments[0] = Id;
            invokeArguments[1] = (int)method;
            Array.Copy(args, 0, invokeArguments, 2, args.Length);

            int a = 10;

            return(WebAssembly.Runtime.InvokeJSWithArgs <T>(0, null, invokeArguments, ref a));
        }
        private T InvokeCanvasMethodUnmarshalled2 <T>(UnmarshalledCanvasMethod method, params object[] args)
        {
            object[] realArgs = new object[args.Length + 2];
            Array.Copy(args, 0, realArgs, 2, args.Length);
            realArgs[0] = Id;
            realArgs[1] = (int)method;

            // return RegisteredFunction.InvokeUnmarshalled<T>(MethodPrefix + "InvokeUnmarshalled", realArgs);
            return(RegisteredFunction.InvokeUnmarshalled <T>("G", realArgs));
        }