private static ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > > CreateNodeActionsByKind( AnalyzerActions analyzerActions) { var nodeActions = analyzerActions.GetSyntaxNodeActions <TLanguageKindEnum>(); ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > > analyzerActionsByKind; if (!nodeActions.IsEmpty) { var nodeActionsByAnalyzers = nodeActions.GroupBy(a => a.Analyzer); var builder = ImmutableDictionary.CreateBuilder <DiagnosticAnalyzer, ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > >(); foreach (var analyzerAndActions in nodeActionsByAnalyzers) { ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > actionsByKind; if (analyzerAndActions.Any()) { actionsByKind = AnalyzerExecutor.GetNodeActionsByKind(analyzerAndActions); } else { actionsByKind = ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > .Empty; } builder.Add(analyzerAndActions.Key, actionsByKind); } analyzerActionsByKind = builder.ToImmutable(); } else { analyzerActionsByKind = ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <TLanguageKindEnum, ImmutableArray <SyntaxNodeAnalyzerAction <TLanguageKindEnum> > > > .Empty; } return(analyzerActionsByKind); }