public bool Run(bool preview)
        {
            Log.Information($"Task: {_taskCreator.Description}");
            UpdateFileOptions options = _file.Options;
            FileFinder        finder  = new FileFinder();
            FileUpdater       updater = new FileUpdater();

            _onUpdate();
            var files = finder
                        .FindWithMask(
                options.WorkingDirectory,
                options.Masks,
                options.Recursively)
                        .ToArray();

            bool atLeastOneUpdated = false;

            _onUpdate();
            updater.Run(
                files,
                folder =>
            {
                IFolderOrFileTask task = _taskCreator.Create();
                atLeastOneUpdated     |= task.Run(folder, options.WithPreview(preview));
                _onUpdate();
            });
            if (!atLeastOneUpdated)
            {
                Log.Information("\tTask completed. No changes.");
            }
            return(atLeastOneUpdated);
        }