Platform.getJobManager().endRule(rule);
    private IProject[] checkout(IProject[] projects, Map infoMap,            IProgressMonitor monitor) throws TeamException {        ISchedulingRule rule = projects[0].getWorkspace().getRuleFactory().modifyRule(projects[0]);		Platform.getJobManager().beginRule(rule, monitor);        monitor.beginTask("", 1000 * projects.length); //$NON-NLS-1$        List result = new ArrayList();        try {            for (int i = 0; i < projects.length; i++) {                if (monitor.isCanceled()) {                    break;                }                IProject project = projects[i];                LoadInfo info = (LoadInfo) infoMap.get(project);                if (info != null                        && info.checkout(new SubProgressMonitor(monitor, 1000))) {                    result.add(project);                }            }        } finally {            monitor.done();        }		Platform.getJobManager().endRule(rule);        return (IProject[]) result.toArray(new IProject[result.size()]);    }