public object GetAsObject(LuaState luaState, int stackPos) { if (LuaLib.LuaType(luaState, stackPos) == LuaTypes.Table) { if (LuaLib.LuaLGetMetafield(luaState, stackPos, "__index")) { if (LuaLib.LuaLCheckMetatable(luaState, -1)) { LuaLib.LuaInsert(luaState, stackPos); LuaLib.LuaRemove(luaState, stackPos + 1); } else { LuaLib.LuaSetTop(luaState, -2); } } } object obj = translator.GetObject(luaState, stackPos); return(obj); }