PDEPlugin.getDefault().getLaunchesListener().manage(launch);
DebugUtil.getPDEPluginLaunchListener(PDEPlugin.getDefault()).manage(launch);
    public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)        throws CoreException    {        try        {            fConfigDir = null;            monitor.beginTask("", 5);            String workspace = configuration.getAttribute("location0", LauncherUtils.getDefaultPath().append("runtime-workbench-workspace").toOSString());            if(!LauncherUtils.clearWorkspace(configuration, workspace, new SubProgressMonitor(monitor, 1)))            {                monitor.setCanceled(true);                return;            }            if(configuration.getAttribute("clearConfig", false))                LauncherUtils.clearConfigArea(getConfigDir(configuration), new SubProgressMonitor(monitor, 1));            launch.setAttribute("configLocation", getConfigDir(configuration).toString());            IVMInstall launcher = LauncherUtils.createLauncher(configuration);            monitor.worked(1);            VMRunnerConfiguration runnerConfig = createVMRunner(configuration);            if(runnerConfig == null)            {                monitor.setCanceled(true);                return;            }            monitor.worked(1);            LauncherUtils.setDefaultSourceLocator(configuration, launch);            PDEPlugin.getDefault().getLaunchesListener().manage(launch);            launcher.getVMRunner(mode).run(runnerConfig, launch, monitor);            monitor.worked(1);        }        catch(CoreException e)        {            monitor.setCanceled(true);            throw e;        }    }