public async Task <string> FindFileAsync(
            string filename, BuildId uuid, bool isDebugInfoFile, TextWriter searchLog)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException(Strings.FilenameNullOrEmpty, nameof(filename));
            }
            searchLog = searchLog ?? TextWriter.Null;

            await searchLog.WriteLineAsync($"Searching for {filename}");

            Trace.WriteLine($"Searching for {filename}");

            if (uuid == BuildId.Empty)
            {
                await searchLog.WriteLineAsync(ErrorStrings.ModuleBuildIdUnknown);

                Trace.WriteLine($"Warning: The build ID of {filename} is unknown.");
            }

            var fileReference =
                await _symbolStore.FindFileAsync(filename, uuid, isDebugInfoFile, searchLog);

            if (fileReference == null)
            {
                await searchLog.WriteLineAsync(ErrorStrings.FailedToFindFile(filename));

                Trace.WriteLine(ErrorStrings.FailedToFindFile(filename));
                return(null);
            }
            if (!fileReference.IsFilesystemLocation)
            {
                await searchLog.WriteLineAsync(
                    ErrorStrings.FileNotOnFilesystem(fileReference.Location));

                Trace.WriteLine($"Unable to load file. '{fileReference.Location}' must be " +
                                $"cached in a filesystem location.");
                return(null);
            }

            return(fileReference.Location);
        }