public static IEnumerable<IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup)
 {
     var inGroupTokens = context.GetInGroupTokens(filterGroup);
     var groupDependencies = inGroupTokens
         .SelectMany(x => context.Store.Providers[x].Dependencies)
         .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies))
         .Concat(filterGroup.GroupDependencies)
         .Where(dependency => !inGroupTokens.Contains(dependency.Token))
         .DistinctDependencies()
         .ToList();
     return groupDependencies;
 }
        private static List <IToken> CollectInGroupTokens(this TreeContext context, IFilterGroup filterGroup)
        {
            var tokens = context.ProviderTokensInGroup
                         .SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IToken>())
                         .ToList();

            foreach (var @group in context.FiltersInGroup.SafeGet(filterGroup.FilterInfo.FilterToken, () => new List <IFilter>()).OfType <IFilterGroup>())
            {
                ((Action <IFilterGroup>)(grp => tokens.AddRange(context.GetInGroupTokens(grp))))(@group);
            }
            return(tokens);
        }
 private static void CreateGroupNodes(this TreeContext context)
 {
     foreach (var filterGroup in context.Filters
              .OfType <IFilterGroup>()
              .Where(grp => context.GetInGroupTokens(grp).Any())
              .ToList())
     {
         var node = context.CreateNodeForFilterGroup(filterGroup);
         context.Tree.Nodes.Add(node.Token, node);
         context.Filters.Add(CreateExistsFilter(node, filterGroup));
     }
 }
        public static IEnumerable <IDependency> GetGroupDependencies(TreeContext context, IFilterGroup filterGroup)
        {
            var inGroupTokens     = context.GetInGroupTokens(filterGroup);
            var groupDependencies = inGroupTokens
                                    .SelectMany(x => context.Store.Providers[x].Dependencies)
                                    .Concat(context.GetInGroupFilters(filterGroup).SelectMany(x => x.Dependencies))
                                    .Concat(filterGroup.GroupDependencies)
                                    .Where(dependency => !inGroupTokens.Contains(dependency.Token))
                                    .DistinctDependencies()
                                    .ToList();

            return(groupDependencies);
        }