Attempts to find and parse a side-by-side [AssemblyName].ExternalAnnotations.xml file that resides in the same folder as the assembly that contains the requested symbol.
        private AssemblyCacheEntry CreateAssemblyCacheEntry([NotNull] string path)
        {
            ExternalAnnotationsMap assemblyAnnotationsMap = AssemblyExternalAnnotationsLoader.ParseFile(path);
            FileSystemWatcher      fileWatcher            = CreateAssemblyAnnotationsFileWatcher(path);

            return(new AssemblyCacheEntry(assemblyAnnotationsMap, fileWatcher));
        }
        private bool HasAnnotationInSideBySideFile([NotNull] ISymbol symbol, bool appliesToItem,
                                                   [NotNull] Compilation compilation)
        {
            string path = AssemblyExternalAnnotationsLoader.GetPathForExternalSymbolOrNull(symbol, compilation);

            if (path != null)
            {
                AssemblyCacheEntry entry = assemblyCache.GetOrAdd(path, CreateAssemblyCacheEntry);
                return(entry.Map.Contains(symbol, appliesToItem));
            }

            return(false);
        }