private bool TryGetObject(ScriptState luaState, object o, out int index) { bool found = _mappings.TryGetValue(o, out index); if (found) { LuaCore.GetMetatable(luaState, DotNetObjectsMetatable.GlobalName); LuaCore.RawGetIndex(luaState, -1, index); var type = LuaCore.GetType(luaState, -1); if (type != ScriptTypes.Nil) { LuaCore.RemoveValue(luaState, -2); return(true); } LuaCore.RemoveValue(luaState, -1); LuaCore.RemoveValue(luaState, -1); Remove(luaState, index); } return(false); }