public virtual bool Equals(IProductAttributeValue <T> other) => other != null && AttributeName == other.AttributeName && (Value == null && other.Value == null || Value.Equals(other.Value));
public override bool Equals(IProductAttributeValue <IEnumerable <string> > other) => other == null || other.Value == null || !other.Value.Any() ? Value == null || !Value.Any() : Value == null || !Value.Any() || AttributeName != other.AttributeName ? false : new HashSet <string>(Value).SetEquals(other.Value);