/// <summary>
        /// Writes MAT-file header into <c>Stream</c>
        /// </summary>
        /// <param name="stream">The output stream</param>
        private void WriteHeader(BinaryWriter stream)
        {
            //write descriptive text
            MatFileHeader header = MatFileHeader.CreateHeader();

            char[] dest = new char[116];
            char[] src  = header.Description.ToCharArray();
            Array.Copy(src, 0, dest, 0, src.Length);

            byte[] endianIndicator = header.EndianIndicator;

            //ByteBuffer buf = new ByteBuffer( dest.Length * 2 + /* char size */ + 2 + endianIndicator.Length );
            ByteBuffer buf = new ByteBuffer(128); // The header is always a 128-byte header

            for (int i = 0; i < dest.Length; i++)
            {
                buf.Put((byte)dest[i]);
            }
            //write subsyst data offset
            buf.Position(buf.Position() + 8);

            // write version
            int version = header.Version;

            //buf.Put( (byte)(version >> 8) );
            //buf.Put( (byte)version );
            buf.PutShort((short)version);

            buf.Put(endianIndicator);

            stream.Write(buf.Array());
        }