public void ReadData(Stream stream)
        {
            stream.Seek(offset, SeekOrigin.Begin);

            string nodeType = stream.ReadUtf8String(4);
            switch (nodeType)
            {
                case "BLCK":
                    {
                        data = Blck.Read(stream);
                        break;
                    }
                default:
                    throw new UnknownNodeTypeException(nodeType);
            }
        }
        public static Blck Read(Stream stream)
        {
            var result = new Blck();
            var b = (byte)stream.ReadByte();
            result.unknown = (b & 0x80) == 0x80;
            if (!result.unknown) throw new UnknownNodeFlagException();

            result.nameLength = (short)(b & 0x7f);
            result.name = stream.ReadUtf8String(result.nameLength);

            result.length = stream.ReadInt32();
            using (var memStream = new MemoryStream(stream.ReadBytes(result.length)))
                result.children = Aval.Read(memStream).ToList();

            return result;
        }