public static IEnumerable<string> FindRenamedFile(string baseDirectory, string missingFilename) {
var currentPath = Path.GetDirectoryName(missingFilename);
if (currentPath == null) yield break;
if (currentPath == baseDirectory) {
foreach (var candidate in Directory.GetFiles(currentPath).Where(candidate => CouldBeRenamedFile(baseDirectory, missingFilename, candidate))) {
yield return candidate;
}
} else {
foreach (var candidate in GetFilesRecursive(baseDirectory).Where(candidate => candidate != missingFilename &&
CouldBeRenamedFile(baseDirectory, missingFilename, candidate))) {
yield return candidate;
}
}
}