private static ImmutableDictionary <string, ImmutableDictionary <DiagnosticAnalyzer, ProviderId> > CreateAnalyzerIdMap(
                            AnalyzerManager analyzerManager, string language)
                        {
                            var index = 0;
                            var map   = ImmutableDictionary.CreateBuilder <string, ImmutableDictionary <DiagnosticAnalyzer, ProviderId> >();

                            foreach (var kv in analyzerManager.GetHostDiagnosticAnalyzersPerReference(language))
                            {
                                var perAnalyzerMap = ImmutableDictionary.CreateBuilder <DiagnosticAnalyzer, ProviderId>();

                                var referenceIdentity    = kv.Key;
                                var perLanguageAnalyzers = kv.Value;

                                if (perLanguageAnalyzers.Length > 0)
                                {
                                    foreach (var analyzer in perLanguageAnalyzers)
                                    {
                                        var analyzerId = index++;
                                        perAnalyzerMap.Add(analyzer, analyzerId);
                                    }

                                    map.Add(referenceIdentity, perAnalyzerMap.ToImmutable());
                                }
                            }

                            return(map.ToImmutable());
                        }