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); }