private bool IsTargetValueSetsEqual(SinglePropertyValueBasedCalendarItemStateDefinition <TValue> first, SinglePropertyValueBasedCalendarItemStateDefinition <TValue> second)
 {
     if (first.TargetValueSet.Count == second.TargetValueSet.Count)
     {
         foreach (TValue item in first.TargetValueSet)
         {
             if (!second.TargetValueSet.Contains(item))
             {
                 return(false);
             }
         }
         return(true);
     }
     return(false);
 }
 public bool Equals(SinglePropertyValueBasedCalendarItemStateDefinition <TValue> other)
 {
     return(other != null && (object.ReferenceEquals(this, other) || (this.TargetProperty.Equals(other.TargetProperty) && this.IsTargetValueSetsEqual(this, other))));
 }
 public SinglePropertyValueBasedCalendarItemStateDefinition(StorePropertyDefinition targetProperty, TValue targetValue, IEqualityComparer <TValue> equalityComparer) : this(targetProperty, SinglePropertyValueBasedCalendarItemStateDefinition <TValue> .GetValueSetFromSingleValue(targetValue, equalityComparer))
 {
 }