/// <summary>
        /// Checks if a preset includes a given item
        /// </summary>
        protected PredicateResult Includes(ConfigurationUserPredicateEntry entry, User user)
        {
            // domain match
            if (user.Domain == null || !user.Domain.Name.Equals(entry.Domain, StringComparison.OrdinalIgnoreCase)) return new PredicateResult(false);

            // pattern match
            if (!string.IsNullOrWhiteSpace(entry.Pattern) && !Regex.IsMatch(user.Name.Split('\\').Last(), entry.Pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled)) return new PredicateResult(false);

            // pattern is either null or white space, or it matches
            return new PredicateResult(true);
        }
        private static ConfigurationUserPredicateEntry CreateIncludeEntry(XmlNode node)
        {
            Assert.ArgumentNotNull(node, nameof(node));

            var result = new ConfigurationUserPredicateEntry(node?.Attributes?["domain"]?.Value)
            {
                Pattern = node?.Attributes?["pattern"]?.Value
            };


            return(result);
        }
        /// <summary>
        /// Checks if a preset includes a given item
        /// </summary>
        protected PredicateResult Includes(ConfigurationUserPredicateEntry entry, User user)
        {
            // domain match
            if (user.Domain == null || !user.Domain.Name.Equals(entry.Domain, StringComparison.OrdinalIgnoreCase))
            {
                return(new PredicateResult(false));
            }

            // pattern match
            if (!string.IsNullOrWhiteSpace(entry.Pattern) && !Regex.IsMatch(user.Name.Split('\\').Last(), entry.Pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
            {
                return(new PredicateResult(false));
            }

            // pattern is either null or white space, or it matches
            return(new PredicateResult(true));
        }
        private static ConfigurationUserPredicateEntry CreateIncludeEntry(XmlNode node)
        {
            Assert.ArgumentNotNull(node, nameof(node));

            var result = new ConfigurationUserPredicateEntry(node?.Attributes?["domain"]?.Value)
            {
                Pattern = node?.Attributes?["pattern"]?.Value
            };

            return result;
        }