* Resolves the conflict by delegating to the conflict resolver who selects single version from given candidates. Executes provided action against the conflict resolution result object.
*/
public void resolveNextConflict(Action<ConflictResolutionResult> resolutionAction) {
assert hasConflicts();
ConflictContainer.Conflict conflict = conflicts.popConflict();
ModuleRevisionResolveState selected = compositeResolver.select(conflict.candidates);
ConflictResolutionResult result = new DefaultConflictResolutionResult(potentialConflict(conflict), selected);
resolutionAction.execute(result);
LOGGER.debug("Selected {} from conflicting modules {}.", selected, conflict.candidates);
}