public object DeSerialize(BinaryReader reader)
        {
            int version = reader.ReadInt32();

            lock (Sites.Locker)
            {
                Sites.Clear();
                reader.ReadCollection(Sites, r => (Site) new Site().DeSerialize(r));
            }
            lock (Results.Locker)
            {
                Results.Clear();
                reader.ReadCollection(Results, r => (Result) new Result().DeSerialize(r));
            }
            lock (Favorites.Locker)
            {
                Favorites.Clear();
                reader.ReadCollection(Favorites, r => (Result) new Result().DeSerialize(r));
            }
            if (version > 0)
            {
                lock (Favorites2.Locker)
                {
                    Favorites2.Clear();
                    reader.ReadCollection(Favorites2, r => (Result) new Result().DeSerialize(r));
                }
                lock (BlockedResults.Locker)
                {
                    BlockedResults.Clear();
                    reader.ReadCollection(BlockedResults, r => (Result) new Result().DeSerialize(r));
                }
            }
            return(this);
        }
        private void addResult(Result result)
        {
            bool founded = false;

            lock (Results.Locker)
            {
                int index = Results.IndexOf(result);
                if (index >= 0)
                {
                    founded         = true;
                    result.Selected = Results[index].Selected;
                    Results[index]  = result;
                }
            }
            lock (Favorites.Locker)
            {
                int index = Favorites.IndexOf(result);
                if (index >= 0)
                {
                    founded          = true;
                    result.Selected  = Favorites[index].Selected;
                    Favorites[index] = result;
                }
            }
            lock (Favorites2.Locker)
            {
                int index = Favorites2.IndexOf(result);
                if (index >= 0)
                {
                    founded           = true;
                    result.Selected   = Favorites2[index].Selected;
                    Favorites2[index] = result;
                }
            }
            lock (BlockedResults.Locker)
            {
                int index = BlockedResults.IndexOf(result);
                if (index >= 0)
                {
                    founded               = true;
                    result.Selected       = BlockedResults[index].Selected;
                    BlockedResults[index] = result;
                }
            }
            if (!founded)
            {
                Results.Add(result);
            }
        }