private void SerializeArchiveState(ArchiveState state)
        {
            SerializeString(state.ArchivePath);
            _writer.Write(state.OriginalLength);

            var originalStates = state.OriginalValues.Values.ToArray();

            _writer.Write((uint)originalStates.Length);
            for (var i = 0U; i < originalStates.Length; i++)
            {
                SerializeArchiveFileInfo(originalStates[i]);
            }
        }
        private ArchiveState DeserializeArchiveState()
        {
            var result = new ArchiveState();

            result.ArchivePath    = DeserializeString();
            result.OriginalLength = _reader.ReadInt64();
            result.OriginalValues = new Dictionary <string, ArchiveFileInfo>();

            var count = _reader.ReadInt32();

            for (var i = 0U; i < count; i++)
            {
                var info = DeserializeArchiveFileInfo();
                result.OriginalValues[info.Path] = info;
            }

            return(result);
        }