public MergeResult Merge(IEnumerable<SubscriptionItem> previousItems, IEnumerable<FeedItem> currentItems)
        {
            var result = new MergeResult();
            var previousAuxList = new KeyedCollection<string, SubscriptionItem>(x => x.Id, previousItems);
            var currentAuxList = new KeyedCollection<string, FeedItem>(x => x.Id, currentItems);

            var previousIds = previousAuxList.Select(x => x.Id).ToArray();
            foreach (var id in previousIds)
            {
                if (!currentAuxList.Contains(id))
                    ChooseRemovedItem(id, previousAuxList, result);
                else
                    ChooseMergeItem(id, previousAuxList, currentAuxList, result);
            }

            var newIds = currentAuxList.Select(x => x.Id).ToArray();
            foreach (var id in newIds)
                ChooseNewItem(id, currentAuxList, result);

            return result;
        }