private BlenderFileBlockToken ReadFileBlock(FileStream fs, BlenderFileHeaderToken fileHeader)
        {
            /*
            code	char[4]	File-block identifier	0	4
 size	integer	Total length of the data after the file-block-header	4	4
 old memory address	void*	Memory address the structure was located when written to disk	8	pointer-size (4/8)
 SDNA index	integer	Index of the SDNA structure	8+pointer-size	4
 count	integer	Number of structure located in this file-block	12+pointer-size	4

            */

            var identifier = new byte[4];
            fs.Read(identifier, 0, identifier.Length);
            var id = Encoding.ASCII.GetString(identifier);

            var dataLength = ReadInt(fs, fileHeader.Endianness);

            var memoryAddress = fileHeader.PointerSize == 4
                ? ReadInt(fs, fileHeader.Endianness)
                : ReadLong(fs, fileHeader.Endianness);

            var sdnaIndex = ReadInt(fs, fileHeader.Endianness);

            var count = ReadInt(fs, fileHeader.Endianness);

            var data = new byte[dataLength];
            fs.Read(data, 0, data.Length);

            var md5 = MD5.Create();
            var hash = md5.ComputeHash(data, 0, data.Length);

            return new BlenderFileBlockToken(id, dataLength, memoryAddress, sdnaIndex, count,
                BitConverter.ToString(hash));
        }
        private BlenderFileBlockToken ReadFileBlock(FileStream fs, BlenderFileHeaderToken fileHeader)
        {
            /*
             * code	char[4]	File-block identifier	0	4
             * size	integer	Total length of the data after the file-block-header	4	4
             * old memory address	void*	Memory address the structure was located when written to disk	8	pointer-size (4/8)
             * SDNA index	integer	Index of the SDNA structure	8+pointer-size	4
             * count	integer	Number of structure located in this file-block	12+pointer-size	4
             *
             */

            var identifier = new byte[4];

            fs.Read(identifier, 0, identifier.Length);
            var id = Encoding.ASCII.GetString(identifier);

            var dataLength = ReadInt(fs, fileHeader.Endianness);

            var memoryAddress = fileHeader.PointerSize == 4
                ? ReadInt(fs, fileHeader.Endianness)
                : ReadLong(fs, fileHeader.Endianness);

            var sdnaIndex = ReadInt(fs, fileHeader.Endianness);

            var count = ReadInt(fs, fileHeader.Endianness);

            var data = new byte[dataLength];

            fs.Read(data, 0, data.Length);

            var md5  = MD5.Create();
            var hash = md5.ComputeHash(data, 0, data.Length);

            return(new BlenderFileBlockToken(id, dataLength, memoryAddress, sdnaIndex, count,
                                             BitConverter.ToString(hash)));
        }