private ICodeCleanupFilesProvider TryGetFilteredProvider([NotNull] ICodeCleanupFilesProvider originalProvider)
        {
            try
            {
                var solutionDir             = originalProvider.Solution.SolutionFilePath.Directory.FullPath;
                var gitModificationResolver = new GitModificationsResolver(solutionDir);

                if (!gitModificationResolver.IsValidRepository)
                {
                    MessageBox.ShowError($"[ReSharper Helpers] Unable to resolve solution directory as a git repository:{Environment.NewLine}{solutionDir}");
                    return(null);
                }

                var modifiedFiles = gitModificationResolver
                                    .GetModifiedFiles()
                                    .Select(f => FileSystemPath.Parse(f, FileSystemPathInternStrategy.TRY_GET_INTERNED_BUT_DO_NOT_INTERN))
                                    .ToSet();

                var filteredFiles = originalProvider.GetFiles()
                                    .Where(file =>
                {
                    var loc = file.GetLocation();
                    return(!loc.IsEmpty && modifiedFiles.Contains(loc));
                })
                                    .ToArray();

                return(new FilteredCodeCleanupProvider(originalProvider, filteredFiles));
            }
            catch (Exception ex)
            {
                MessageBox.ShowError($"[ReSharper Helpers] Unexpected error in code cleanup initialization:{Environment.NewLine}{ex}");
                return(null);
            }
        }
 public FilteredCodeCleanupProvider([NotNull] ICodeCleanupFilesProvider innerProvider, [NotNull] IList <IPsiSourceFile> filteredFiles)
 {
     this._innerProvider = innerProvider ?? throw new ArgumentNullException(nameof(innerProvider));
     this._filteredFiles = filteredFiles ?? throw new ArgumentNullException(nameof(filteredFiles));
 }