public static SearchResultMatch FindNext(ISearchStrategy strategy, SearchLocation location)
        {
            var files = location.GenerateFileList().ToArray();

            if (files.Length == 0)
            {
                return(null);
            }
            if (currentSearchRegion == null || !currentSearchRegion.IsSameState(files, strategy, location))
            {
                currentSearchRegion = SearchRegion.CreateSearchRegion(files, strategy, location);
            }
            if (currentSearchRegion == null)
            {
                return(null);
            }
            var result = currentSearchRegion.FindNext();

            if (result == null)
            {
                currentSearchRegion = null;
            }
            return(result);
        }