public static IEnumerable <T> Enumerate <T>(SnoGroupId groupId) where T : SerializeMemoryObject
        {
            var container = Engine.TryGet((engine) => engine.SnoGroupsByCode[(int)groupId].x10_Container);

            if (container == null)
            {
                return(Enumerable.Empty <T>());
            }

            return(container
                   .Where(a => a.x00_Id != -1)
                   .Where(a => a.x07_SnoGroupId == (byte)groupId)
                   .Select(a => a.x0C_Ptr_SnoValue.Cast <T>().Dereference()));
        }
        public static T GetSnoValue <T>(SnoGroupId groupId, int snoId) where T : SerializeMemoryObject
        {
            var container = Engine.TryGet((engine) => engine.SnoGroupsByCode[(int)groupId].x10_Container);

            if (container == null)
            {
                return(default(T));
            }

            var entityId = SnoIdToEntityId(snoId);

            if (entityId == -1)
            {
                return(default(T));
            }
            var def = container.x11C_Ptr_Items.Cast <SnoDefinition <T> >()[(short)entityId];

            return(def.x0C_Ptr_SnoValue.Dereference());
        }
        public static string GetSlug(SnoGroupId groupId, int snoId)
        {
            var map = SnoFiles.Instance.x09F8_SnoFileMaps[(int)groupId];

            return(map.GetValue(snoId, HashUtils.Fnv32).Dereference().Slug.ToString());
        }