/// <summary>
        /// Filters rules based on resource type
        /// </summary>
        /// <param name="rules">The collection of input rules</param>
        /// <param name="resourceType">resource type</param>
        /// <returns>The subset of input rules that applies to the context</returns>
        private static IEnumerable<Rule> SelectRulesByConformanceType(this IEnumerable<Rule> rules, ConformanceServiceType resourceType, ConformanceLevelType[] levelTypes = null)
        {
            rules = from r in rules
                   where !r.ResourceType.HasValue || r.ResourceType.Value == resourceType
                   select r;

            if (null != levelTypes && levelTypes.Count() > 0)
            {
                rules = from r in rules
                       where !r.LevelType.HasValue || levelTypes.Contains(r.LevelType.Value)
                       select r;
            }

            return rules;
        }
        /// <summary>
        /// Filters rules based on resource type
        /// </summary>
        /// <param name="rules">The collection of input rules</param>
        /// <param name="resourceType">resource type</param>
        /// <returns>The subset of input rules that applies to the context</returns>
        private static IEnumerable <Rule> SelectRulesByConformanceType(this IEnumerable <Rule> rules, ConformanceServiceType resourceType, ConformanceLevelType[] levelTypes = null)
        {
            rules = from r in rules
                    where !r.ResourceType.HasValue || r.ResourceType.Value == resourceType
                    select r;

            if (null != levelTypes && levelTypes.Count() > 0)
            {
                rules = from r in rules
                        where !r.LevelType.HasValue || levelTypes.Contains(r.LevelType.Value)
                        select r;
            }

            return(rules);
        }