public static ValidateTarget <TSet> IsSupersetOf <TSet, TItem>([ValidatedNotNull] this ValidateTarget <TSet> target, IEnumerable <TItem> valueToCompare, Func <string> getErrorMessage = null) where TSet : ISet <TItem> { if (target.Value != null) { if (!target.Value.IsSupersetOf(valueToCompare)) { ExceptionFactory.ThrowException(target.Traits.GenericFailureExceptionType, getErrorMessage != null ? getErrorMessage.Invoke() : ErrorMessageFactory.ShouldBeSupersetOf(target)); } } return(target); }