protected virtual ulong CalculateLongHashCode() { ulong result = 0; if (!WhereSection.IsNullOrEmpty()) { foreach (var item in WhereSection) { result ^= LongHashCodeWeights.BaseModalityWeight ^ item.GetLongHashCode(); } } if (Holder != null) { result ^= LongHashCodeWeights.BaseModalityWeight ^ Holder.GetLongHashCode(); } if (!Annotations.IsNullOrEmpty()) { foreach (var item in Annotations) { result ^= LongHashCodeWeights.BaseModalityWeight ^ item.GetLongHashCode(); } } return(result); }