public ISymbolAnalyzerSetupGroup <TSymbol> ThenUseAnalyzer <TAnalyzer>() where TAnalyzer : SymbolActionAnalyzer <TSymbol>
        {
            var nextItem = new SymbolAnalyzerGroupNode <TAnalyzer, TSymbol>(this);

            SetNextNode(nextItem);
            return(nextItem);
        }
        public ISymbolAnalyzerSetupGroup <TNewSymbol> ThenUseAnalyzer <TAnalyzer, TNewSymbol>(Func <TSymbol, IEnumerable <TNewSymbol> > syntaxFactory) where TAnalyzer : SymbolActionAnalyzer <TNewSymbol> where TNewSymbol : ISymbol
        {
            var nextItem = new SymbolAnalyzerGroupNode <TAnalyzer, TNewSymbol>(this, syntax => syntaxFactory((TSymbol)syntax).Cast <ISymbol>());

            SetNextNode(nextItem);
            return(nextItem);
        }
        public ISymbolAnalyzerSetupGroup <TSymbol> UseAnalyzer <TAnalyzer, TSymbol>(IEnumerable <SymbolKind> selectedSymbolKind)
            where TAnalyzer : SymbolActionAnalyzer <TSymbol>
            where TSymbol : ISymbol
        {
            var group = new AnalyzerGroup <ISymbol, SymbolAnalysisContextSource>();
            var first = new SymbolAnalyzerGroupNode <TAnalyzer, TSymbol>(group);

            _anaylzerGroups.Add((group, selectedSymbolKind.ToImmutableArray()));
            return(first);
        }