public static IEnumerable <ISymbol> DescendantNodes(this IVisitableSymbol symbol, Func <ISymbol, bool>?visitChildren = null, Func <ISymbol, bool>?includeSymbol = null)
        {
            var visitor = new CollectAllSymbolsVisitor(
                visitChildren ?? (_ => true),
                includeSymbol ?? (_ => true));

            symbol.Visit(visitor);
            return(visitor.Symbols);
        }
 protected override object DefaultVisit(IVisitableSymbol symbol)
 {
     if (_includeSymbol(symbol))
     {
         Symbols.Add(symbol);
     }
     if (_visitChildren(symbol))
     {
         return(symbol.Visit(this));
     }
     return(default);