List<GitCheckinExplicitMovementProvider> (@NotNull Project project) { List<GitCheckinExplicitMovementProvider> allProviders = GitCheckinExplicitMovementProvider.EP_NAME.getExtensionList(); List<GitCheckinExplicitMovementProvider> enabledProviders = filter(allProviders, it -> it.isEnabled(project)); if (enabledProviders.isEmpty()) return Collections.emptyList(); List<CommitChange> changes = collectChangesToCommit(ChangeListManager.getInstance(project).getAllChanges()); List<FilePath> beforePaths = mapNotNull(changes, it -> it.beforePath); List<FilePath> afterPaths = mapNotNull(changes, it -> it.afterPath); return filter(enabledProviders, it -> { Collection<Movement> movements = it.collectExplicitMovements(project, beforePaths, afterPaths); List<Movement> filteredMovements = filterExcludedChanges(movements, changes); return !filteredMovements.isEmpty(); }); }