[476847] org.eclipse.core.runtime.SubProgressMonitor has been deprecated

https://bugs.eclipse.org/bugs/show_bug.cgi?id=476847
diff --git a/plugins/org.eclipse.oomph.gitbash/src/org/eclipse/oomph/gitbash/repository/PushDirectAction.java b/plugins/org.eclipse.oomph.gitbash/src/org/eclipse/oomph/gitbash/repository/PushDirectAction.java
index 8a9d2c6..3bed34d 100644
--- a/plugins/org.eclipse.oomph.gitbash/src/org/eclipse/oomph/gitbash/repository/PushDirectAction.java
+++ b/plugins/org.eclipse.oomph.gitbash/src/org/eclipse/oomph/gitbash/repository/PushDirectAction.java
@@ -16,7 +16,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.egit.core.EclipseGitProgressTransformer;
 import org.eclipse.jgit.api.Git;
@@ -49,10 +49,10 @@
           Git git = Git.wrap(repository);
           monitor.worked(1);
 
-          git.push().setRemote("direct").setProgressMonitor(new EclipseGitProgressTransformer(new SubProgressMonitor(monitor, 50))).call();
+          git.push().setRemote("direct").setProgressMonitor(new EclipseGitProgressTransformer(SubMonitor.convert(monitor, 50))).call();
 
           monitor.setTaskName("Pulling");
-          git.pull().setProgressMonitor(new EclipseGitProgressTransformer(new SubProgressMonitor(monitor, 50))).call();
+          git.pull().setProgressMonitor(new EclipseGitProgressTransformer(SubMonitor.convert(monitor, 50))).call();
 
           return Status.OK_STATUS;
         }
diff --git a/plugins/org.eclipse.oomph.jreinfo/src/org/eclipse/oomph/jreinfo/JREManager.java b/plugins/org.eclipse.oomph.jreinfo/src/org/eclipse/oomph/jreinfo/JREManager.java
index d055bc8..ef7c6f8 100644
--- a/plugins/org.eclipse.oomph.jreinfo/src/org/eclipse/oomph/jreinfo/JREManager.java
+++ b/plugins/org.eclipse.oomph.jreinfo/src/org/eclipse/oomph/jreinfo/JREManager.java
@@ -20,7 +20,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 
 import java.io.File;
 import java.io.FileFilter;
@@ -107,7 +107,7 @@
 
       for (int i = 0; i < children; i++)
       {
-        addExtraJavaHomes(extraJavaHomes, childFolders[i], false, result, new SubProgressMonitor(monitor, 1));
+        addExtraJavaHomes(extraJavaHomes, childFolders[i], false, result, SubMonitor.convert(monitor, 1));
       }
     }
     catch (OperationCanceledException ex)
diff --git a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/AgentManagerImpl.java b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/AgentManagerImpl.java
index 36e63b6..d723d7d 100644
--- a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/AgentManagerImpl.java
+++ b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/AgentManagerImpl.java
@@ -19,7 +19,7 @@
 import org.eclipse.oomph.util.PropertiesUtil;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
 
 import org.osgi.framework.BundleContext;
@@ -238,7 +238,7 @@
       monitor.worked(1);
 
       Collection<Agent> agents = getAgents();
-      refreshAgents(agents, new SubProgressMonitor(monitor, 20));
+      refreshAgents(agents, SubMonitor.convert(monitor, 20));
     }
     finally
     {
@@ -257,8 +257,8 @@
         P2CorePlugin.checkCancelation(monitor);
         monitor.subTask("Refreshing " + agent.getLocation());
 
-        agent.refreshBundlePools(new SubProgressMonitor(monitor, 1));
-        agent.refreshProfiles(new SubProgressMonitor(monitor, 20));
+        agent.refreshBundlePools(SubMonitor.convert(monitor, 1));
+        agent.refreshProfiles(SubMonitor.convert(monitor, 20));
       }
     }
     finally
diff --git a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/ProfileTransactionImpl.java b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/ProfileTransactionImpl.java
index 6d0d658..9b39c28 100644
--- a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/ProfileTransactionImpl.java
+++ b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/ProfileTransactionImpl.java
@@ -44,7 +44,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.ProgressMonitorWrapper;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository;
 import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
 import org.eclipse.equinox.internal.p2.director.SimplePlanner;
@@ -322,10 +322,10 @@
 
       try
       {
-        Resolution resolution = resolve(commitContext, new SubProgressMonitor(monitor, 1));
+        Resolution resolution = resolve(commitContext, SubMonitor.convert(monitor, 1));
         if (resolution != null)
         {
-          return resolution.commit(new SubProgressMonitor(monitor, 1));
+          return resolution.commit(SubMonitor.convert(monitor, 1));
         }
 
         monitor.worked(1);
@@ -364,7 +364,7 @@
 
       final List<IMetadataRepository> metadataRepositories = new ArrayList<IMetadataRepository>();
       Set<URI> artifactURIs = new HashSet<URI>();
-      URI[] metadataURIs = collectRepositories(metadataRepositories, artifactURIs, cleanup, new SubProgressMonitor(monitor, 50));
+      URI[] metadataURIs = collectRepositories(metadataRepositories, artifactURIs, cleanup, SubMonitor.convert(monitor, 50));
 
       final ProfileImpl profileImpl = (ProfileImpl)profile;
       final IProfile delegate = profileImpl.getDelegate();
@@ -393,7 +393,7 @@
         }
       } : planner.createChangeRequest(delegate);
 
-      final IInstallableUnit rootIU = adjustProfileChangeRequest(profileChangeRequest, new SubProgressMonitor(monitor, 5));
+      final IInstallableUnit rootIU = adjustProfileChangeRequest(profileChangeRequest, SubMonitor.convert(monitor, 5));
 
       final ProvisioningContext provisioningContext = context.createProvisioningContext(this, profileChangeRequest);
       provisioningContext.setMetadataRepositories(metadataURIs);
@@ -407,9 +407,9 @@
         provisioningContext.setProperty("org.eclipse.equinox.p2.internal.profileius", Boolean.FALSE.toString());
       }
 
-      IQueryable<IInstallableUnit> metadata = provisioningContext.getMetadata(new SubProgressMonitor(monitor, 5));
+      IQueryable<IInstallableUnit> metadata = provisioningContext.getMetadata(SubMonitor.convert(monitor, 5));
 
-      final IProvisioningPlan provisioningPlan = planner.getProvisioningPlan(profileChangeRequest, provisioningContext, new SubProgressMonitor(monitor, 10));
+      final IProvisioningPlan provisioningPlan = planner.getProvisioningPlan(profileChangeRequest, provisioningContext, SubMonitor.convert(monitor, 10));
       P2CorePlugin.INSTANCE.coreException(provisioningPlan.getStatus());
 
       IQueryable<IInstallableUnit> futureState = provisioningPlan.getFutureState();
@@ -430,7 +430,7 @@
 
       if (includeSourceBundles)
       {
-        IInstallableUnit sourceContainerIU = generateSourceContainerIU(provisioningPlan, metadata, new SubProgressMonitor(monitor, 5));
+        IInstallableUnit sourceContainerIU = generateSourceContainerIU(provisioningPlan, metadata, SubMonitor.convert(monitor, 5));
         provisioningPlan.addInstallableUnit(sourceContainerIU);
         provisioningPlan.setInstallableUnitProfileProperty(sourceContainerIU, Profile.PROP_PROFILE_ROOT_IU, Boolean.TRUE.toString());
       }
@@ -1431,7 +1431,7 @@
 
         try
         {
-          IMetadataRepository metadataRepository = workPool.manager.loadRepository(getKey(), new SubProgressMonitor(monitor, 1));
+          IMetadataRepository metadataRepository = workPool.manager.loadRepository(getKey(), SubMonitor.convert(monitor, 1));
           workPool.metadataRepositories.add(metadataRepository);
           return Status.OK_STATUS;
         }
diff --git a/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/SetupTaskPerformer.java b/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/SetupTaskPerformer.java
index 90d193d..c7871c2 100644
--- a/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/SetupTaskPerformer.java
+++ b/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/SetupTaskPerformer.java
@@ -72,6 +72,7 @@
 import org.eclipse.oomph.util.PropertiesUtil;
 import org.eclipse.oomph.util.ReflectUtil;
 import org.eclipse.oomph.util.StringUtil;
+import org.eclipse.oomph.util.SubMonitor;
 import org.eclipse.oomph.util.UserCallback;
 
 import org.eclipse.emf.common.CommonPlugin;
@@ -122,7 +123,6 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.equinox.internal.p2.update.Configuration;
 import org.eclipse.equinox.internal.p2.update.Site;
@@ -1507,7 +1507,7 @@
           {
             SetupTask setupTask = it.next();
             checkCancelation();
-            progressMonitor = new SubProgressMonitor(monitor, 1);
+            progressMonitor = SubMonitor.convert(monitor, 1);
 
             try
             {
@@ -2737,11 +2737,11 @@
 
     try
     {
-      progressMonitor = new SubProgressMonitor(monitor, 1);
+      progressMonitor = SubMonitor.convert(monitor, 1);
       if (task.isNeeded(this))
       {
         progressMonitor.done();
-        progressMonitor = new SubProgressMonitor(monitor, 100);
+        progressMonitor = SubMonitor.convert(monitor, 100);
         task.perform(this);
       }
       else
@@ -2772,7 +2772,7 @@
         cacheUsageConfirmer.reset();
       }
 
-      performTriggeredSetupTasks(new SubProgressMonitor(monitor, 100));
+      performTriggeredSetupTasks(SubMonitor.convert(monitor, 100));
 
       if (bootstrap)
       {
@@ -2793,18 +2793,18 @@
     log("Performing post bootstrap tasks", false, Severity.INFO);
     File productConfigurationLocation = getProductConfigurationLocation();
 
-    performEclipseIniTask(false, "--launcher.appendVmargs", null, new SubProgressMonitor(monitor, 1));
+    performEclipseIniTask(false, "--launcher.appendVmargs", null, SubMonitor.convert(monitor, 1));
 
     if (vmPath != null)
     {
-      performEclipseIniTask(false, "-vm", vmPath, new SubProgressMonitor(monitor, 1));
+      performEclipseIniTask(false, "-vm", vmPath, SubMonitor.convert(monitor, 1));
     }
 
     performEclipseIniTask(true, "-D" + SetupProperties.PROP_UPDATE_URL, "=" + redirect(URI.createURI((String)get(SetupProperties.PROP_UPDATE_URL))),
-        new SubProgressMonitor(monitor, 1));
+        SubMonitor.convert(monitor, 1));
 
-    performIndexRediction(SetupContext.INDEX_SETUP_URI, "", new SubProgressMonitor(monitor, 1));
-    performIndexRediction(SetupContext.INDEX_SETUP_LOCATION_URI, ".location", new SubProgressMonitor(monitor, 1));
+    performIndexRediction(SetupContext.INDEX_SETUP_URI, "", SubMonitor.convert(monitor, 1));
+    performIndexRediction(SetupContext.INDEX_SETUP_LOCATION_URI, ".location", SubMonitor.convert(monitor, 1));
 
     if (REMOTE_DEBUG)
     {
@@ -2860,7 +2860,7 @@
       ResourceCopyTask resourceCopyTask = SetupFactory.eINSTANCE.createResourceCopyTask();
       resourceCopyTask.setSourceURL(sourceLocation.toString());
       resourceCopyTask.setTargetURL(targetURI.toString());
-      performTask(resourceCopyTask, new SubProgressMonitor(monitor, 1));
+      performTask(resourceCopyTask, SubMonitor.convert(monitor, 1));
     }
     else
     {
@@ -2874,11 +2874,11 @@
 
     try
     {
-      initNeededSetupTasks(new SubProgressMonitor(monitor, 1));
+      initNeededSetupTasks(SubMonitor.convert(monitor, 1));
 
       if (!neededSetupTasks.isEmpty())
       {
-        performNeededSetupTasks(new SubProgressMonitor(monitor, 100));
+        performNeededSetupTasks(SubMonitor.convert(monitor, 100));
       }
       else
       {
@@ -2949,7 +2949,7 @@
         task(neededTask);
 
         int work = Math.max(0, neededTask.getProgressMonitorWork());
-        progressMonitor = new SubProgressMonitor(monitor, work);
+        progressMonitor = SubMonitor.convert(monitor, work);
 
         try
         {
diff --git a/plugins/org.eclipse.oomph.setup.git/src/org/eclipse/oomph/setup/git/impl/GitCloneTaskImpl.java b/plugins/org.eclipse.oomph.setup.git/src/org/eclipse/oomph/setup/git/impl/GitCloneTaskImpl.java
index 86c9c6a..19719ca 100644
--- a/plugins/org.eclipse.oomph.setup.git/src/org/eclipse/oomph/setup/git/impl/GitCloneTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.git/src/org/eclipse/oomph/setup/git/impl/GitCloneTaskImpl.java
@@ -34,7 +34,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.egit.core.EclipseGitProgressTransformer;
 import org.eclipse.jgit.api.CheckoutCommand;
 import org.eclipse.jgit.api.CloneCommand;
@@ -678,7 +678,7 @@
         {
           if (cachedGit == null)
           {
-            cachedGit = cloneRepository(context, workDir, checkoutBranch, remoteName, remoteURI, isRecursive(), new SubProgressMonitor(monitor, 50));
+            cachedGit = cloneRepository(context, workDir, checkoutBranch, remoteName, remoteURI, isRecursive(), SubMonitor.convert(monitor, 50));
             cachedRepository = cachedGit.getRepository();
 
             if (!URI.createURI(remoteURI).isFile())
@@ -704,7 +704,7 @@
 
           if (isRecursive())
           {
-            addSubmodules(context, cachedGit, new SubProgressMonitor(monitor, 20));
+            addSubmodules(context, cachedGit, SubMonitor.convert(monitor, 20));
           }
         }
 
@@ -966,14 +966,14 @@
     command.call();
   }
 
-  private static void addSubmodules(SetupTaskContext context, Git git, SubProgressMonitor monitor) throws Exception
+  private static void addSubmodules(SetupTaskContext context, Git git, SubMonitor subMonitor) throws Exception
   {
     context.log("Adding submodules");
 
     git.submoduleInit().call();
 
     SubmoduleUpdateCommand updateCommand = git.submoduleUpdate();
-    updateCommand.setProgressMonitor(new EclipseGitProgressTransformer(monitor));
+    updateCommand.setProgressMonitor(new EclipseGitProgressTransformer(subMonitor));
     updateCommand.call();
   }
 
diff --git a/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java b/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
index 422f299..78b04bb 100644
--- a/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
@@ -36,7 +36,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.m2e.core.MavenPlugin;
 import org.eclipse.m2e.core.embedder.MavenModelManager;
 import org.eclipse.m2e.core.project.IProjectConfigurationManager;
@@ -323,7 +323,7 @@
       for (SourceLocator sourceLocator : sourceLocators)
       {
         LocalProjectScanner projectScanner = new LocalProjectScanner(null, Collections.singletonList(sourceLocator.getRootFolder()), false, modelManager);
-        processMavenProject(sourceLocator, projectInfos, projectScanner, new SubProgressMonitor(monitor, 1));
+        processMavenProject(sourceLocator, projectInfos, projectScanner, SubMonitor.convert(monitor, 1));
       }
 
       if (projectInfos.isEmpty())
@@ -341,7 +341,7 @@
           projectImportConfiguration.setProjectNameTemplate(projectNameTemplate);
         }
 
-        projectConfigurationManager.importProjects(projectInfos, projectImportConfiguration, new SubProgressMonitor(monitor, size));
+        projectConfigurationManager.importProjects(projectInfos, projectImportConfiguration, SubMonitor.convert(monitor, size));
       }
     }
     finally
@@ -357,10 +357,10 @@
 
     try
     {
-      projectScanner.run(new SubProgressMonitor(monitor, 1));
+      projectScanner.run(SubMonitor.convert(monitor, 1));
 
       List<MavenProjectInfo> projects = projectScanner.getProjects();
-      processMavenProject(sourceLocator, projectInfos, projects, new SubProgressMonitor(monitor, 1));
+      processMavenProject(sourceLocator, projectInfos, projects, SubMonitor.convert(monitor, 1));
     }
     finally
     {
@@ -376,7 +376,7 @@
     {
       for (MavenProjectInfo projectInfo : projects)
       {
-        processMavenProject(sourceLocator, projectInfos, projectInfo, new SubProgressMonitor(monitor, 1));
+        processMavenProject(sourceLocator, projectInfos, projectInfo, SubMonitor.convert(monitor, 1));
       }
     }
     finally
@@ -395,7 +395,7 @@
       String projectFolder = projectInfo.getPomFile().getParent();
       BackendContainer backendContainer = (BackendContainer)BackendResource.get(projectFolder);
 
-      IProject project = sourceLocator.loadProject(MavenProjectFactory.LIST, backendContainer, new SubProgressMonitor(monitor, 1));
+      IProject project = sourceLocator.loadProject(MavenProjectFactory.LIST, backendContainer, SubMonitor.convert(monitor, 1));
       if (project != null)
       {
         if (sourceLocator.matches(project))
@@ -409,7 +409,7 @@
       }
 
       Collection<MavenProjectInfo> projects = projectInfo.getProjects();
-      processMavenProject(sourceLocator, projectInfos, projects, new SubProgressMonitor(monitor, 5));
+      processMavenProject(sourceLocator, projectInfos, projects, SubMonitor.convert(monitor, 5));
     }
     finally
     {
@@ -426,7 +426,7 @@
     {
       for (MavenProjectInfo childProjectInfo : projects)
       {
-        processMavenProject(sourceLocator, projectInfos, childProjectInfo, new SubProgressMonitor(monitor, 1));
+        processMavenProject(sourceLocator, projectInfos, childProjectInfo, SubMonitor.convert(monitor, 1));
       }
     }
     finally
diff --git a/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsBuildTaskImpl.java b/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsBuildTaskImpl.java
index 891e969..f6abb9c 100644
--- a/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsBuildTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsBuildTaskImpl.java
@@ -35,7 +35,7 @@
 import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -500,7 +500,7 @@
         for (IProject project : projects)
         {
           context.log("Refreshing " + project.getName(), false);
-          project.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 1));
+          project.refreshLocal(IResource.DEPTH_INFINITE, SubMonitor.convert(monitor, 1));
         }
       }
 
@@ -509,7 +509,7 @@
       if (isClean())
       {
         buildsConfigs = getBuildConfigs(projects);
-        ROOT.getWorkspace().build(buildsConfigs, IncrementalProjectBuilder.CLEAN_BUILD, false, new SubProgressMonitor(monitor, size));
+        ROOT.getWorkspace().build(buildsConfigs, IncrementalProjectBuilder.CLEAN_BUILD, false, SubMonitor.convert(monitor, size));
       }
 
       if (isBuild())
@@ -519,7 +519,7 @@
           buildsConfigs = getBuildConfigs(projects);
         }
 
-        ROOT.getWorkspace().build(buildsConfigs, IncrementalProjectBuilder.FULL_BUILD, false, new SubProgressMonitor(monitor, size));
+        ROOT.getWorkspace().build(buildsConfigs, IncrementalProjectBuilder.FULL_BUILD, false, SubMonitor.convert(monitor, size));
       }
     }
     finally
diff --git a/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsImportTaskImpl.java b/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsImportTaskImpl.java
index 56e8b66..dbae1e2 100644
--- a/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsImportTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.projects/src/org/eclipse/oomph/setup/projects/impl/ProjectsImportTaskImpl.java
@@ -47,7 +47,6 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SubProgressMonitor;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -264,7 +263,7 @@
         try
         {
           ProjectHandler.Collector collector = new ProjectHandler.Collector();
-          sourceLocator.handleProjects(EclipseProjectFactory.LIST, collector, childStatus, new SubProgressMonitor(monitor, 1));
+          sourceLocator.handleProjects(EclipseProjectFactory.LIST, collector, childStatus, SubMonitor.convert(monitor, 1));
           if (childStatus.getSeverity() >= IStatus.ERROR)
           {
             status.add(childStatus);
@@ -292,7 +291,7 @@
         }
       }
 
-      importProjects(backendContainers, new SubProgressMonitor(monitor, size));
+      importProjects(backendContainers, SubMonitor.convert(monitor, size));
     }
     finally
     {
diff --git a/plugins/org.eclipse.oomph.setup.targlets/src/org/eclipse/oomph/setup/targlets/impl/TargletTaskImpl.java b/plugins/org.eclipse.oomph.setup.targlets/src/org/eclipse/oomph/setup/targlets/impl/TargletTaskImpl.java
index 4c59724..843422a 100644
--- a/plugins/org.eclipse.oomph.setup.targlets/src/org/eclipse/oomph/setup/targlets/impl/TargletTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.targlets/src/org/eclipse/oomph/setup/targlets/impl/TargletTaskImpl.java
@@ -48,7 +48,7 @@
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.equinox.p2.metadata.Version;
 import org.eclipse.pde.core.target.ITargetDefinition;
@@ -920,7 +920,7 @@
         {
           if (targetDefinition == null)
           {
-            targetDefinition = getTargetDefinition(service, new SubProgressMonitor(monitor, 1));
+            targetDefinition = getTargetDefinition(service, SubMonitor.convert(monitor, 1));
           }
 
           if (targetDefinition == null)
@@ -973,11 +973,11 @@
             TargletsCorePlugin.INSTANCE.setCacheUsageConfirmer(cacheUsageConfirmer);
 
             targletContainer.setTarglets(targlets);
-            targletContainer.forceUpdate(true, mirrors, new SubProgressMonitor(monitor, 90));
+            targletContainer.forceUpdate(true, mirrors, SubMonitor.convert(monitor, 90));
 
             try
             {
-              Job.getJobManager().join(WorkspaceIUImporter.WORKSPACE_IU_IMPORT_FAMILY, new SubProgressMonitor(monitor, 10));
+              Job.getJobManager().join(WorkspaceIUImporter.WORKSPACE_IU_IMPORT_FAMILY, SubMonitor.convert(monitor, 10));
             }
             catch (InterruptedException ex)
             {
diff --git a/plugins/org.eclipse.oomph.setup.ui/src/org/eclipse/oomph/setup/ui/SetupUIPlugin.java b/plugins/org.eclipse.oomph.setup.ui/src/org/eclipse/oomph/setup/ui/SetupUIPlugin.java
index 11dfc53..2a4ab9e 100644
--- a/plugins/org.eclipse.oomph.setup.ui/src/org/eclipse/oomph/setup/ui/SetupUIPlugin.java
+++ b/plugins/org.eclipse.oomph.setup.ui/src/org/eclipse/oomph/setup/ui/SetupUIPlugin.java
@@ -55,7 +55,7 @@
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -284,7 +284,7 @@
         perform(uris);
       }
     };
-    resourceMirror.begin(new SubProgressMonitor(monitor, work));
+    resourceMirror.begin(SubMonitor.convert(monitor, work));
   }
 
   private static Set<? extends EObject> checkCrossReferences(ResourceSet resourceSet, URI uri)
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainerListenerRegistry.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainerListenerRegistry.java
index b5ee83d..e4e237a 100644
--- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainerListenerRegistry.java
+++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainerListenerRegistry.java
@@ -21,7 +21,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IRegistryEventListener;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -84,7 +84,7 @@
     {
       try
       {
-        listener.handleTargletContainerEvent(event, new SubProgressMonitor(monitor, 1));
+        listener.handleTargletContainerEvent(event, SubMonitor.convert(monitor, 1));
       }
       catch (Exception ex)
       {
diff --git a/plugins/org.eclipse.oomph.util.pde/src/org/eclipse/oomph/util/pde/TargetPlatformUtil.java b/plugins/org.eclipse.oomph.util.pde/src/org/eclipse/oomph/util/pde/TargetPlatformUtil.java
index dc90e93..ab0edd8 100644
--- a/plugins/org.eclipse.oomph.util.pde/src/org/eclipse/oomph/util/pde/TargetPlatformUtil.java
+++ b/plugins/org.eclipse.oomph.util.pde/src/org/eclipse/oomph/util/pde/TargetPlatformUtil.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.jobs.IJobChangeEvent;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.core.runtime.jobs.JobChangeAdapter;
@@ -137,12 +137,12 @@
 
     try
     {
-      targetDefinition.resolve(new SubProgressMonitor(monitor, 50));
+      targetDefinition.resolve(SubMonitor.convert(monitor, 50));
 
       LoadTargetDefinitionJob job = new LoadTargetDefinitionJob(targetDefinition);
 
       @SuppressWarnings("restriction")
-      IStatus status = job.run(new SubProgressMonitor(monitor, 50));
+      IStatus status = job.run(SubMonitor.convert(monitor, 50));
       if (status.getSeverity() == IStatus.ERROR)
       {
         throw new CoreException(status);
diff --git a/plugins/org.eclipse.oomph.util/src/org/eclipse/oomph/util/SubMonitor.java b/plugins/org.eclipse.oomph.util/src/org/eclipse/oomph/util/SubMonitor.java
index dac9bab..8677200 100644
--- a/plugins/org.eclipse.oomph.util/src/org/eclipse/oomph/util/SubMonitor.java
+++ b/plugins/org.eclipse.oomph.util/src/org/eclipse/oomph/util/SubMonitor.java
@@ -21,11 +21,10 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.SubProgressMonitor;
 
 /**
  * A {@link IProgressMonitorWithBlocking progress monitor} that uses a given amount of work ticks from a parent monitor.
- * This is intended as a safer, easier-to-use alternative to {@link SubProgressMonitor}.
+ * This is intended as a safer, easier-to-use alternative to org.eclipse.core.runtime.SubProgressMonitor.
  * <p>
  * Progress monitoring is generally quite invasive to the code that is monitored.
  * At the same time progress monitoring itself is typically very hard to implement correctly.