static int Lua_Mul(ILuaState L)
    {
        int count = LuaDLL.lua_gettop(L);

        if (count == 2 && L.CheckTypes(1, typeof(float), typeof(LuaTable)))
        {
            var   arg0 = (float)L.ToNumber(1);
            Color arg1 = L.ToColor(2);
            Color o    = arg0 * arg1;
            L.PushUData(o);
            return(1);
        }
        else if (count == 2 && L.CheckTypes(1, typeof(LuaTable), typeof(float)))
        {
            Color arg0 = L.ToColor(1);
            var   arg1 = (float)L.ToNumber(2);
            Color o    = arg0 * arg1;
            L.PushUData(o);
            return(1);
        }
        else if (count == 2 && L.CheckTypes(1, typeof(LuaTable), typeof(LuaTable)))
        {
            Color arg0 = L.ToColor(1);
            Color arg1 = L.ToColor(2);
            Color o    = arg0 * arg1;
            L.PushUData(o);
            return(1);
        }
        else
        {
            LuaDLL.luaL_error(L, "invalid arguments to method: Color.op_Multiply");
        }

        return(0);
    }
    static int Lua_Mul(ILuaState L)
    {
        int count = LuaDLL.lua_gettop(L);

        if (count == 2 && L.CheckTypes(1, typeof(LuaTable), typeof(LuaTable)))
        {
            Quaternion arg0 = L.ToQuaternion(1);
            Vector3    arg1 = L.ToVector3(2);
            Vector3    o    = arg0 * arg1;
            L.PushUData(o);
            return(1);
        }
        else if (count == 2 && L.CheckTypes(1, typeof(LuaTable), typeof(LuaTable)))
        {
            Quaternion arg0 = L.ToQuaternion(1);
            Quaternion arg1 = L.ToQuaternion(2);
            Quaternion o    = arg0 * arg1;
            L.PushUData(o);
            return(1);
        }
        else
        {
            LuaDLL.luaL_error(L, "invalid arguments to method: Quaternion.op_Multiply");
        }

        return(0);
    }