public override void Merge(DatabaseTask task)
        {
            var t = (TouchReferenceDocumentIfChangedTask)task;

            foreach (var kvp in t.ReferencesToCheck)
            {
                Etag etag;
                if (ReferencesToCheck.TryGetValue(kvp.Key, out etag) == false)
                {
                    ReferencesToCheck[kvp.Key] = kvp.Value;
                }
                else
                {
                    ReferencesToCheck[kvp.Key] = etag.CompareTo(kvp.Value) < 0 ? etag : kvp.Value;
                }
            }
        }
        public void UpdateReferenceToCheck(KeyValuePair <string, Etag> doc)
        {
            Etag etag;

            if (ReferencesToCheck.TryGetValue(doc.Key, out etag) == false)
            {
                ReferencesToCheck[doc.Key] = doc.Value;
                return;
            }

            if (etag == doc.Value)
            {
                return;
            }

            ReferencesToCheck[doc.Key] = Etag.InvalidEtag; // different etags, force a touch
        }
 public IEnumerable <string> GetReferencesForDebug()
 {
     return(ReferencesToCheck.Select(x => x.Key + ":" + x.Value));
 }