private static ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > > CreateOperationActionsByKind( AnalyzerActions analyzerActions) { var operationActions = analyzerActions.OperationActions; ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > > analyzerActionsByKind; if (!operationActions.IsEmpty) { var operationActionsByAnalyzers = operationActions.GroupBy(a => a.Analyzer); var builder = ImmutableDictionary.CreateBuilder <DiagnosticAnalyzer, ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > >(); foreach (var analyzerAndActions in operationActionsByAnalyzers) { ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > actionsByKind; if (analyzerAndActions.Any()) { actionsByKind = AnalyzerExecutor.GetOperationActionsByKind(analyzerAndActions); } else { actionsByKind = ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > .Empty; } builder.Add(analyzerAndActions.Key, actionsByKind); } analyzerActionsByKind = builder.ToImmutable(); } else { analyzerActionsByKind = ImmutableDictionary <DiagnosticAnalyzer, ImmutableDictionary <OperationKind, ImmutableArray <OperationAnalyzerAction> > > .Empty; } return(analyzerActionsByKind); }