protected override DialogResult?ExecuteOperation( SearchContext context, string sourcePath, string destinationPath, bool isDirectory, string indent) { if (_ignoredPaths?.Contains(sourcePath) == true) { return(null); } string?renamePath = null; ExecuteOperation(); _destinationPaths?.Add(renamePath ?? destinationPath); return(null); void ExecuteOperation() { bool fileExists = File.Exists(destinationPath); bool directoryExists = !fileExists && Directory.Exists(destinationPath); bool?preferLeft = null; FileCompareOptions?diffProperty = null; if (isDirectory) { if (directoryExists) { Debug.Assert(!_isSecondToFirst); if (_isSecondToFirst) { return; } if (FileSystemHelpers.AttributeEquals(sourcePath, destinationPath, Options.NoCompareAttributes)) { return; } } } else if (fileExists) { if (_isSecondToFirst) { return; } if ((Options.CompareOptions & FileCompareOptions.ModifiedTime) != 0) { int diff = FileSystemHelpers.CompareLastWriteTimeUtc( sourcePath, destinationPath, Options.AllowedTimeDiff); if (diff > 0) { preferLeft = true; } else if (diff < 0) { preferLeft = false; } } } if (preferLeft == null) { if (!_isSecondToFirst && !isDirectory) { if (fileExists) { if (Options.CompareOptions != FileCompareOptions.None) { diffProperty = FileSystemHelpers.CompareFiles( sourcePath, destinationPath, Options.CompareOptions, Options.NoCompareAttributes, Options.AllowedTimeDiff); if (diffProperty == FileCompareOptions.None) { return; } } } else if (Options.DetectRename && (Options.CompareOptions & FileCompareOptions.Content) != 0) { if (_directoryData == null) { _directoryData = new DirectoryData(); _directoryData.Load(Path.GetDirectoryName(destinationPath) !); } else if (!FileSystemHelpers.IsParentDirectory(_directoryData.Path !, destinationPath)) { _directoryData.Load(Path.GetDirectoryName(destinationPath) !); } if (_directoryData.Files.Count > 0) { renamePath = _directoryData.FindRenamedFile(sourcePath); } } } if (ConflictResolution == SyncConflictResolution.Ask) { if (base.CanEndProgress) { EndProgress(context); } if (renamePath != null) { WritePathPrefix(sourcePath, "FIL", default, indent);