private void basicRun(final IProgressMonitor pm) throws SVNException {
private void basicRun(final IProject project, ISVNRemoteFolder resource, final IProgressMonitor pm) throws SVNException {
	private void basicRun(final IProgressMonitor pm) throws SVNException {		if (pm != null)		{			pm.beginTask(null, 1000 * resources.length);		}		// Get the location of the workspace root		ISVNLocalFolder root = SVNWorkspaceRoot.getSVNFolderFor(ResourcesPlugin				.getWorkspace().getRoot());		try {			// Prepare the target projects to receive resources			scrubProjects(projects, (pm != null) ? Policy					.subMonitorFor(pm, 100) : null);			for (int i = 0; i < resources.length; i++) {				IProject project = null;				RemoteFolder resource = (RemoteFolder) resources[i];				project = projects[i];				boolean deleteDotProject = false;				// Perform the checkout				ISVNClientAdapter svnClient = resource.getRepository()						.getSVNClient();				// check if the remote project has a .project file				ISVNDirEntry[] rootFiles = svnClient.getList(resource.getUrl(),						SVNRevision.HEAD, false);				for (int j = 0; j < rootFiles.length; j++) {					if ((rootFiles[j].getNodeKind() == SVNNodeKind.FILE)							&& (".project".equals(rootFiles[j].getPath()))) {						deleteDotProject = true;					}				}				File destPath;				if (project.getLocation() == null) {					// project.getLocation is null if the project does					// not exist in the workspace					destPath = new File(root.getIResource().getLocation()							.toFile(), project.getName());					try {						// we create the directory corresponding to the						// project and we open it						project.create(null);						project.open(null);					} catch (CoreException e1) {						throw new SVNException(								"Cannot create project to checkout to", e1);					}				} else {					destPath = project.getLocation().toFile();				}				//delete the project file if the flag gets set.				//fix for 54				if (deleteDotProject) {					IFile projectFile = project.getFile(".project");					if (projectFile != null) {						try {							// delete the project file, force, no history,							// without progress monitor							projectFile.delete(true, false, null);						} catch (CoreException e1) {							throw new SVNException(									"Cannot delete .project before checkout",									e1);						}					}				}				checkoutProject(pm, resource, svnClient, destPath);				// Bring the project into the workspace				refreshProjects(new IProject[] { project },						(pm != null) ? Policy.subMonitorFor(pm, 100) : null);			} //for		} catch (SVNClientException ce) {			throw new SVNException("Error Getting Dir list", ce);		} finally {			if (pm != null) {				pm.done();			}		}	}