def run_on_changes(modified, added, removed)
::Guard::UI.clearable
scoped_guards do |guard|
modified_paths = ::Guard::Watcher.match_files(guard, modified)
added_paths = ::Guard::Watcher.match_files(guard, added)
removed_paths = ::Guard::Watcher.match_files(guard, removed)
::Guard::UI.clear if clearable?(guard, modified_paths, added_paths, removed_paths)
run_first_task_found(guard, MODIFICATION_TASKS, modified_paths) unless modified_paths.empty?
run_first_task_found(guard, ADDITION_TASKS, added_paths) unless added_paths.empty?
run_first_task_found(guard, REMOVAL_TASKS, removed_paths) unless removed_paths.empty?
end
end