run(provider, (SyncInfoSet)projectSyncInfos.get(project), monitor);
run(provider, (SyncInfoSet)projectSyncInfos.get(project), Policy.subMonitorFor(monitor,100));
	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {		// First, ask the user if they want to include conflicts		SyncInfoSet syncSet = getSyncInfoSet();		if (!promptForConflictHandling(getShell(), syncSet)) return;		// Divide the sync info by project		final Map projectSyncInfos = getProjectSyncInfoSetMap(syncSet);		monitor.beginTask(null, projectSyncInfos.size() * 100);		for (Iterator iter = projectSyncInfos.keySet().iterator(); iter.hasNext(); ) {			final IProject project = (IProject) iter.next();			// Pass the scheduling rule to the synchronizer so that sync change events			// and cache commits to disk are batched			SVNTeamProvider provider = (SVNTeamProvider)RepositoryProvider.getProvider(project, SVNUIPlugin.PROVIDER_ID);			if (provider != null) {				run(provider, (SyncInfoSet)projectSyncInfos.get(project), monitor);			}		}		monitor.done();	}