private static Entry parse_nimd_entry(BinaryFile bFile)
        {
            // read boolean (1 byte)
            bool isList = bFile.ReadBoolean();

            // ready 2 ints (8 bytes)
            int total_size = bFile.ReadInt32();
            int name_size  = bFile.ReadInt32();

            string name = bFile.ReadString(name_size);

            if (isList)
            {
                return(parse_nimd_entry_list(bFile, name));
            }

            // ready 2 ints (8 bytes)
            int data_offset = bFile.ReadInt32();
            int data_size   = bFile.ReadInt32();

            return(new Entry(name, data_offset, data_size));
        }