private void ExecuteSymbolActionsForAnalyzer( ISymbol symbol, DiagnosticAnalyzer analyzer, ImmutableArray <ImmutableArray <SymbolAnalyzerAction> > actionsByKind, Action <Diagnostic> addDiagnosticForSymbol, CancellationToken cancellationToken) { // Invoke symbol analyzers only for source symbols. var declaringSyntaxRefs = symbol.DeclaringSyntaxReferences; if ((int)symbol.Kind < actionsByKind.Length && declaringSyntaxRefs.Any(s => s.SyntaxTree != null)) { analyzerExecutor.ExecuteSymbolActions(actionsByKind[(int)symbol.Kind], symbol, addDiagnosticForSymbol); } }