public static bool PushObjFromCache(IntPtr l, object obj) { if (LuaObjCacheSlim.TryPush(l, obj)) { return(true); } var cache = GetObjCache(l); if (cache != null) { IntPtr h; if (cache._Map.TryGetValue(obj, out h)) { l.checkstack(5); PushObjCacheReg(l); // reg if (!l.istable(-1)) { l.pop(1); return(false); } l.pushlightuserdata(h); // reg h l.gettable(-2); // reg ud if (l.isnoneornil(-1)) { l.pop(2); // X return(false); } l.remove(-2); // ud return(true); } } return(false); }