public void Remove(ScriptState luaState, int index) { if (_cache.ContainsKey(index)) { var o = _cache[index]; _mappings.Remove(o); _cache.Remove(index); var disposer = o as IDisposable; if (disposer != null) { disposer.Dispose(); } // remove dotNet_objects value LuaCore.GetMetatable(luaState, DotNetObjectsMetatable.GlobalName); LuaCore.PushNull(luaState); LuaCore.RawSetIndex(luaState, -2, index); } }