private ImmutableDictionary <DiagnosticId, List <CodeFixProvider> > ComputeProjectFixers(Project project) { var extensionManager = project.Solution.Workspace.Services.GetService <IExtensionManager>(); ImmutableDictionary <DiagnosticId, List <CodeFixProvider> > .Builder builder = null; foreach (var reference in project.AnalyzerReferences) { var projectCodeFixerProvider = _analyzerReferenceToFixersMap.GetValue(reference, _createProjectCodeFixProvider); foreach (var fixer in projectCodeFixerProvider.GetFixers(project.Language)) { var fixableIds = this.GetFixableDiagnosticIds(fixer, extensionManager); foreach (var id in fixableIds) { if (string.IsNullOrWhiteSpace(id)) { continue; } builder = builder ?? ImmutableDictionary.CreateBuilder <DiagnosticId, List <CodeFixProvider> >(); var list = builder.GetOrAdd(id, s_createList); list.Add(fixer); } } } if (builder == null) { return(ImmutableDictionary <DiagnosticId, List <CodeFixProvider> > .Empty); } return(builder.ToImmutable()); }