/// <summary>
        /// Checks if hash of <paramref name="keyword"/> is equal to <see cref="Mythic.Package.MythicPackageFile.FileHash"/>.
        /// </summary>
        /// <param name="hash">Hash of the <paramref name="keyword"/></param>
        /// <param name="keyword">Word or a phrase.</param>
        /// <returns>If <paramref name="keyword"/> equals to <see cref="Mythic.Package.MythicPackageFile.FileHash"/>.</returns>
        public bool SearchHash(ulong hash, string keyword)
        {
            if (m_FileName == null && m_FileHash == hash)
            {
                HashDictionary.Set(hash, keyword);
                m_FileName = keyword;
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Checks if hash of <paramref name="keyword"/> is equal to <see cref="Mythic.Package.MythicPackageFile.FileHash"/>.
        /// </summary>
        /// <param name="hash">Hash of the <paramref name="keyword"/></param>
        /// <param name="keyword">Word or a phrase.</param>
        /// <returns>If <paramref name="keyword"/> equals to <see cref="Mythic.Package.MythicPackageFile.FileHash"/>.</returns>
        public bool SearchHash(ulong hash, char[] keyword)
        {
            if (m_FileName == null && m_FileHash == hash)
            {
                String name = new String(keyword);
                HashDictionary.Set(hash, name);
                m_FileName = name;
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Saves file data to <paramref name="writer"/>.
        /// </summary>
        /// <param name="reader">Binary file (.uop source).</param>
        /// <param name="writer">Binary file (.uop destination).</param>
        public void SaveData(BinaryReader reader, BinaryWriter writer)
        {
            if (m_SourceBuffer != null)
            {
                writer.Write(m_SourceBuffer, 0, m_CompressedSize);
                HashDictionary.Set(m_FileHash, m_FileName);
            }
            else
            {
                reader.BaseStream.Seek(m_OldDataBlockAddress + m_DataBlockLength, SeekOrigin.Begin);
                m_SourceBuffer = reader.ReadBytes(m_CompressedSize);
                writer.Write(m_SourceBuffer, 0, m_CompressedSize);
            }

            m_OldDataBlockAddress = m_DataBlockAddress;
            m_SourceBuffer        = null;
            m_Modified            = false;
            m_Added = false;
        }