public IEnumerable <string> ETags()
 {
     return(sourceSnapshot.IfNotNull()
            .Then(s => s.ETags)
            .Else(() => new string[0])
            .Concat(eventHistory.Select(e => e.ETag).Distinct()));
 }
        internal ProbabilisticAnswer HasETag(string etag)
        {
            if (WasSourcedFromSnapshot)
            {
                if (sourceSnapshot.ETags.MayContain(etag))
                {
                    return(ProbabilisticAnswer.Maybe);
                }

                return(ProbabilisticAnswer.No);
            }

            return(eventHistory.Select(e => e.ETag)
                   .Any(e => e == etag)
                ? ProbabilisticAnswer.Yes
                : ProbabilisticAnswer.No);
        }